16.14.8. Examples
Example for loading data space instance data Triples into a Named Graph for schema/ontology data
The following example shows how to load data space instance data Triples into a Named Graph: <http://example.com/test>, for schema/ontology data called: <http://example.com/schema/test> that expresses assertions about subclasses and subproperties.
ttlp (' <http://example.com/dataspace> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://rdfs.org/sioc/ns#Space>. <http://example.com/dataspace/test2/weblog/test2tWeblog> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://rdfs.org/sioc/types#Weblog> . <http://example.com/dataspace/discussion/oWiki-test1Wiki> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://rdfs.org/sioc/types#MessageBoard>. <http://example.com/dataspace> <http://rdfs.org/sioc/ns#link> <http://example.com/ods> . <http://example.com/dataspace/test2/weblog/test2tWeblog> <http://rdfs.org/sioc/ns#link> <http://example.com/dataspace/test2/weblog/test2tWeblog>. <http://example.com/dataspace/discussion/oWiki-test1Wiki> <http://rdfs.org/sioc/ns#link> <http://example.com/dataspace/discussion/oWiki-test1Wiki> . ', '', 'http://example.com/test');
ttlp (' @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . <http://rdfs.org/sioc/ns#Space> rdfs:subClassOf <http://www.w3.org/2000/01/rdf-schema#Resource> . <http://rdfs.org/sioc/ns#Container> rdfs:subClassOf <http://rdfs.org/sioc/ns#Space> . <http://rdfs.org/sioc/ns#Forum> rdfs:subClassOf <http://rdfs.org/sioc/ns#Container> . <http://rdfs.org/sioc/types#Weblog> rdfs:subClassOf <http://rdfs.org/sioc/ns#Forum> . <http://rdfs.org/sioc/types#MessageBoard> rdfs:subClassOf <http://rdfs.org/sioc/ns#Forum> . <http://rdfs.org/sioc/ns#link> rdfs:subPropertyOf <http://rdfs.org/sioc/ns> . ', '', 'http://example.com/schema/test');
rdfs_rule_set ('http://example.com/schema/property_rules1', 'http://example.com/schema/test');
This defines the rule context http://example.com/schema/property_rules1 that is initialized from the contents of graph http://example.com/schema/test.
SQL>SPARQL define input:inference "http://example.com/schema/property_rules1" SELECT ?s FROM <http://example.com/test> WHERE {?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://rdfs.org/sioc/ns#Space> }; s VARCHAR _______________________________________________________________________________ http://example.com/dataspace/test2/weblog/test2tWeblog http://example.com/dataspace/discussion/oWiki-test1Wiki http://example.com/dataspace 3 Rows. -- 0 msec.
This returns the instances of http://rdfs.org/sioc/ns#Space. Since http://rdfs.org/sioc/types#Weblog and http://rdfs.org/sioc/types#MessageBoard are subclasses of http://rdfs.org/sioc/ns#Space, instances of http://rdfs.org/sioc/ns#Space, http://rdfs.org/sioc/types#Weblog and http://rdfs.org/sioc/types#MessageBoard are all returned. This results in the subjects http://example.com/dataspace, http://example.com/dataspace/test2/weblog/test2tWeblog and http://example.com/dataspace/discussion/oWiki-test1Wiki.
SQL>SELECT id_to_iri (s) FROM rdf_quad table option (with 'http://example.com/schema/property_rules1') WHERE g = iri_to_id ('http://example.com/test',0) AND p = iri_to_id ('http://www.w3.org/1999/02/22-rdf-syntax-ns#type', 0) AND o = iri_to_id ('http://rdfs.org/sioc/ns#Space', 0); callret VARCHAR _______________________________________________________________________________ http://example.com/dataspace/test2/weblog/test2tWeblog http://example.com/dataspace/discussion/oWiki-test1Wiki http://example.com/dataspace 3 Rows. -- 10 msec.
This is the corresponding SQL query, internally generated by the SPARQL query.
Below we first look for all instances of http://rdfs.org/sioc/ns#Space with some property set to http://example.com/dataspace/test2/weblog/test2tWeblog. We get the subject http://example.com/dataspace/test2/weblog/test2tWeblog and the properties http://rdfs.org/sioc/ns#link and http://rdfs.org/sioc/ns. The join involves both subclass and subproperty inference. Then we turn off the inference for the second pattern and only get the property http://rdfs.org/sioc/ns#link. Then we do the same but now specify that inference should apply only to the first triple pattern.
SQL>SPARQL define input:inference "http://example.com/schema/property_rules1" SELECT * FROM <http://example.com/test> WHERE { ?s ?p <http://rdfs.org/sioc/ns#Space> . ?s ?p1 <http://example.com/dataspace/test2/weblog/test2tWeblog> . }; s p p1 VARCHAR VARCHAR VARCHAR _______________________________________________________________________________ http://example.com/dataspace/test2/weblog/test2tWeblog http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://rdfs.org/sioc/ns#link http://example.com/dataspace/test2/weblog/test2tWeblog http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://rdfs.org/sioc/ns 2 Rows. -- 0 msec. SQL>SPARQL SELECT * FROM <http://example.com/test> WHERE { ?s ?p <http://rdfs.org/sioc/ns#Space> OPTION (inference 'http://example.com/schema/property_rules1') . ?s ?p1 <http://example.com/dataspace/test2/weblog/test2tWeblog> . }; s p p1 VARCHAR VARCHAR VARCHAR _______________________________________________________________________________ http://example.com/dataspace/test2/weblog/test2tWeblog http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://rdfs.org/sioc/ns#link 1 Rows. -- 10 msec.
DBpedia example
ttlp (' prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . <http://dbpedia.org/property/birthcity> rdfs:subPropertyOf <http://dbpedia.org/property/birthPlace> . <http://dbpedia.org/property/birthcountry> rdfs:subPropertyOf <http://dbpedia.org/property/birthPlace> . <http://dbpedia.org/property/cityofbirth> rdfs:subPropertyOf <http://dbpedia.org/property/birthPlace> . <http://dbpedia.org/property/countryofbirth> rdfs:subPropertyOf <http://dbpedia.org/property/birthPlace> . <http://dbpedia.org/property/countyofbirth> rdfs:subPropertyOf <http://dbpedia.org/property/birthPlace> . <http://dbpedia.org/property/cityofdeath> rdfs:subPropertyOf <http://dbpedia.org/property/deathPlace> . <http://dbpedia.org/property/countryofdeath> rdfs:subPropertyOf <http://dbpedia.org/property/deathPlace> . ', '', 'http://dbpedia.org/inference/rules#') ; rdfs_rule_set ('http://dbpedia.org/schema/property_rules1', 'http://dbpedia.org/inference/rules#');
SQL>SPARQL define input:inference "http://dbpedia.org/schema/property_rules1" prefix p: <http://dbpedia.org/property/> SELECT ?s FROM <http://dbpedia.org> WHERE {?s p:birthcity ?o } LIMIT 50 s VARCHAR _______________________________________________________________________________ http://dbpedia.org/resource/Britt_Janyk http://dbpedia.org/resource/Chiara_Costazza http://dbpedia.org/resource/Christoph_Gruber http://dbpedia.org/resource/Daron_Rahlves http://dbpedia.org/resource/Finlay_Mickel http://dbpedia.org/resource/Genevi%C3%A8ve_Simard http://dbpedia.org/resource/Johann_Grugger http://dbpedia.org/resource/Kalle_Palander http://dbpedia.org/resource/Marc_Gini http://dbpedia.org/resource/Mario_Scheiber http://dbpedia.org/resource/Prince_Hubertus_of_Hohenlohe-Langenburg http://dbpedia.org/resource/Resi_Stiegler http://dbpedia.org/resource/Steven_Nyman http://dbpedia.org/resource/Hannes_Reichelt http://dbpedia.org/resource/Jeremy_Transue 15 Rows. -- 167 msec. SQL>SPARQL define input:inference "http://dbpedia.org/schema/property_rules1" prefix p: <http://dbpedia.org/property/> SELECT ?s FROM <http://dbpedia.org> WHERE {?s p:countryofbirth ?o } LIMIT 50 s VARCHAR _______________________________________________________________________________ http://dbpedia.org/resource/A._J._Wood http://dbpedia.org/resource/A._J._Godbolt http://dbpedia.org/resource/Ac%C3%A1cio_Casimiro http://dbpedia.org/resource/Adam_Fry http://dbpedia.org/resource/Adam_Gilchrist http://dbpedia.org/resource/Adam_Griffin http://dbpedia.org/resource/Adam_Gross ... 50 Rows. -- 324 msec. SQL>SPARQL define input:inference "http://dbpedia.org/schema/property_rules1" prefix p: <http://dbpedia.org/property/> SELECT ?s FROM <http://dbpedia.org> WHERE {?s p:countyofbirth ?o } LIMIT 50 s VARCHAR _______________________________________________________________________________ http://dbpedia.org/resource/Eddie_Colman 1 Rows. -- 163 msec. SQL>SPARQL define input:inference "http://dbpedia.org/schema/property_rules1" prefix p: <http://dbpedia.org/property/> SELECT ?s FROM <http://dbpedia.org> WHERE {?s p:birthPlace ?o } s VARCHAR _______________________________________________________________________________ http://dbpedia.org/resource/Eddie_Colman http://dbpedia.org/resource/Jeremy_Transue http://dbpedia.org/resource/Finlay_Mickel http://dbpedia.org/resource/Prince_Hubertus_of_Hohenlohe-Langenburg http://dbpedia.org/resource/Hannes_Reichelt http://dbpedia.org/resource/Johann_Grugger http://dbpedia.org/resource/Chiara_Costazza ... 155287 Rows. -- 342179 msec.
Example for loading script of the Yago Class hierarchy as inference rules
--- Load Class Hierarchy into a Named Graph SELECT ttlp_mt (file_to_string_output ('yago-class-hierarchy_en.nt'), '', 'http://dbpedia.org/resource/classes/yago#'); -- Create an Inference Rule that references the Yago Class Hierarchy Named Graph SQL>rdfs_rule_set ('http://dbpedia.org/resource/inference/rules/yago#', 'http://dbpedia.org/resource/classes/yago#'); -- Query for the "The Lord of the Rings" which is a "Fantasy Novel" as explicitly -- claimed in the DBpedia data set (instance data) SQL>SPARQL PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia: <http://dbpedia.org/property/> PREFIX yago: <http://dbpedia.org/class/yago/> SELECT ?s FROM <http://dbpedia.org> WHERE { ?s a <http://dbpedia.org/class/yago/FantasyNovels> . ?s dbpedia:name "The Lord of the Rings"@en . }; s VARCHAR _______________________________________________________________________________ http://dbpedia.org/resource/The_Lord_of_the_Rings 1 Rows. -- 241 msec. -- Query aimed at Novel via query scoped to the "Fiction" class of -- which it is a subclass in the Yago Hierarchy SQL>SPARQL define input:inference "http://dbpedia.org/resource/inference/rules/yago#" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia: <http://dbpedia.org/property/> PREFIX yago: <http://dbpedia.org/class/yago/> SELECT ?s FROM <http://dbpedia.org> WHERE { ?s a <http://dbpedia.org/class/yago/Fiction106367107> . ?s dbpedia:name "The Lord of the Rings"@en . }; s VARCHAR _______________________________________________________________________________ http://dbpedia.org/resource/The_Lord_of_the_Rings http://dbpedia.org/resource/The_Lord_of_the_Rings http://dbpedia.org/resource/The_Lord_of_the_Rings http://dbpedia.org/resource/The_Lord_of_the_Rings 4 Rows. -- 4767 msec. -- # Variant of query with Virtuoso's Full Text Index extension: bif:contains SQL>SPARQL define input:inference "http://dbpedia.org/resource/inference/rules/yago#" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia: <http://dbpedia.org/property/> PREFIX yago: <http://dbpedia.org/class/yago/> SELECT ?s ?n FROM <http://dbpedia.org> WHERE { ?s a <http://dbpedia.org/class/yago/Fiction106367107> . ?s dbpedia:name ?n . ?n bif:contains 'Lord and Rings' }; s n VARCHAR VARCHAR _______________________________________________________________________________ http://dbpedia.org/resource/The_Lord_of_the_Rings The Lord of the Rings http://dbpedia.org/resource/The_Lord_of_the_Rings The Lord of the Rings http://dbpedia.org/resource/The_Lord_of_the_Rings The Lord of the Rings http://dbpedia.org/resource/The_Lord_of_the_Rings The Lord of the Rings 4 Rows. -- 5538 msec. -- Retrieve all individuals instances of the FantasyNovels Class SQL>SPARQL PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia: <http://dbpedia.org/property/> PREFIX yago: <http://dbpedia.org/class/yago/> SELECT ?s ?n FROM <http://dbpedia.org> WHERE { ?s a <http://dbpedia.org/class/yago/FantasyNovels> . ?s dbpedia:name ?n . } limit 10; s n VARCHAR VARCHAR _______________________________________________________________________________ http://dbpedia.org/resource/ATLA_-_A_Story_of_the_Lost_Island Atla http://dbpedia.org/resource/A_Crown_of_Swords A Crown of Swords http://dbpedia.org/resource/A_Game_of_Thrones A Game of Thrones http://dbpedia.org/resource/A_Secret_Atlas A Secret Atlas http://dbpedia.org/resource/A_Storm_of_Swords A Storm of Swords http://dbpedia.org/resource/A_Voyage_to_Arcturus A Voyage to Arcturus http://dbpedia.org/resource/A_Wizard_Alone A Wizard Alone http://dbpedia.org/resource/Above_the_Veil Above the Veil http://dbpedia.org/resource/Black_Easter Black Easter http://dbpedia.org/resource/Lord_of_Chaos Lord of Chaos 10 Rows. -- 781 msec. -- Retrieve all individuals instances of Fiction Class which should -- include all Novels. SQL>SPARQL define input:inference "http://dbpedia.org/resource/inference/rules/yago#" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia: <http://dbpedia.org/property/> PREFIX yago: <http://dbpedia.org/class/yago/> SELECT ?s ?n FROM <http://dbpedia.org> WHERE { ?s a <http://dbpedia.org/class/yago/Fiction106367107> . ?s dbpedia:name ?n . }; s n VARCHAR VARCHAR _______________________________________________________________________________ http://dbpedia.org/resource/Last_Son_of_Krypton Last Son of Krypton http://dbpedia.org/resource/Tuvaluan_language Tuvaluan http://dbpedia.org/resource/Card_Walker E. Cardon Walker http://dbpedia.org/resource/Les_Clark Les Clark http://dbpedia.org/resource/Marc_Davis Marc Davis http://dbpedia.org/resource/Eric_Larson Eric Larson http://dbpedia.org/resource/Marty_Sklar Marty Sklar http://dbpedia.org/resource/Peter_Ellenshaw Peter Ellenshaw http://dbpedia.org/resource/Adriana_Caselotti Adriana Caselotti http://dbpedia.org/resource/Jimmie_Dodd Jimmie Dodd ... 15296 Rows.
Pure SPARQL Example
-- Query aimed at Fantasy Novel via query scoped to the "Fiction" class of -- which it is a subclass in the Yago Hierarchy SQL>SPARQL define input:inference "http://dbpedia.org/resource/inference/rules/yago#" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpedia: <http://dbpedia.org/property/> PREFIX yago: <http://dbpedia.org/class/yago/> SELECT ?s FROM <http://dbpedia.org> WHERE { ?s a <http://dbpedia.org/class/yago/Fiction106367107> . ?s dbpedia:name "The Lord of the Rings"@en . }; s VARCHAR _______________________________________________________________________________ http://dbpedia.org/resource/The_Lord_of_the_Rings http://dbpedia.org/resource/The_Lord_of_the_Rings http://dbpedia.org/resource/The_Lord_of_the_Rings http://dbpedia.org/resource/The_Lord_of_the_Rings 4 Rows. -- 150 msec.
Example for equivalence between classes
This example is based on UMBEL and DBpedia integration:
-- Load UMBEL & DBpedia Instance Level Cross-Links (owl:sameAs) Triples SELECT ttlp_mt (file_to_string_output ('umbel_dbpedia_linkage_v071.n3'), '', 'http://dbpedia.org'); -- Load UMBEL and DBpedia Type (rdf:type) association Triples SELECT ttlp_mt (file_to_string_output ('umbel_dbpedia_types_v071.n3'), '', 'http://dbpedia.org'); --- Load UMBEL Subject Concept Class Hierarchy into a Named Graph SELECT ttlp_mt (file_to_string_output ('umbel_class_hierarchy_v071.n3'), '', 'http://dbpedia.org/resource/classes/umbel#'); --- load UMBEL Subject Concepts Instance Data SELECT ttlp_mt (file_to_string_output ('umbel_subject_concepts.n3'), '', 'http://dbpedia.org/resource/classes/umbel#'); --- Load UMBEL Abstract Concepts Instance Data SELECT ttlp_mt (file_to_string_output ('umbel_abstract_concepts.n3'), '', 'http://dbpedia.org/resource/classes/umbel#'); -- Load UMBEL External Ontology Mapping into a Named Graph SELECT ttlp_mt (file_to_string_output ('umbel_external_ontologies_linkage.n3'), '', 'http://dbpedia.org/resource/classes/umbel#'); -- Create UMBEL Inference Rules rdfs_rule_set ('http://dbpedia.org/resource/inference/rules/umbel#', 'http://dbpedia.org/resource/classes/umbel#');
Now let's execute the following queries:
SQL>SPARQL define input:inference "http://dbpedia.org/resource/inference/rules/umbel#" prefix umbel: <http://umbel.org/umbel/sc/> PREFIX dbpedia: <http://dbpedia.org/property/> prefix opencyc: <http://sw.opencyc.org/2008/06/10/concept/en/> SELECT ?s where { ?s a opencyc:Motorcycle. ?s dbpedia:name ?n. ?n bif:contains "BMW". }; s ____________________________________________ http://dbpedia.org/resource/BMW_K1200GT http://dbpedia.org/resource/BMW_F650CS http://dbpedia.org/resource/BMW_C1 http://dbpedia.org/resource/BMW_R75 4 Rows. -- 26 msec.
SQL>SPARQL define input:inference "http://dbpedia.org/resource/inference/rules/umbel#" prefix umbel: <http://umbel.org/umbel/sc/> PREFIX dbpedia: <http://dbpedia.org/property/> prefix opencyc: <http://sw.opencyc.org/2008/06/10/concept/en/> SELECT ?s where { ?s a umbel:Motorcycle. ?s dbpedia:name ?n. ?n bif:contains "BMW". }; s ____________________________________________ http://dbpedia.org/resource/BMW_K1200GT http://dbpedia.org/resource/BMW_F650CS http://dbpedia.org/resource/BMW_C1 http://dbpedia.org/resource/BMW_R75 4 Rows. -- 26 msec.
Example for finding celebrities which are not fans of their own fans
SQL>SPARQL PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX sioc: <http://rdfs.org/sioc/ns#> INSERT INTO GRAPH <urn:rules.skos> { foaf:knows rdfs:subPropertyOf sioc:follows . }; callret-0 VARCHAR Insert into <urn:rules.skos>, 1 triples -- done No. of rows in result: 1 SQL>rdfs_rule_set ('foaf-trans', 'urn:rules.skos'); Done. SPARQL>SPARQL DEFINE input:inference "foaf-trans" PREFIX sioc: <http://rdfs.org/sioc/ns#> SELECT ?celeb COUNT (*) WHERE { ?claimant sioc:follows ?celeb . FILTER ( !bif:exists ( ( SELECT (1) WHERE { ?celeb sioc:follows ?claimant } ) ) ) } GROUP BY ?celeb ORDER BY DESC 2 LIMIT 10 celeb callret-1 ANY ANY __________________________________________________________________________________________ http://localhost.localdomain/about/id/entity/http/twitter.com/kidehen 100 http://localhost.localdomain/about/id/entity/http/twitter.com/shawnafennell 77 http://localhost.localdomain/about/id/entity/http/twitter.com/thines01 71 http://localhost.localdomain/about/id/entity/http/twitter.com/mhausenblas 50 http://localhost.localdomain/about/id/entity/http/twitter.com/DirDigEng 2 http://localhost.localdomain/about/id/entity/http/twitter.com/SarahPalinUSA 1 http://localhost.localdomain/about/id/entity/http/twitter.com/zbrox 1 http://localhost.localdomain/about/id/entity/http/twitter.com/LamarLee 1 http://localhost.localdomain/about/id/entity/http/twitter.com/HackerChick 1 http://localhost.localdomain/about/id/entity/http/twitter.com/programmingfeed 1 No. of rows in result: 10