json-ld:引用模式的详细信息:Person



是否可以引用空白节点上的属性?在下面的示例中,如何表示Secret Agent 2知道电子邮件james@007.uk属于Secret Agent 1?以下是基于空白节点的示例

{
"@context": "http://schema.org/",
"@id": "_:n1",
"name": "Secret Agent 1",
"email": "james@007.uk",         //the property I want to add
"knows": {
"name": "Secret Agent 2",
"knows": {
"@id": "_:n1"
},
"knowsAbout": {                //Agent 2 knows that an email
"@id": "_:n1#email"          //is the contact for Secret Agent 1
}                              //and that the email is "james@007.uk"
}
}

当在json-ld游乐场中尝试时,带有"@id": "_:n1#email"的位被解释为不存在的新节点_:b2

在JSON-LD中,或者在RDF中,都无法真正做到这一点。本文档描述了两个实体,每个实体都有一组相互了解的属性和资产。这种关系是实体之间的关系,而不是那些实体的特定属性。

你可以将电子邮件地址本身作为一个实体,然后声明与它的某种关系。例如,schema.org有一个PropertyValueSpecification,它可以有一个@id,因此可以被引用,但我不会选择这样建模。

JSONLD-star是一个用于描述关系本身属性的拟议规范(RDFStar的变体(,因此您可以将关系_:n1 :email "james@007.uk"创建为一个实体,但这并没有真正达到您所描述的间接性。尽管如此,它可能看起来像以下内容:

{
"@context": "https://schema.org",
"@id": "_:n1",
"email": "james@007.uk",
"knows": {
"name": "Secret Agent 2",
"knows": {
"@id": "_:n1"
},
"knowsAbout": {
"@id": {
"@id": "_:n1",
"email": "james@007.uk"
}
}
}
}

但请注意,这些只是建议的标准。

如果您使用PropertyValueSpecification间接(或类似的建模(,您可以说您了解电子邮件及其与_:n1的关系,而不泄露实际的电子邮件本身,但这绝对不是典型的数据建模。

相关内容

最新更新