- 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