Warm tip: This article is reproduced from serverfault.com, please click

rdf-JSON-LD中的顶级仅索引键的上下文

(rdf - A context for a top level index-only key in JSON-LD)

发布于 2020-12-04 17:31:50

我正在尝试使用JSON-LD使旧式JSON文件机器可读。有问题的JSON文件具有一个顶级对象,该对象的item成员引用了一个包含实际相关数据的对象。

{
  "item": {
    "id": "123",
    "name": "Test"
  }
}

现在,当我介绍如下内容时:

{
  "@context": {
    "name": "https://example.org/name"
  }
}

不会提取任何知识,因此无法从中解释任何三元组。为了使它起作用,我意识到我可以执行以下操作:

{
  "@context": {
    "item": "https://example.org/exists",
    "name": "https://example.org/name"
  }
}

这项工作有效,意味着很好地提取了具有谓词名称的三元组。但是,这种方法的问题在于,exists还会提取谓词中不必要的三元组

因此,我尝试将顶级对象标记为索引容器,以便item完全忽略键。我只是没有找到一种无需为此指定IRI的方法item,如果我分配了一个IRI ,则再次会提取出不必要的三元组。

{
  "@context": {
    "name": "https://example.org/name"
  }
}

不会提取任何知识,因此无法从中解释任何三元组。为了使它起作用,我意识到我可以执行以下操作:

这根本不起作用(因为该item术语没有IRI):

{
  "@context": {
    "item": {
      "@container": "@index"
    },
    "name": "https://example.org/name"
  }
}

这确实有效,但又具有不必要的三元组:

{
  "@context": {
    "@container": "@index",
    "item": "https://example.org/exists",
    "name": "https://example.org/name"
  }
}

我在这里想念什么?如何创建仅提取name三元组的上下文

Questioner
aef
Viewed
1
Stanislav Kralin 2020-12-08 09:10:36

根据你的JSON-LD处理器检查此内容:

{
  "item": {
    "id":   "123",
    "name": "Test"
  } ,
  "@context": {
    "@base": "http://example.com/id/",
    "id":    "@id", 
    "item":  "@nest",
    "name":  "https://example.org/name"
  } 
}

在JSON-LD Playground中,此上下文产生以下单个RDF三元组:

<http://example.com/id/123> <https://example.org/name> "Test" .

使用的JSON-LD功能:

你可能也对RML感兴趣