RDFLib 解析器无法识别 json-ld 格式
RDFLib parser does not recognize json-ld format
我的代码在 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, a list of supported plugins does not include the json-ld format. However, I had it working before with format set to json-ld and there are plenty of examples using the json-ld format, e.g: https://github.com/RDFLib/rdflib-jsonld/issues/19
我包含了 rdflib_jsonld 的导入,尽管它之前在另一个环境 (Python 2.7) 上仅使用 rdflib(我知道,没有任何意义)。
第 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 的提及,我在那里运行了示例。
这是您可以使用的简单语法
import rdflib
import json
from collections import Counter
from rdflib import Graph, plugin
from rdflib.serializer import Serializer
g = rdflib.Graph()
g.parse("http://purl.obolibrary.org/obo/go.owl")
j = g.serialize(format='json-ld', indent=4)
with open('ontology.json', 'a+') as f:
f.write(str(j))
f.close()
我在 Jupyter 笔记本中也遇到了这个 PluginException,在 运行 以下两个单元格之后:
! pip install rdflib-json
from rdflib import Graph, plugin
from rdflib.serializer import Serializer
g = Graph()
g.parse(data="""
<some turtle triples>
""", format="turtle")
g.serialize(format="json-ld")
事实证明,它通过 重新启动笔记本 并重新运行 上面的代码(因此在重新启动笔记本后重新导入)开始工作。
我的代码在 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, a list of supported plugins does not include the json-ld format. However, I had it working before with format set to json-ld and there are plenty of examples using the json-ld format, e.g: https://github.com/RDFLib/rdflib-jsonld/issues/19
我包含了 rdflib_jsonld 的导入,尽管它之前在另一个环境 (Python 2.7) 上仅使用 rdflib(我知道,没有任何意义)。
第 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 的提及,我在那里运行了示例。
这是您可以使用的简单语法
import rdflib
import json
from collections import Counter
from rdflib import Graph, plugin
from rdflib.serializer import Serializer
g = rdflib.Graph()
g.parse("http://purl.obolibrary.org/obo/go.owl")
j = g.serialize(format='json-ld', indent=4)
with open('ontology.json', 'a+') as f:
f.write(str(j))
f.close()
我在 Jupyter 笔记本中也遇到了这个 PluginException,在 运行 以下两个单元格之后:
! pip install rdflib-json
from rdflib import Graph, plugin
from rdflib.serializer import Serializer
g = Graph()
g.parse(data="""
<some turtle triples>
""", format="turtle")
g.serialize(format="json-ld")
事实证明,它通过 重新启动笔记本 并重新运行 上面的代码(因此在重新启动笔记本后重新导入)开始工作。