什么是本体(数据库)?

27
我正在阅读 这篇文章,它提到某些组织将本体论作为他们的数据库层,而且这个决定是错误的。问题在于我之前从未听说过这件事,因此我无法理解为什么这样做是不好的。
于是我尝试搜索关于数据库和本体论的信息,结果得到了许多2006年的PDF文档,其中充斥着我难以理解的内容。我阅读了其中一些,但目前仍然完全不知道他们在说什么。
我的印象是,这是2006年一些学者想要向我们推销的疯狂风潮,但由于他们表达的方式而失败了。但我仍然很好奇,是否有人真正知道这到底是什么意思。

我也很感兴趣听听关于它的事情。 - Tomislav Nakic-Alfirevic
9个回答

31

Karussell已经提供了维基百科的定义:

“在一个领域内,通过一组概念和这些概念之间的关系的形式化表示来表达知识。”

为了实现这样的表示,已经开发了多种语言。目前获得最多关注的可能是Web Ontology Language (OWL)

在传统的关系型数据库中,可以使用表格存储概念,但系统不包含有关这些概念意义以及它们如何相互关联的任何信息。本体论提供了存储此类信息的手段,这允许更丰富的信息存储方式。这也意味着可以构建相当先进和智能的查询。特定于此目的开发了查询语言,例如SPARQL

我的硕士论文中使用了OWL本体论,但这是作为相当学术的研究的一部分。我不知道这些技术是否当前在实践中被广泛使用,但我相信潜力是存在的。

更新:示例

'意义'和在本体论上进行推理的例子:假设您在本体论中定义了一个类Pizza和一个类Vegetarian Pizza,这是一个不包含属于类MeatIngredientsPizza。如果您现在创建了某个实例的Pizza,它碰巧没有任何肉类成分,则系统可以自动推断您的披萨也是Vegetarian Pizza,即使您没有明确指定。


1
好的,这还不是很清楚,但我想我明白你的意思了。这是一种雪花数据库,它存储所有元数据和数据(?)如果你有专门的软件而不是基于SQL的数据库,这听起来有点合理。它似乎很难优化,但随着现在的NoSQL技术的发展,它可能会有一些用途。 - Robert Gould
1
是的,我知道,基础并不是很难,但最初理解起来确实有些困难。如果你真的想要深入了解它,我建议你下载一个OWL编辑器,比如Protégé,并寻找一个教程(我记得曾经通过一个关于Pizza的建模教程来学习,你可以尝试搜索一下)。那会让你更好地理解在这个上下文中,“关系”和“意义”的含义。 - Daan
@RobertGould Daan似乎专注于本体论成员的一些有趣的集合数学,这真的很酷。然而,对于一些人来说,关系方法更容易最初理解。我有一个传统的“家谱”答案,重点是如何存储关系;但是,它使用非常原始的本体论特性(仅用于说明目的)。我喜欢将本体论视为图形数据库,并应用于节点的集合数学。它们完全灵活,导致混乱的想法创造混乱的代码问题。 - Edwin Buck

10

本体论是描述某一领域中类型、可能存在的实例以及它们之间可能存在的关系和限制的模式(模型)。

一个类比是UML类图,但本体论具有正式的语义,因此可以被机器解释,而不仅仅是人类消费的图表。

示例

类别:项目,人,项目经理。 项目经理是人的子类(显然)。 人和项目是不相交的。

关系:工作于,管理。 管理是“工作于”的子属性。

限制:人们在项目上工作,而不是反过来。 只有项目经理才能管理项目。

这个简单的示例可以进行机器推断,例如如果X管理Y,则我们可以推断Y是一个项目,而X是一个项目经理,因此是一个人。


+1 很好的分类示例!并且对于 UML 的类比非常棒。它让我完全理解了本体论的概念 :) - JosephConrad

5
从前,我曾经把这个问题交给一个优秀的开发者作为任务来回答,因为我的上级相信本体论。但最终并没有得到令人满意的答案,而我的上级在一段时间后被解雇了。我仍然很好奇。
我目前的理解是,本体论是自然语言中的单词(或“实体”)通过不同的关系连接在一起的概念。然后我们将这个想法推广到任何数据库实体上。基本上,我们得不到任何有趣的结果和有用的查询语言。
我可能是错误的。

哈哈!好的,那是对我第三段的问题的一个很好的回答 :) - Robert Gould
如果你想要一个语义网络(本体)的查询语言,那么有几种选择。例如,可以尝试使用SPARQL:(http://www.w3.org/TR/rdf-sparql-query/) - DNA

5
AI的研究人员曾经认为,如果我们想要建立一个能够进行某种思考的系统,我们应该让这个系统知道我们对世界的理解。换句话说,他们希望通过生成一个包含有关我们所知道的概念和实体的信息和简明定义的数据库,将我们自己的对词汇的理解强加给计算机。这样的数据库已经使用了不同的算法进行构建,但是总的来说并不是非常精确。最好看一下已知为最佳的CYC数据库。 http://sw.opencyc.org/ 在框中检查几个单词,看看你得到什么返回结果。 祝一切顺利。

3
链接已损坏。 - banan3'14

2

那么关于维基百科呢?

本体论是在一个领域内一组概念的知识的正式表示,以及这些概念之间的关系。

有关详细信息,请参见“领域本体论”、那个


1
一些上面的评论似乎有些轻视。我在一个真实的产品中使用本体数据库,这是解决问题的唯一方法。本体可以用来创建一个数据库,比如关系型数据库更好地涵盖了现实世界的复杂性。它包含的是“信息”而不是“数据”。当关系复杂且信息集大而不完整时,特别有用。尤其好的是,在一个好的本体数据库中查询机制很巧妙 - 它会智能地使用模式/本体(如任何类层次结构)返回否则无法找到的答案。

1

从生物科学出发,本体论是一个代表一个非常简单的概念的词语,但是用其他不太常用的词语定义。

一组概念及其关系的形式化知识表示

  • 知识表示或“模型”
  • 领域或“主题”
  • 一组概念,即“领域中的事物”
  • 概念之间的关系集合

因此,在计算机科学术语中,它是一个图形,其中节点对应于同一主题的所有事物,带有与主题相关的数据注释,并与其他节点连接以关系注释边缘。

由于它是一种无法很好地适应关系数据库的模型,如果您打算存储本体论,您可能需要使用图形数据库或流行的关系数据库图形存储技术之一。

Ontologizes没有在所有方面取代关系型数据库的主要原因是,关系型数据库提供了一种简单的、即使不太灵活的连接两个项目的方法,外键。虽然这个键不允许很多注释来描述关系,但它限制了数据结构的方法数量,防止人们创建各种关系(这意味着限制了浪费关系的数量),从而使得关系型数据库变得更加易于使用。
例如,在基于本体论的“家谱”数据库中:
- 域是一个家族的家谱 - 模型是家谱中的个人及其关系 - 概念是家庭成员 - 关系是指“母亲”、“父亲”、“兄弟”、“姐妹”等边缘
请注意,现在出现了棘手的部分。你有“母亲”和“父亲”,但“父母”怎么办?如果省略“父母”,你的查找逻辑就会更复杂,所以让我们包括一个新的关系“父母”,这意味着一个人的“母亲”现在有两个链接,“母亲”和“父母”(父亲也是如此)。
那么“祖父母”呢?同样,逻辑上做到这一点会使数据库中的一些信息缺失,但存储它会增加维护数据库的开销。
"叔叔", "阿姨", "姻亲", "岳父"等都可以加入一个新的关系,本体论的优势在于您不受限于希望添加的关系类型;然而,困难在于知道哪些关系直接影响解决方案(如果不直接存储关系,则需要进行多次数据库查找以查找"组合关系",这会导致性能普遍较差)。"

1
很久以前,我使用过斯坦福开发的本体数据库(Protege)来跟踪引用。书籍有作者和引用。引用链接到书籍,并包含页码。作者链接到书籍,书籍有出版商、出版日期和作者链接。文章和视频也是如此。
这个想法是插入一个引用,并可以方便地访问归属信息,这样我就不必再记住下次使用时引用所在的书籍和页码了。
本体数据库提供了一种极好的数据建模方法。但使用它是另一回事。从数据库中提取引用部分需要比从Word文档中复制完整引用和参考信息更多的时间。
要使类似的东西真正有用,只需要将其集成到文字处理器中。(理想情况下,您可以按照正常方式添加引用,然后保存它们以供以后重用,并附带指向使用位置的链接! :__)

-1

虽然我是一个完全的外行,但我认为人工智能研究有着长达50年的历史,并且总是循环往复。

  1. 学者们会做出夸张的预测。
  2. 政府会慷慨资助。
  3. 产生了一些逊色的结果。
  4. 经费被狠狠削减。
  5. 时间过去了。之前的周期被遗忘。回到第 1 步。

我们已经经历了两次这样的循环。也许这一次会不同吧……?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接