使用显式RDF属性

时间:2015-07-21 19:20:21

标签: rdf rdfs

我不确定如何解释以下RDF三元组的语义。我能正确地解释它们吗?

示例A

Subject - Predicate - Object
Tom     -    age    -   24 

我可以读到这个,因为谓词年龄的值为24.这似乎不直观。但是,我也可以读到这一点,因为24与谓词时代的汤姆有关,这对我来说具有更好的语义意义。

示例B

Subject -   Predicate    -  Object
Tom     -  HasProperty   -    age
age     -   HasValue     -    24 

这表明年龄是汤姆的财产。此属性的值为24.这明确了年龄与Tom的关系。

在一个例子中,age是谓词,在另一个例子中,它是一个对象。在这两种情况下,通过在示例B中添加显式属性,编码的信息或多或少相同。

1 个答案:

答案 0 :(得分:0)

是的,你正确地解释它们。

两个例子都编码相同的信息(即汤姆的年龄是24岁)。在第一个例子中,这是通过直接二元关系完成的。在一阶谓词逻辑中重写它:

age(tom, 24)

在第二个例子中,关系已经被引入一个对象,它有效地读取

HasProperty(Tom, age) 
HasValue(age, 24)

第一种方法的一个优点是它(显然)更短,更直接可解释。第二种方法的一个可能的优点是,由于关系age是一个对象,你可以说更多关于它的东西。例如,除了声明其值(数字)之外,您还可以通过添加一个简单的附加声明轻松添加其表示的度量单位:

HasUnit(age, DogYears)

或三重形式:

age  - HasUnit - DogYears

当然,在第二个示例中,您假设只有Tomage。毕竟,如果我们添加有关名为Dick 26的人的知识,并且我们要重复使用关系标识age,我们就会得到:

HasProperty(Tom, age)
HasProperty(Dick, age)
HasValue(age, 24)
HasValue(age, 26)

现在,我们如何判断谁是24岁,谁是26岁?你不能,因为他们都链接到同一个关系对象。因此在实践中,当以这种方式重新建立关系时,可以使关系对象成为关系的特定出现。例如:

HasProperty(Tom, ageOfTom)
IsA(ageOfTom, age) 
HasValue(ageOfTom, 24)

HasProperty(Dick, ageOfDick)
IsA(ageOfDick, age) 
HasValue(ageOfDick, 26)