rdf - 新手问题 : how to express relationships with rdf?

标签 rdf

我知道这听起来非常新手,但即使在阅读了有关 RDF 的 W3 学校的一些教程并阅读了入门书之后,我似乎还是无法理解如何在 XML 中表达简单的主谓宾 rdf 关系。

假设我有一个这样的概念:

我有一辆车。
我的车有一个 GPS 接收器。
汽车当前的 GPS 坐标是 X 纬度,Y 经度。

我是否将此表示为

<RDF>
 <Owner Name="me">
  <has>car</has>
 <car>
  <has>gpsreceiver</has>
  <has><cordinates X="somevalue", Y="somevalue"></has>
 </car>
 </Owner>
</RDF>

是这样写的吗?我难以理解的是主语、宾语和谓词如何映射到元素和属性。

一旦我解决了这个问题,最终我希望“汽车”成为它自己的模式,所以我可以引用它的命名空间,然后说“我拥有汽车模型 ABC 车牌 DEF,现在位于 12.34 坐标”。

拜托,请照亮一些?在我的智慧的尽头,我周围似乎没有人知道 rdf 或本体来启发我:-(

最佳答案

我同意其他响应者的意见,即您不应该担心 XML 语法,但我也不建议立即考虑三元组。首先从清楚地思考你要建模的东西开始,然后三元组会更加明显。

所以,你有一个东西,你的车,它是一种车。一般而言,作为任何类型的汽车,特别是作为您的汽车,是两个不同的概念。因此,您需要两个独立的名称——RDF 将它们称为资源——来表示所有汽车的类和汽车的实例。同样,有些东西通常是 GPS 的,特别是您汽车中的 GPS。假设一个合适的命名空间,那么:

:car127 rdf:type :Car .
:gps99 rdf:type :GPS.

这是一个三元组,表示给定的汽车(主体 car127)是所有汽车(对象 rdf:type)的类(谓词 Car)的成员,同样是 GPS 的一个。

你的车归妮娜所有,她是一个人。所以这是另外两个关系,一个说 Nina 是一个人,另一个说 Nina 拥有那辆特定的汽车(通过重复使用相同的资源来识别汽车):
:nina rdf:type foaf:Person.
:nina foaf:name "Nina".
:car127 :ownedBy :nina.

(好吧,我添加了一个额外的三元组来将资源 URI :nina 与名称 Nina 相关联)。

特定的 GPS 是特定汽车的一个组件:
:car127 :containsComponent :gps99.

现在,我们非正式地说 GPS“具有”给定的经纬度位置。很明显,这些会随着时间的推移而改变(如果没有,那就买一辆新车:)。您可以通过将 x 和 y 谓词直接附加到 GPS 资源并重复更新模型中的值来对此进行建模。但是,如果您考虑一下您的 GPS 在特定时间提供一系列读数,它似乎更清晰、更具描述性。然后我们有:
:gps99 :reading [
    rdf:type :Reading;
    :lat 51.14276;
    :long -2.71619;
    :at "2011-09-02T123400"^^xsd:dateTime
].

方括号[...]是一种引入新资源的简写方式,其属性 - 关系 - 我们可以描述,但我们不知道或不关心其身份。从技术上讲,它被称为匿名节点或 bNode,但这不是现在需要担心的细节。注意到从 GPS 设备到类型为 :Reading 的资源之间存在关系 (':reading') 就足够了。 (注意大写的 R - 这是一种区分资源的约定,这些资源标识类与其他类型的资源)。该阅读资源有四个属性:类型、观察到的经纬度和阅读时间。如果我们愿意,我们可以为其他时间点添加更多读数,这将构建轨道建模......但这是另一个讨论!

关于rdf - 新手问题 : how to express relationships with rdf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7284169/

相关文章:

editor - 是否有用于 Notation3 (n3) 文件的独立或离线查看器?

java - 使用 RDF 实现语义搜索

database - 使用 Triplestore 意味着什么

rdf - SPARQL Tracker 无法运行更新,在本体中找不到属性

SPARQL 为缺失字段生成值

python - RDFLib 中的命名空间绑定(bind)

python - 如何在 RDFLib 中为图形添加注释或标签?

SPARQL - 启用推理时获取断言类

java - Stardog 数据库创建给出文件未找到异常

rdf - 从 OWL 本体中获取基本命名空间