- From: Alexandre Passant <alexandre.passant@deri.org>
- Date: Thu, 8 Oct 2009 18:17:41 +0100
- To: Kingsley Idehen <kidehen@openlinksw.com>
- Cc: Antoine Isaac <aisaac@few.vu.nl>, dbpedia-discussion@lists.sourceforge.net, public-lod@w3.org, pedantic-web@googlegroups.com
Hi, On 8 Oct 2009, at 16:54, Kingsley Idehen wrote: > Antoine Isaac wrote: >> Alexandre Passant a écrit : >>> Hi, >>> >>> On 8 Oct 2009, at 16:09, Kingsley Idehen wrote: >>> >>>> All, >>>> >>>> The intersection of Leigh Dodds SPARQL extensions survey [1], >>>> imminent official release of Virtuoso 6.0 (DBpedia basic and Live >>>> already use this, ditto LOD Cache, and B3S public endpoints), and >>>> an old post by Bernard Vatant re. skos:broader, has lead to this >>>> simple, but powerful example of Virtuoso's Transitive Option >>>> extension for SPARQL : >>>> >>>> #Transitive Option Off >>>> >>>> PREFIX p: <http://dbpedia.org/property/> >>>> PREFIX dbpedia: <http://dbpedia.org/resource/> >>>> PREFIX category: <http://dbpedia.org/resource/Category:> >>>> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> >>>> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> >>>> PREFIX geo: <http://www.georss.org/georss/> >>>> >>>> SELECT DISTINCT ?m ?n ?p ?d >>>> WHERE { >>>> ?m rdfs:label ?n. >>>> ?m skos:subject ?c. >>>> ?c skos:broader category:Churches_in_Paris. >>>> ?m p:abstract ?d. >>>> ?m geo:point ?p >>>> FILTER ( lang(?n) = "fr" ) >>>> FILTER ( lang(?d) = "fr" ) >>>> } >>>> >>>> #Transitive Option On >>>> >>>> PREFIX p: <http://dbpedia.org/property/> >>>> PREFIX dbpedia: <http://dbpedia.org/resource/> >>>> PREFIX category: <http://dbpedia.org/resource/Category:> >>>> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> >>>> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> >>>> PREFIX geo: <http://www.georss.org/georss/> >>>> >>>> SELECT DISTINCT ?m ?n ?p ?d >>>> WHERE { >>>> ?m rdfs:label ?n. >>>> ?m skos:subject ?c. >>>> ?c skos:broader category:Churches_in_Paris OPTION (TRANSITIVE). >>>> ?m p:abstract ?d. >>>> ?m geo:point ?p >>>> FILTER ( lang(?n) = "fr" ) >>>> FILTER ( lang(?d) = "fr" ) >>>> } >>>> >>>> >>> >>> As skos:broader is not transitive [1] but its superproperty >>> skos:broaderTransitive is, shouldn't the second query be >>> >>> ?c skos:broaderTransitive category:Churches_in_Paris OPTION >>> (TRANSITIVE). >>> >>> Best, >>> >>> Alex. >>> >>> [1] http://www.w3.org/TR/2009/REC-skos-reference-20090818/#L2413 >> >> >> +1. Also, skos:subject is not in the recommendation... > > Fine, but what happens when the data in question already has such > triples? Try this against DBpedia: > > PREFIX p: <http://dbpedia.org/property/> > PREFIX dbpedia: <http://dbpedia.org/resource/> > PREFIX category: <http://dbpedia.org/resource/Category:> > PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> > PREFIX skos: <http://www.w3.org/2004/02/skos/core#> > PREFIX geo: <http://www.georss.org/georss/> > > SELECT DISTINCT ?m ?n ?p ?d > WHERE { > ?m rdfs:label ?n. > ?m skos:subject ?c. > ?c skos:broaderTransitive category:Churches_in_Paris option > (transitive) . > ?m p:abstract ?d. > ?m geo:point ?p > FILTER ( lang(?n) = "fr" ) > FILTER ( lang(?d) = "fr" ) > } > > You will have an empty result-set. Again, this is the point Bernard > Vatant made in his post a long time ago. So there is something wrong in the current inference done in DBPedia. Indeed, that query lists one result PREFIX p: <http://dbpedia.org/property/> PREFIX dbpedia: <http://dbpedia.org/resource/> PREFIX category: <http://dbpedia.org/resource/Category:> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX geo: <http://www.georss.org/georss/> SELECT DISTINCT ?m ?n ?p ?d WHERE { ?m rdfs:label ?n. ?m skos:subject ?c. ?c skos:broader category:Churches_in_Paris . ?m p:abstract ?d. ?m geo:point ?p FILTER ( lang(?n) = "fr" ) FILTER ( lang(?d) = "fr" ) } But the following one list none PREFIX p: <http://dbpedia.org/property/> PREFIX dbpedia: <http://dbpedia.org/resource/> PREFIX category: <http://dbpedia.org/resource/Category:> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX geo: <http://www.georss.org/georss/> SELECT DISTINCT ?m ?n ?p ?d WHERE { ?m rdfs:label ?n. ?m skos:subject ?c. ?c skos:broaderTransitive category:Churches_in_Paris . ?m p:abstract ?d. ?m geo:point ?p FILTER ( lang(?n) = "fr" ) FILTER ( lang(?d) = "fr" ) } However, skos:broaderTransitive is a superproperty of skos:broader, so you should get at least the result of the first query included here. Then, the query you mentioned earlier (using option (transitive) with skos:broaderTransitive) should not give an empty set - and everything work fine. Thanks, Alex. BTW, do you have a link to Bernard's post ? > Ultimate solution: make an inference rule that asserts: > <skos:broaderTransitive> owl:subPropertyOf <skos:broader> (or make a > context rule from the entire skos ontology), and you will then have > the revised query return data for those databases that have used > skos:broader to build their concept scheme structure (assuming you > apply the inference rule pragma). Otherwise, If your store has > skos:broaderTransitive data, then just change the query :-) > > Kingsley >> >> Best, >> >> Antoine >> >> > > > -- > > > Regards, > > Kingsley Idehen Weblog: http://www.openlinksw.com/blog/~kidehen > President & CEO OpenLink Software Web: http://www.openlinksw.com > > > > -- Dr. Alexandre Passant Digital Enterprise Research Institute National University of Ireland, Galway :me owl:sameAs <http://apassant.net/alex> .
Received on Thursday, 8 October 2009 17:18:17 UTC