我知道这听起来非常新手,但即使在浏览过RDF的W3学校的一些教程并阅读了这些初级读物之后,我似乎无法理解如何用XML表达简单的主谓词 - 对象rdf关系。 / p>
假设我有这样一个概念:
我有一辆车。 我的车有一个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>
这是怎么写的?我理解的是主题,对象和谓词如何映射到元素和属性中。
一旦我对它进行了整理,最终我希望“car”成为它自己的架构,所以我只能参考它的命名空间,然后说“我自己的汽车模型ABC车牌DEF现在就是在12.34坐标“。
请告诉我们一些消息?在我的智慧结束时,周围没有人似乎知道rdf或本体来启发我: - (答案 0 :(得分:6)
我同意其他响应者的说法,你不应该担心XML语法,但我也不建议立即考虑三元组。首先要清楚地思考你想要建模的事情,然后三元组会更加明显。
所以,你有一个东西,你的车,这是一种汽车。作为一般的汽车,特别是你的汽车,是两种不同的概念。因此,您需要两个不同的名称 - RDF称它们为资源 - 以表示所有汽车的类别和汽车的实例。同样地,有些东西通常是GPS,特别是你车内的GPS。假设一个合适的命名空间,那么:
:car127 rdf:type :Car .
:gps99 rdf:type :GPS.
这是一个三重表达一个给定的汽车(主题car127
)是(谓词rdf:type
)所有汽车的类(对象Car
)的成员,并且类似于全球定位系统。
你的车由Nina拥有,Nina是一个人。所以这是另外两个关系,一个说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
类型的资源之间存在关系(':读取')(注意大写R - 这是区分识别类与其他类型资源的资源的惯例)。该读取资源具有四个属性:类型,观察到的lat和long,以及读取的时间。如果我们想要的话,我们可以为其他时间点添加更多的读数,这将构建一个轨道......但这是另一个讨论!
答案 1 :(得分:3)
我会尽量不考虑你需要XML的样子,规范允许多种方式来序列化相同的信息,所以我会尝试在三元组中思考它。
所以对你的例子来说:
:Me :owns :MyCar .
:MyCar :hasPart :GpsReceiver .
:MyCar :hasXPosition "x" .
:MyCar :hasYPosition "y" .
这是表达它的一种相当基本的方式,并且还有像皮埃尔所建议的其他选择。
RDF中的所有内容都表示为三元组,因此请尝试考虑如何在三元组中表示数据,然后使用可用的库/工具为您生成RDF / XML等序列化。
答案 2 :(得分:0)
我会写(忽略命名空间decl)
<rdf:RDF >
<!-- about 'me' -->
<my:Owner rd:about="http://example.com/me">
<my:has rdf:resource="http://example.com/thecar"/>
</my:Owner>
<!-- about the car -->
<my:Car rdf:about="http://example.com/thecar">
<my:hasPosition>
<my:Gpsreceiver>
<my:X>somevalue</my:X>
<my:Y>somevalue</my:Y>
</my:Gpsreceiver>
</my:hasPosition>
</my:Car>
</rdf:RDF>
验证您的rdf