Same sparql not returning same results

纵饮孤独 提交于 2019-12-12 06:56:05

问题


I'm using the same sparql statement using two different clients but both are not returning the same results. The owl file is in rdf syntax and can be accessed here. This is the sparql statement:

PREFIX wo:<http://purl.org/ontology/wo/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> select ?individual where { ?individual rdf:type wo:Class }

I'm using it using top braid and the following python program:

>>> import rdflib
>>> import rdfextras
>>> rdfextras.registerplugins()
>>> g=rdflib.Graph()
>>> g.parse("index.owl")
<Graph identifier=N39ccd52985014f15b2fea90c3ffaedca (<class 'rdflib.graph.Graph'>)>
>>> PREFIX = "PREFIX wo:<http://purl.org/ontology/wo/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
>>> query = "select ?individual where { ?individual rdf:type wo:Class }"
>>> query = PREFIX + query
>>> result_set = g.query(query)
>>> len(result_set)
0

Which is returning 0


回答1:


This query constructs a graph containing all the triples in which wo:Class is used as a subject, predicate, or object:

PREFIX wo: <http://purl.org/ontology/wo/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
construct { ?s ?p ?o } 
where { 
  { ?s ?p wo:Class . bind( wo:Class as ?o ) } union
  { ?s wo:Class ?o . bind( wo:Class as ?p ) } union
  { wo:Class ?p ?o . bind( wo:Class as ?s ) }
}

I made a local copy of your data and the results I get are (in Turtle):

@prefix vs:    <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix wo:    <http://purl.org/ontology/wo/> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .

wo:Class  a              owl:Class ;
        rdfs:comment     "A class is a scientific way to group related organisms together, some examples of classes being jellyfish, reptiles and sea urchins. Classes are big groups and contain within them smaller groupings called orders, families, genera and species."@en ;
        rdfs:label       "Class"@en ;
        rdfs:seeAlso     <http://www.bbc.co.uk/nature/class> , <http://en.wikipedia.org/wiki/Class_%28biology%29> ;
        rdfs:subClassOf  wo:TaxonRank ;
        vs:term_status   "testing" .

wo:class  rdfs:range  wo:Class .

There are no individuals of type wo:Class in your data. The result set ought to be empty.



来源:https://stackoverflow.com/questions/20023462/same-sparql-not-returning-same-results

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!