RDFLib解析器无法识别json-ld格式

问题描述 投票:1回答:2

我在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的导入,虽然它之前在另一个环境(Python 2.7)上只使用了rdflib(我知道,没有任何意义)。

第4行的json-ld的寄存器部分也没有帮助。

谁有想法?

python rdf rdflib json-ld
2个回答
3
投票

我通过添加:

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,我在之前的环境中使用过,我得到了这个例子。


0
投票

这是一个可以使用的简单语法

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()
© www.soinside.com 2019 - 2024. All rights reserved.