想象一下,我开始使用本体,因为它提供了一些有用的词汇来描述我感兴趣的对象,例如: FOAF描述一个人(我)。我马上遇到两个问题。我遇到了另一个也有词汇描述人的本体论。
问题1 :其中一些术语在功能上是等效的或相关的,但我不想在同一个对象周围打包两个本体,
<span property="foaf:name"><span property="dc:creator">Carl Boettiger</span></span>
因为这很麻烦而且似乎忽略了链接数据的整个概念,这应该足够聪明,知道dc:creator
也是foaf:person.
那么什么是这样做的正确方法?我如何确认这些对象之间的关系(例如,大概并非所有foaf:person
都应该是dc:creator
。是否在语义网的某处说dc:creator
是foaf:person
的子集?我是否需要以某种方式链接到这样的声明?你能指出我在哪里吗?
第2期:一个本体中的词汇量不足以满足我的目的,因此我需要使用另一个词汇表中的词汇表。例如,据我所知,FOAF没有为我提供一种方式来说明我的组织,位置或角色(GoogleSnippets似乎认为这些字段必须是有效的人员)。所以我去找一个方便的本体论,比如谷歌建议的http://rdf.data-vocabulary.org,它有这些术语。现在我再次提出了一个密切相关的问题,即确保这两个本体在一个人身上达成一致:
<div typeof="foaf:Person">
<span property="foaf:name">Carl Boettiger</span> is a <span property="v:role"> graduate student </span>
</div>
v:role
对它的属性有自己的想法,typeof="v:Person
。我是否还需要添加此typeof
声明?那么我是否需要做一些事情来说它与foaf:Person
相同,而且v:role
和foaf:name
都描述了同样的事情(我)?
非常感谢您澄清我的困惑。
答案 0 :(得分:6)
请注意foaf:Person是RDFa中通过@typeof属性表示的类型或类。 dc:creator,foaf:name,v:另一方面,role是放在RDFa中@property属性中的属性。通常,您首先在HTML中键入对象(例如Person),然后通过属性提供名称或角色等属性。类型通常以upercase(foaf:Person)开头,而属性以小写(foaf:name)开头。
问题1:您可以将同一属性属性中的所有属性与空格分开,而不是为每个新属性添加新的span元素:
<span property="foaf:name dc:creator">Carl Boettiger</span>
在语义网上某处说dc:creator是foaf的一个子集:person?
首先,这个例子并不是真的足够,dc:creator是一个属性和foaf:Person是一个类型,但让我们想象一下我们在谈论foaf:Agent和foaf:Person,foaf规范说foaf:Person is foaf的子类:代理:http://xmlns.com/foaf/spec/#term_Person - 词汇表可能定义这种关系。还有交叉词汇表映射有时会定义各种词汇中的类和属性之间的关系。
不,你通常不必这样做。我是否需要以某种方式链接到这样的声明?
问题2:请注意,http://rdf.data-vocabulary.org已弃用,以支持schema.org词汇表:http://schema.org/docs/full.html和http://schema.rdfs.org/
我是否还需要添加此类声明?我是否需要做一些事情来说它与foaf是一样的:人,事实上v:角色和foaf:名字都描述了同样的事情(我)?
通常,在以HTML格式发布数据时,您不会尝试在词汇表之间声明等效性,而是使用您认为对于使用数据的应用程序有用的所有词汇表术语进行发布,并且很容易在RDFa,因为您可以在给定的@typeof或@property属性中嵌入多个类型和属性。
<div typeof="foaf:Person v:Person">
<span property="foaf:name v:name">Carl Boettiger</span> is a <span property="v:role"> graduate student </span>
</div>
请注意,您可以在http://rdfa.info/play/
测试RDFa标记