当在“@id”中使用“<”时,rdflib-jsonld 生成虚假 url
rdflib-jsonld generates spurious url when '<' is used in '@id'
我正在使用 rdflib-jsonld 解析一些 NoSQL 数据并插入到 Sesame 中。这是代码中有问题的部分:
context = {
"@context": {
"isGiven": URIRef('<'+'http://purl.org/net/something#isGiven'+rdfLizerItem['FooByBar']+'>'),
"administeredAs": URIRef('<'+'http://purl.org/net/something#administeredAs'+'>'),
"type":URIRef('<'+'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'+'>'),
}
}
recipient=URIRef('<'+someUrl+rdfLizerItem['FooRecipient']+'>')
jsonldOutputIsAdmin = {"@id": recipient,"isGiven": URIRef('<'+someUrl+ rdfLizerItem['Quantity']+'>')}
print jsonldOutputIsAdmin
g = Graph()
g.parse(data=json.dumps(jsonldOutputIsAdmin), format='json-ld', context=context)
g.close()
for s,p,o in g:
pprint.pprint ((s,p,o))
问题是在@id
的URL中添加<
和>
,主题的URL成为完整路径给它。例如:
(rdflib.term.URIRef(u'file:///C:/path/to/the/url/<http:/purl.org/net/ontologyName#subject>'),
rdflib.term.URIRef(u'<http://purl.org/net/ontologyName#predicate>'),
rdflib.term.Literal(u'<http://purl.org/net/ontologyName#object>'))
我只想要主题中的 URL 而不是文件路径。是什么导致了这个问题,我该如何解决?
我需要 <
和 >
才能将三元组导出到 Sesame。
为避免文件系统路径被用作前缀,您需要为上下文提供 base IRI
的值
JSON-LD allows IRIs to be specified in a relative form which is
resolved against the document base according section 5.1 Establishing
a Base URI of [RFC3986]. The base IRI may be explicitly set with a
context using the @base keyword.
例如,如果您像这样修改上下文:
context['@context']['@base'] = '.'
您不会看到以 @id 值作为前缀的路径。
我正在使用 rdflib-jsonld 解析一些 NoSQL 数据并插入到 Sesame 中。这是代码中有问题的部分:
context = {
"@context": {
"isGiven": URIRef('<'+'http://purl.org/net/something#isGiven'+rdfLizerItem['FooByBar']+'>'),
"administeredAs": URIRef('<'+'http://purl.org/net/something#administeredAs'+'>'),
"type":URIRef('<'+'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'+'>'),
}
}
recipient=URIRef('<'+someUrl+rdfLizerItem['FooRecipient']+'>')
jsonldOutputIsAdmin = {"@id": recipient,"isGiven": URIRef('<'+someUrl+ rdfLizerItem['Quantity']+'>')}
print jsonldOutputIsAdmin
g = Graph()
g.parse(data=json.dumps(jsonldOutputIsAdmin), format='json-ld', context=context)
g.close()
for s,p,o in g:
pprint.pprint ((s,p,o))
问题是在@id
的URL中添加<
和>
,主题的URL成为完整路径给它。例如:
(rdflib.term.URIRef(u'file:///C:/path/to/the/url/<http:/purl.org/net/ontologyName#subject>'),
rdflib.term.URIRef(u'<http://purl.org/net/ontologyName#predicate>'),
rdflib.term.Literal(u'<http://purl.org/net/ontologyName#object>'))
我只想要主题中的 URL 而不是文件路径。是什么导致了这个问题,我该如何解决?
我需要 <
和 >
才能将三元组导出到 Sesame。
为避免文件系统路径被用作前缀,您需要为上下文提供 base IRI
的值JSON-LD allows IRIs to be specified in a relative form which is resolved against the document base according section 5.1 Establishing a Base URI of [RFC3986]. The base IRI may be explicitly set with a context using the @base keyword.
例如,如果您像这样修改上下文:
context['@context']['@base'] = '.'
您不会看到以 @id 值作为前缀的路径。