JSON-LD:无法生成三元组,没有 IRI 作为 json 文档中的 @id
JSON-LD: Trouble generating triples, without IRI as @id in json doc
我正在使用 https://github.com/jsonld-java/jsonld-java 从 JSON 文档生成三元组。我是 json-ld 的新手,我想知道是否有一种方法可以生成三元组,@id 是文字,或者 @id 是否需要 IRI。?
示例 Json 输入:
[
{
"@context": {
"@vocab": "http://schema.org/",
"@base": "test.com"
},
"@graph": [
{
"@type": [
"Person",
"Entity"
],
"@id": "abcdef",
"personName": "David"
}
]
}
]
代码片段:
JsonLdProcessor.toRDF(obj, options)
对于选项,我使用以下 JsonLd 选项配置
this.format = "application/nquads"
上述文件没有产生任何三元组。当我将上述 json 文档中的 @id 字段更改为“@id”:“http://abcdef”时,它会生成以下三元组。
<http://abcdef> <http://schema.org/personName> "David" _:b0 .
<http://abcdef> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Entity> _:b0 .
<http://abcdef> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person> _:b0 .
任何指点或建议都会很棒。
既然你在谈论 NQuads,主题总是需要是 IRI 或 BNode。由于 JSON-LD 的数据模型是 RDF,因此更普遍地适用于 @id.
的值
但是,可以仅使用一个字符串来指定@id,该字符串将被视为基于上下文中文档或@base 的位置的路径组件。请注意,这是一种称为 相对 IRI 的 IRI 形式,因此存在基于 URI/IRI 规范的句法限制。通常,JSON-LD 不关心,并且会愉快地生成非法 IRI。但是,如果没有文档库,它会自动删除主题节点。
您确实在上下文中使用了@base,但它不是绝对 IRI,因此会产生错误。您可以使用 http://test.com/
之类的东西(注意尾部斜杠)将其转换为绝对 IRI。这可能是您要找的更多内容。
在 JSON-LD playground 上试用示例也很好。
我正在使用 https://github.com/jsonld-java/jsonld-java 从 JSON 文档生成三元组。我是 json-ld 的新手,我想知道是否有一种方法可以生成三元组,@id 是文字,或者 @id 是否需要 IRI。?
示例 Json 输入:
[
{
"@context": {
"@vocab": "http://schema.org/",
"@base": "test.com"
},
"@graph": [
{
"@type": [
"Person",
"Entity"
],
"@id": "abcdef",
"personName": "David"
}
]
}
]
代码片段:
JsonLdProcessor.toRDF(obj, options)
对于选项,我使用以下 JsonLd 选项配置
this.format = "application/nquads"
上述文件没有产生任何三元组。当我将上述 json 文档中的 @id 字段更改为“@id”:“http://abcdef”时,它会生成以下三元组。
<http://abcdef> <http://schema.org/personName> "David" _:b0 .
<http://abcdef> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Entity> _:b0 .
<http://abcdef> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person> _:b0 .
任何指点或建议都会很棒。
既然你在谈论 NQuads,主题总是需要是 IRI 或 BNode。由于 JSON-LD 的数据模型是 RDF,因此更普遍地适用于 @id.
的值但是,可以仅使用一个字符串来指定@id,该字符串将被视为基于上下文中文档或@base 的位置的路径组件。请注意,这是一种称为 相对 IRI 的 IRI 形式,因此存在基于 URI/IRI 规范的句法限制。通常,JSON-LD 不关心,并且会愉快地生成非法 IRI。但是,如果没有文档库,它会自动删除主题节点。
您确实在上下文中使用了@base,但它不是绝对 IRI,因此会产生错误。您可以使用 http://test.com/
之类的东西(注意尾部斜杠)将其转换为绝对 IRI。这可能是您要找的更多内容。
在 JSON-LD playground 上试用示例也很好。