1

次の SPARQL クエリがあります。

SELECT ?s ?p ?o
WHERE {
?sbj ?p ?obj .
?sbj (<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>/<http://www.w3.org/2000/01/rdf-schema#subClassOf>+) <http://www.my.org/ontology.owl#Place> .
?sbj rdfs:label ?s .
?obj rdfs:label ?o .
}

SPARQL 1.1 用に定義されたプロパティ パスを利用します。

このクエリを rdflib 3.4.0 で処理しようとすると、次の例外メッセージが表示されます。

rayman@hal9100 ~/projects/scripts $ python places_owl2json.py 
Traceback (most recent call last):
  File "places_owl2json.py", line 107, in <module>
    """)
  File "/usr/local/lib/python2.7/dist-packages/rdflib/graph.py", line 1007, in query
    query_object, initBindings, initNs, **kwargs))
  File "/usr/local/lib/python2.7/dist-packages/rdfextras/sparql/processor.py", line 49, in query
    loadContexts=loadContexts)
  File "/usr/local/lib/python2.7/dist-packages/rdfextras/sparql/algebra.py", line 406, in TopEvaluate
    assert isinstance(expr,AlgebraExpression), repr(expr)
AssertionError: None

どうしたの?ありがとう、

リカルド

4

1 に答える 1

0

これは rdflib 3.4.0 のバグのようです: rdflib 4.2.1-dev (現在のバージョン) でエラーを再現しようとしましたが、以下のコードで動作するようです:

In [1]: from rdflib import *
INFO:rdflib:RDFLib Version: 4.2.1-dev

In [2]: g = Graph()

In [3]: g.query('''
   ...: SELECT ?s ?p ?o
   ...: WHERE {
   ...: ?sbj ?p ?obj .
   ...: ?sbj (<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>/<http://www.w3.org/2000/01/rdf-schema#subClassOf>+) <http://www.my.org/ontology.owl#Place> .
   ...: ?sbj rdfs:label ?s .
   ...: ?obj rdfs:label ?o .
   ...: }
   ...: ''')
Out[3]: <rdflib.plugins.sparql.processor.SPARQLResult at 0x1111dc410>
于 2015-03-25T13:32:31.567 に答える