我刚刚读了这篇文章,它提到一些组织有一个本体作为(?)他们的数据库(?)层,并且这样做的决定很糟糕。问题是我以前没有听说过这个,所以我不明白为什么它很糟糕。
所以我尝试在谷歌上搜索数据库和本体,并从 2006 年得到了相当多的 pdf 文件,其中充满了难以理解的内容(在我看来)。我读了其中的一些,此时仍然完全不知道他们在说什么。
我目前的印象是,2006 年一些学者想向我们推销是一种疯狂的时尚,但由于他们想法的措辞而惨遭失败。但是我仍然很好奇是否有人真的知道这实际上是关于什么的。
Karussell 已经提供了维基百科的定义:
“通过域内的一组概念以及这些概念之间的关系对知识的正式表示”。
为了实现这样的表示,已经开发了几种语言。目前最受关注的可能是Web Ontology Language (OWL)。
在传统的关系数据库中,可以使用表来存储概念,但系统不包含有关概念的含义以及它们如何相互关联的任何信息。本体确实提供了存储此类信息的方法,这允许以更丰富的方式存储信息。这也意味着可以构建相当高级和智能的查询。SPARQL等查询语言是专门为此目的而开发的。
对于我的硕士论文,我使用过 OWL 本体,但这是一项相当学术研究的一部分。我不知道目前是否在实践中大量使用了这项技术,但我确信潜力是存在的。
关于本体的“意义”和推理的一个例子:假设你在本体中定义了一个类Pizza
和一个类Vegetarian Pizza
,这是一个Pizza
没有Ingredients
属于该类的类Meat
。如果你现在创建了一个Pizza
恰好没有任何肉类成分的 a 实例,系统可以自动推断你的披萨也是 a Vegetarian Pizza
,即使你没有明确指定它。
好吧,它仍然不是很清楚,但我想我明白你的意思。如果您拥有专门的软件而不是基于 SQL 的数据库,那么它是一种存储所有元数据以及数据(?)的雪花数据库,这听起来很合理。看起来确实很难优化,但是对于现在所有的 NoSQL,它可能会有一些用处。
是的,我知道,基础不是很困难,但最初很难理解。如果你真的想体验一下,我建议你下载一个像 Protégé 这样的 OWL 编辑器,然后找一个教程(我记得看过一个教程,里面有很多关于 Pizza 的模型,试着搜索一下)。这将使您更好地了解“关系”和“含义”在这种情况下的含义。
@RobertGould Daan 似乎专注于本体成员的一些有趣的集合数学;这真的很酷。然而,对于某些人来说,关系方法最初更容易掌握。我有一个传统的“家谱”答案,重点是如何存储关系;但是,它使用了非常原始的本体论特征(用于说明目的)。我喜欢将本体视为图形数据库,将集合数学应用于节点。它们是完全灵活的,导致混乱的想法创建混乱的代码的问题。