假设我开始使用本体,因为它提供了一些有用的词汇来描述我感兴趣的对象,例如FOAF来描述一个人(我)。我马上遇到两个问题。我遇到了另一个本体论,它也有描述一个人的词汇。
问题1:其中一些术语在功能上是等效的或相关的,但我不想费心将两个本体都包装在同一个对象上,

<span property="foaf:name"><span property="dc:creator">Carl Boettiger</span></span>

因为这很麻烦,而且似乎忽略了链接数据的整个概念,而链接数据应该足够聪明,可以知道adc:creator也是一个foaf:person.所以正确的方法是什么?我如何确认这些对象之间的关系(例如,假设不是所有foaf:person都应该是dc:creator。是否在语义网络上的某个地方说dc:creatorfoaf:person的子集?我是否需要以某种方式链接到这样的声明?你能给我指一下哪里吗?
问题2:一个本体中的词汇不足以满足我的目的,所以我需要使用另一个本体中的词汇。例如,据我所知,FOAF并没有提供一种方法来说明我的组织、位置或角色(Google代码片段似乎认为这是有效人员所必需的字段)。所以我去找一个方便的本体,比如谷歌建议的本体,它有这些术语。现在,我又遇到了一个密切相关的问题,那就是确保两个本体在一个人是什么方面达成一致:
<div typeof="foaf:Person">
  <span property="foaf:name">Carl Boettiger</span> is a <span property="v:role"> graduate student </span>
</div>

v:role对它属于什么有自己的想法,atypeof="v:Person。我还需要添加这个声明吗?那么,我是否需要做些什么来说明它与typeof相同,而且确实foaf:Personv:role都描述了相同的东西(我)?
多谢你澄清我的困惑。

最佳答案

注意foaf:person是一个类型或类,在rdfa中通过@typeof属性表示。另一方面,dc:creator、foaf:name、v:role是放置在RDFA的@property属性中的属性。通常,您首先在HTML中键入对象(例如,一个人),然后通过属性提供其属性,如名称或角色。类型通常以upercase(foaf:person)开头,而属性以小写(foaf:name)开头。
问题1:您可以将同一属性属性中的所有属性用空格分隔,而不是为每个新属性添加新的跨度元素:

<span property="foaf:name dc:creator">Carl Boettiger</span>

在语义网络的某个地方说dc:creator是foaf:person的一个子集吗?
首先,这个例子并不足够,dc:creator是一个属性,foaf:person是一个类型,但是假设我们在讨论foaf:agent和foaf:person,foaf:person规范说明foaf:person是foaf:agent:http://xmlns.com/foaf/spec/#term_Person的子类,词汇表可能定义了这种关系。还有一些跨词汇映射,它们有时定义不同词汇的类和属性之间的关系。
我是否需要以某种方式链接到这样的声明?
不,你通常不必这么做。
问题2:请注意,不推荐使用http://rdf.data-vocabulary.org而使用schema.org词汇表:http://schema.org/docs/full.htmlhttp://schema.rdfs.org/
我还需要添加这种类型的声明吗?那么,我是否需要做些什么来表示它与foaf:person相同,而且实际上v:role和foaf:name都描述了相同的东西(我)?
一般来说,在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/

07-24 09:54