假设您有一个简单的RDF语句x:Object x:predicate x:Subject
,它在JSON-LD中表示为{"@id": "x:Object", "x:predicate": {"@id": "x:Subject"}}
。你如何指称具体的宾语-谓语-主语关系,你如何"称呼"事实关系?JSON-LD中语句的"@id"
或内联标识是什么?你如何将"元数据"归属于一个语句?
在JSON-LD中,主题是另一个语句,例如[x:Subject x:predicate x:Object] x:metaPredicate x:MetaObject
,您如何表达语句?
如何在JSON-LD中表达语句,其中对象是另一个语句,例如x:MetaSubject x:metaPredicate [x:Subject x:predicate x:Object]
?
如何在JSON-LD中表达语句,其中谓词是另一个语句(奇怪但可能),例如x:MetaSubject [x:Subject x:predicate x:Object] x:MetaObject
?
(附言:我意识到我的示例的[]
语法不符合Turtle,但它们用来表达我的想法/问题。)
您需要使用具体化,有一个标准化的词汇表。在JSON-LD中,它看起来有点像这样:
{
"@context": {
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"subject": { "@id": "rdf:subject", "@type": "@id" },
"predicate": { "@id": "rdf:predicate", "@type": "@id" },
"object": { "@id": "rdf:object", "@type": "@id" }
},
"@type": "rdf:Statement",
"subject": "x:Subject",
"predicate": "x:predicate",
"object": { "@id": "x:Object" },
"x:metaPredicate": "x:MetaObject"
}
现在可以使用JSON-LD*或JSON LD星在JSON-LD中引用RDF三元组。
引用三元组作为主语
JSON-LD*构建在RDF*之上,RDF*已经得到一些工具的支持,并使使用RDF三元组代替主题成为可能,例如:
<< s pred o >> pred2 o2
这样:
{
"@id": {"@id": "s", "pred": {"@id": "o"}},
"pred2": {"@id": "o2" }
}
引用三元组作为对象
需要注意的是,使用RDF三元组作为对象的JSON-LD结构有点尴尬,这是:
s pred << s2 pred2 o >>
需要@reverse
,如下所示:
{
"@id": {
"@id": "s2",
"pred2": {"@id": "o"}
},
"@reverse": {
"pred": {"@id": "s"}
}
}
另请参阅
- W3C社区组JSON LD星形规范草案