如何在不丢失连接的情况下为RDF中的实体指定一对(或多个)属性? (对不起,我是新手。)
例如,我想说GPS具有纬度和经度的读数,但我想指定类似'GPS有(纬度,经度)'而不是'GPS有纬度'和'GPS有经度'的东西,因为当我有多个读数并且需要知道哪个纬度与经度相关时会出现问题。
我看过RDF的例子,但对我来说这是不是很明显 谢谢你的任何指示。
[编辑]经过进一步研究,我遇到了bnode或匿名节点。这会保留配对吗?
答案 0 :(得分:4)
基本上,除非您使用我强烈不建议出于可用性原因的RDF列表,否则您无法执行此类操作。好消息是,使用Blank节点,您可以非常接近您的需求。一个例子:
: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".
答案 1 :(得分:1)
究竟是什么阻止你创建具有相同谓词的两个三元组。我不明白提供抽象层的原因。但是如果你需要提供一个包含变量的容器,那么我会使用一个包,如果订单无关紧要,或者seq如果订单确实重要。示例here。