2012-03-23 60 views
1

如何在不丢失连接的情况下为RDF中的实体指定一对(或多个)属性? (对不起,我是新手)RDF中的一对属性

例如,我想说的是GPS有纬度和经度的读数,但是我想指定'GPS has(纬度,经度)'而不是' GPS具有纬度'和'GPS具有经度',因为当我有多个读数并且需要知道哪个纬度与哪个经度一致时,它变得有问题。

我已经看过RDF的例子,但是对于我来说这并不是很明显。
谢谢你的指点。

[编辑]经过进一步研究,我跑过了bnode或匿名节点。这会保留配对吗?

回答

4

本质上,除非您使用RDF列表,否则我不强烈建议您出于可用性原因使用RDF列表。好消息是,空白节点可以非常接近你所需要的。举个例子:

:gps :hasReading [ 
      :longitud "x"; 
      :latitude "y"; 
     ] . 

从根本上说这个例子中不产生对,但有两个出未来弧:longitud:latitude创建一个空白点。我想,你需要的是记录多个读数,这可以完美地与这种模式实现:

:gps :hasReading [ 
      :longitud "x1"; 
      :latitude "y1"; 
     ]; 
     :hasReading [ 
      :longitud "x2"; 
      :latitude "y2"; 
     ]. 

此外,如果您需要为阅读,只要你想,你可以添加尽可能多的性能记录额外的属性。

另外,还要考虑寻找到Semantic W3C Geo Effort,在那里你会发现标准表示类似如下:

@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>. 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. 
_:bnode a geo:Point; 
    geo:lat "55.701"; 
    geo:long "12.552". 
+0

太棒了!正是我需要的。谢谢。 – Rolonoa 2012-04-04 18:48:40

1

究竟阻止你使用相同的谓词创建两个三倍。我不明白提供抽象层的原因。但是,如果您需要提供一个容器,其中包含这两个变量,那么我会使用一个包,如果订单无关紧要,或者如果订单确实重要,则可以使用seq。例子here