如何创建可重用谓词RDF?

问题描述

在这里完成RDF新手的学习,我正在努力了解如何创建明智且可重复使用的谓词。我问了公司的几位专家,但是通过复制对象(例如woman,has_a_bag,pursewoman,has_a,purse),他们的谓词是(唯一的)。

这是我的问题的具体但简单的示例:

man,has a,watch

car,tire

bird,feather

在Protege中,由于公共/共享谓词的存在,汽车不仅具有轮胎,还has a羽毛和手表。如果必须为每个主题配对创建唯一的谓词,这似乎会使RDF的值无效。因此,我确定自己做错了什么。

谢谢!

解决方法

好吧,这里您拥有的东西在技术上肯定可以作为RDF模型。对于要表达的所有不同类型的关系,使用相同的“具有一个”谓词进行建模,与创建如下的SQL表没有什么不同:

     thing |  has_a
  ---------|-----------
    man    |  watch
    bird   | feather
    car    | tire

问题是,以这种方式表示数据是否对您有用。如果您的目标是仅回答诸如“将所有事物及其所拥有的事物给我”之类的查询,那么可以。但是大概您会想了解更多,并查询更具体的问题。

要记住的另一件事是,您对关系之间的关系并不十分精确。您说“男人有手表”。这是否意味着一个人拥有一只手表,或者现在口袋里有一只手表?那鸟和羽毛呢?鸟在拥有,由羽毛组成或其他某种意义上“拥有”羽毛吗?

您苦苦挣扎的很大一部分原因是您的示例不够精确,无法真正表达出您的意思-不仅通过关系的名称,而且还通过主题和宾语:您是说所有男人都有手表,还是一个特定的男人拥有手表,或者一个特定的男人拥有一个特定的手表,或者其他?我指出这一点的原因是,当您开始深入研究此问题并尝试对要在RDF模型中表达的什么进行精确化时,通常会更清楚地知道精确度是多少。关系的唯一,有意义,唯一的名称。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...