我正在尝试使用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
三元组的上下文?
根据你的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功能:
"id": "@id"
);"item": "@nest"
)-JSON-LD 1.1中的新增功能。你可能也对RML感兴趣。
做到了。非常感谢。