我正在尝试使用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 - Python rdflib和SPARQL BIND支持,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22157213/

10-11 16:55