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