在RDF中,类与谓词或属性不同。这样做有什么好处,而不仅仅是拥有一个可以在任何三联中出现作为主语,谓语或宾语的东西?
编辑:例如:
1 book has chapters
2 book1 is book
3 chapter1 is chapter
4a book1 chapter chapter1
在这个例子中,chapter既是对象(在语句3中),也是谓词(在语句4a中)。有些人声称这不是一个好主意。
这些陈述的含义非常明显 - 一本书有章节,book1是一本书,chapter1是章节,book1有一章叫做chapter1。另一个建议是用4b替换上面的4:
4b book1 has chapter1
然而,这需要更多的努力来解析/理解:如果书有章,书有作者,书有出版社,那么声明如下 book1有foo 需要做更多工作才能搞清楚(我们必须发现foo是一个作者,以确定book1的作者是foo)。更好的是,我可以避免上面的陈述3,因为陈述4告诉我第1章是一章。
此模式通常出现在包含数据和元数据的图表中。使用1,2,4a和1,2,3,4b有什么不利之处吗?我看到的唯一问题是这违反了属性和类(主题/对象)之间的区别,但这实际上对我们有何影响?
答案 0 :(得分:3)
我在这里并不完全理解你的问题。 RDF数据模型基于三种术语:
当你开始讨论类时,你不再使用纯RDF了,因为你正在使用类似RDFS或OWL的模式语言来定义类的概念。使用这些更高级别的模式语言的主要原因是它允许您更清楚地定义限制和关系,并且可能使用某些推理。
无论某个类是否是某个类,对它在三元组中出现的位置的唯一限制是术语类型。例如,我可以写下以下内容:
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ex: <http://example.org/> .
ex:Thing a rdfs:Class .
ex:this ex:Thing ex:that .
这是完全合法的RDF,它实际上并不一定能表达对任何人都有意义的数据!
答案 1 :(得分:3)
你的例子(书籍和章节)似乎只是有意义,因为我们使用语言的松散和灵活的方式,以及我们的人类解释(以及你使用占有欲作为例子)
所以,如果我说
Book - Chapter - Chapter1
然后只有出现才有意义,因为我们在心理上将名词章节映射到动词短语“has chapter”,因为我们理解书籍和章节是如何工作的。使用RDF的机器不明白这一点!
但如果我说书人 - 约翰,我们该怎么做呢?约翰是作者,读者,人物之一,还是什么?这就是为什么我们需要指定一个明确的谓词,例如
Book - hasAuthor - John
Book - readBy - John