- From: Olivier Rossel <datao@datao.net>
- Date: Wed, 16 Feb 2011 10:52:48 +0100
- To: Semantic Web <semantic-web@w3.org>
On Wed, Feb 16, 2011 at 10:49 AM, Olivier Rossel <datao@datao.net> wrote: > 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") > } > (Oops, I sent the mail a bit too fast :) So: Which syntax is considered to be optimal? Are there some best practices when using UNIONs? Any help is welcome. Olivier Rossel -- Datao.net
Received on Wednesday, 16 February 2011 09:53:20 UTC