- From: Olivier Rossel <datao@datao.net>
- Date: Wed, 16 Feb 2011 10:49:05 +0100
- To: Semantic Web <semantic-web@w3.org>
In DBPedia, I want to get a list of presidents born in 1945. A president is either a "onto:President" or a "yago:President". So a UNION is needed to manage both. One way to write the corresponding SPARQL query is : PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX onto: <http://dbpedia.org/ontology/> PREFIX yago: <http://dbpedia.org/class/yago/> SELECT DISTINCT ?uri ?string WHERE { { ?uri rdf:type onto:President . ?uri onto:birthDate ?date . FILTER regex(?date, "^1945") . OPTIONAL {?uri rdfs:label ?string .} FILTER (lang(?string) = "en") } UNION { ?uri rdf:type yago:President. ?uri onto:birthDate ?date . FILTER regex(?date, "^1945") . OPTIONAL {?uri rdfs:label ?string .} FILTER (lang(?string) = "en") } } Another way is : PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX onto: <http://dbpedia.org/ontology/> PREFIX yago: <http://dbpedia.org/class/yago/> SELECT DISTINCT ?uri ?string WHERE { {{ ?uri rdf:type onto:President . } UNION { ?uri rdf:type yago:President. }}. ?uri onto:birthDate ?date . FILTER regex(?date, "^1945") . OPTIONAL {?uri rdfs:label ?string .} FILTER (lang(?string) = "en") }
Received on Wednesday, 16 February 2011 09:49:39 UTC