我在Python 3.4中的代码:
from rdflib import Graph, plugin
import json, rdflib_jsonld
from rdflib.plugin import register, Serializer
register('json-ld', Serializer, 'rdflib_jsonld.serializer', 'JsonLDSerializer')
context = {
"@context": {
"foaf" : "http://xmlns.com/foaf/0.1/",
"vcard": "http://www.w3.org/2006/vcard/ns#country-name",
"job": "http://example.org/job",
"name": {"@id": "foaf:name"},
"country": {"@id": "vcard:country-name"},
"profession": {"@id": "job:occupation"},
}
}
x = [{"name": "bert", "country": "antartica", "profession": "bear"}]
g = Graph()
g.parse(data=json.dumps(x), format='json-ld', context=context)
g.close()
错误:
"No plugin registered for (%s, %s)" % (name, kind))
rdflib.plugin.PluginException: No plugin registered for (json-ld, <class'rdflib.parser.Parser'>)
根据RDFLib documentation,受支持的插件列表不包括json-ld格式。但是,我之前使用过将格式设置为json-ld的方法,并且有很多使用json-ld格式的示例,例如:https://github.com/RDFLib/rdflib-jsonld/issues/19
我包括rdflib_jsonld的导入,尽管以前它仅在rdflib的另一个环境(Python 2.7)上工作(我知道,没有任何意义)。
第4行的json-ld的注册部分也没有帮助。
有人有主意吗?
最佳答案
我通过添加来使其工作:
from SPARQLWrapper import SPARQLWrapper
我在http://rdflib.readthedocs.org/en/latest/apidocs/rdflib.plugins.sparql.results.html#module-rdflib.plugins.sparql.results.jsonlayer处从RDFLib查看jsonLayer模块,并注意到提到SPARQLWrapper的情况,在我以前的环境中使用了SPARQLWrapper,使示例得以实现。