W3C home > Mailing lists > Public > public-lod@w3.org > October 2009

Re: DBpedia SPARQL Endpoint and Transitive Queries

From: Kingsley Idehen <kidehen@openlinksw.com>
Date: Thu, 08 Oct 2009 13:42:39 -0400
Message-ID: <4ACE248F.4080304@openlinksw.com>
To: Alexandre Passant <alexandre.passant@deri.org>
CC: Antoine Isaac <aisaac@few.vu.nl>, dbpedia-discussion@lists.sourceforge.net, public-lod@w3.org, pedantic-web@googlegroups.com
Alexandre Passant wrote:
> 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.
Only if you have a Virtuoso context rule in place (the kind I created 
for Yago, UMBEL, OpenCyc, DBpedia ontology etc..) that is associated 
with a Graph IRI that holds the assertions. Thus, in this case, I would 
have to do the following:

1. Load SKOS ontology into Virtuoso instance hosting DBpedia
2. Associate a context rule with the Graph IRI
3. When issuing SPARQL or associating SPARQL with URL-Rewrite rules, 
invoke the inference rule pragma.

If you look at: http://dbpedia.org/fct or http://lod.openlinksw.com/fct, 
post initial query result presentation, you have an "options" link, this 
is where you can see the context rules that are currently available. In 
short, this is what I use (e.g. "b3sifp") for my data reconciliation via 
direct and indirect co-reference demos.

Anyway, we'll have this all set up, then and make another post so 
everyone has the respective rule names for future reference and use.

Kingsley
> 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> .
>
>
>
>
>
>
>


-- 


Regards,

Kingsley Idehen	      Weblog: http://www.openlinksw.com/blog/~kidehen
President & CEO 
OpenLink Software     Web: http://www.openlinksw.com
Received on Thursday, 8 October 2009 17:43:18 UTC

This archive was generated by hypermail 2.3.1 : Sunday, 31 March 2013 14:24:23 UTC