我正在尝试使用 BIND() 函数进行各种 SPARQL 查询,但似乎都不适用于 rdflib 4.0。
每次我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "~/.env/lib/python2.7/site-packages/rdflib/graph.py", line 1045, in query
query_object, initBindings, initNs, **kwargs))
File "~/.env/lib/python2.7/site-packages/rdfextras/sparql/processor.py", line 49, in query
loadContexts=loadContexts)
File "~/.env/lib/python2.7/site-packages/rdfextras/sparql/algebra.py", line 406, in TopEvaluate
assert isinstance(expr,AlgebraExpression), repr(expr)
编辑这是查询:
CONSTRUCT { ?aspectA ?predicateURI ?aspectLabel. }
WHERE { ?aspectA aspects:A0060 ?aspectType;
aspects:A0101 ?aspectLabel.
BIND ( IRI( CONCAT("some.uri/raw/aspects#A";, ?aspectType) ) AS ?predicateURI ).
}
有什么可能出错的提示吗?
最佳答案
我找到了问题的根源。 我用一些需要 rdfextras 的旧 rdflib 启动了该项目。我将 rdflib 升级到 4.0(并最终升级到 4.2-dev),不再需要 rdfextras。事实上,注册它们是导致这个问题的原因。一旦我卸载了 rdfextras 并删除了引用它们的plugin.register 条目,一切就开始顺利运行。
关于Python rdflib 和 SPARQL BIND 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22157213/