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 上试用示例也很好。