如何解决json-ld:引用架构的详细信息:Person
是否可以引用空白节点上的属性?在以下示例中,表示 Secret Agent 2
知道电子邮件 james@007.uk
属于 Secret Agent 1
的方式是什么?以下内容基于this example for blank nodes
{
"@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"
}
}
尝试使用 in the json-ld playground 时,带有 "@id": "_:n1#email"
的位被解释为不存在的新节点 _:b2
解决方法
您无法在 JSON-LD 中或在一般的 RDF 中真正做到这一点。本文档描述了两个实体,每个实体都有一组彼此了解的属性和资产。关系是实体之间的关系,而不是实体的具体属性。
您可以将电子邮件地址本身设为一个实体,然后声明与它的某种关系。例如,schema.org 有一个 PropertyValueSpecification,它可以有一个 @id
,因此可以被引用,但这不是我选择的建模方式。
JSON-LD-star 是用于描述关系本身属性的提议规范(RDF-star 的变体),因此您可以将关系 _: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
的关系,而无需透露实际电子邮件本身,但这绝对不是典型的数据建模。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。