Rdf 向JSON-LD中的现有类型添加自定义属性
我正在研究JSON-LD和Hydra作为API负载的使用。这似乎很有希望,但我正在努力解决一件事——如何扩展预定义类型 例如,我有用户。将它们建模为Rdf 向JSON-LD中的现有类型添加自定义属性,rdf,ontology,json-ld,structured-data,vocabulary,Rdf,Ontology,Json Ld,Structured Data,Vocabulary,我正在研究JSON-LD和Hydra作为API负载的使用。这似乎很有希望,但我正在努力解决一件事——如何扩展预定义类型 例如,我有用户。将它们建模为“@type”似乎是合理的:http://schema.org/Person“-因为用户都是人。但我也希望在我的用户上有一些未在该类型上定义的属性,例如用户帐户信息 我知道我可以为一个资源提供多种类型,因此我可以定义自己的词汇表来定义一种拥有这些信息的“用户”,但这是实现这一点的正确方法吗?还是有更好的方法使用JSON-LD来实现这一目标?一般来说,
“@type”似乎是合理的:http://schema.org/Person“
-因为用户都是人。但我也希望在我的用户上有一些未在该类型上定义的属性,例如用户帐户信息
我知道我可以为一个资源提供多种类型,因此我可以定义自己的词汇表来定义一种拥有这些信息的“用户”,但这是实现这一点的正确方法吗?还是有更好的方法使用JSON-LD来实现这一目标?一般来说,有四种方法可以实现这一目标:
- 对于类型(也称为类):
- 添加一个类型。要表示
是虚构的,您可以向该实体添加模式:Person
类型例如:virtualAlthing
- 改用子类型。若要表示
是虚构的,您可以将模式:人物
定义为ex:virtualperson
,并且只使用模式:人物
ex:virtualperson
- 添加一个类型。要表示
- 对于属性:
- 添加属性。要为
提供昵称,可以添加架构:Person
属性例如:昵称
- 改用子属性。您可以将
定义为ex:昵称
,并且只使用schema:additionalName
ex:昵称
- 添加属性。要为
在您的特定情况下,在我看来,您需要一种类型来表示用户帐户,因为
模式:Person
可以有多个帐户,并且可能没有适用于该用户的所有用户帐户的用户数据。因此,您可能需要考虑使用一个实体来表示一个用户帐户,以及一个属性来将这样一个帐户连接到<代码>模式:人< /代码>。
例如,您可以使用该属性将添加到:
{
“@context”:”http://www.w3.org/2013/json-ld-context/rdfa11",
“@type”:“schema:Person”,
“schema:name”:“此人的姓名”,
“foaf:帐户”:{
“@type”:“foaf:OnlineAccount”,
“架构:名称”:“联机帐户的名称”
}
}
或者在超级类型/超级属性之外使用它,如果您想支持不先阅读自己词汇表的消费者,这通常是一个好主意 ²为此,您不必在
schema:Person
旁边添加其他类型,因为您可以自由混合来自不同词汇表的类型和属性。还请注意,您可以定义属性的and,这允许您“隐式”向引用/引用的实体添加类型。在上面的示例中,了解FOAF词汇表的消费者将使用类型schema:Person
将类型FOAF:Agent
添加到实体中,因为它是属性FOAF:account
的域