珠海网站建设电话,代理公司注册代理,企业类网站模板免费下载,网页游戏奥奇传说知识图谱 图数据库 推理图形数据库及其技术生态系统可以为知识表示和推理问题提供优雅#xff0c;有效的解决方案。 要了解这种说法#xff0c;我们必须首先了解什么是图形。 图是一种数据结构。 图数据结构的类型很多#xff0c;但出于本文的目的#xff0c;我们将重点介绍… 知识图谱 图数据库 推理 图形数据库及其技术生态系统可以为知识表示和推理问题提供优雅有效的解决方案。 要了解这种说法我们必须首先了解什么是图形。 图是一种数据结构。 图数据结构的类型很多但出于本文的目的我们将重点介绍一种已被称为属性图的类型 。 属性图表示顶点节点点和边缘弧线。 对属性图中的边进行定向和标记/键入例如“马科知道皮特”。 顶点和边通常称为元素都可以具有与之关联的任意数量的键/值对。 这些键/值对称为属性。 通过这种基础结构可以回答一系列问题并解决问题。 对象建模 属性图数据结构的形式几乎与面向对象编程的对象图相同。 收集对象删除它们的方法然后剩下一个属性图。 对象的字段是原始字段在这种情况下用作属性或者它们很复杂在这种情况下用作对其他对象的引用。 例如在Java中 class Person {String name;Integer age;CollectionPerson knows;
} 这个名字和年龄的属性是特定人实例的顶点属性和属性都知道指的知道标记的边缘给其他人。 Neo Technology的 Emil Eifrem支持这样一种观点即属性图与现代面向对象语言的语义以及开发人员使用的绘图技术保持一致因此是“白板友好的”。 泰勒·科 万 Taylor Cowan 的jo4neo项目证明了这一想法。 借助jo4neoJava注释被优雅地用于允许Neo4j图形数据库支持Java对象图。 除了技术优势外人类的思维还倾向于根据对象及其关系进行思考。 因此图形也可以被认为是“对人脑友好的”。 给定一个对象图可以回答有关领域的问题。 在称为Gremlin的图遍历DSL中 我们可以问对象图的问题 // Who does Marko know?
marko.outE(knows).inV// What are the names of the people that Marko knows?
marko.outE(knows).inV.name// What are the names and ages of the people that Marko knows?
marko.outE(knows).inV.emit{[it.name, it.age]}// Who does Marko know that are 30 years old?
marko.outE(knows).inV{it.age 30}概念建模 从组成模型的实例来看可能存在抽象概念。 例如尽管可能存在书籍实例但也可能存在那些书籍所属的类别例如科幻小说技术小说浪漫史等。图形是一种灵活的结构它允许人们表达某些事物与某事物有关其他的方式。 这些东西可能是真实的也可能是空灵的。 这样可以将本体论概念及其实例表示出来并进行适当查询以回答问题。 // What are the parent categories of history?
x []; history.inE(subCategory).outV.aggregate(x).loop(3){!it.equals(literature)}; x// How many descendant categories does fiction have?
c 0; fiction.outE(subCategory).inV.foreach{c}.loop(3){true}; c// Is romance at the same depth as history?
c 0; romance.inE(subCategory).outV.loop(2){c; !it.equals(literature)}.outE(subCategory).inV.loop(2){c--; !it.equals(history)}; c 0自动推理 从显式对象它们的关系和抽象类别中可以制定推理过程。 图建模中存在的张力是要使之显式结构和通过遍历过程进行推断的内容 。 就像许多计算一样权衡是在空间和时间之间进行的。 如果某人与其共同作者之间存在优势那么从该人与其共同作者之间只有一步之遥。 另一方面如果必须通过共享著作推断出合著者则需要执行多跳步骤来确定合著者。 推理是使隐含的内容显式化的过程。 下面使用Gremlin给出了两个简单的推理示例。 // Two people who wrote the same book/article/etc. are coauthors
g.V{x it}.outE(wrote).inV.inE(wrote).outV.except([x])[0].foreach{g.addEdge(null, x, it, hasCoauthor)}// People who write literature are authors
author g.addVertex(); author.typerole; author.nameauthor
g.V.foreach{it.outE(wrote).inV[0].foreach{g.addEdge(null, it, author, hasRole)} -1} 在上面的示例中计算了完整的图表分析以确定所有共同作者和作者角色。 但是没有什么可以阻止对本地推理算法的评估。 // Markos coauthors are those people who wrote the same books/articles/etc. as him
marko.outE(wrote).inV.inE(wrote).outV.except([marko])[0].foreach{g.addEdge(null, x, it, hasCoauthor)}结论 图形可用于建模对象它们之间的关系以及它们所在的概念结构。 从该显式信息中可以评估图查询和推理算法以回答图上的问题并增加图内包含的显式知识的密度即增加顶点和边的数量。 在RDF 知识表示和RDFS / OWL 推理的世界中已广泛利用了这种特定的图形使用模式。 RDF / RDFS / OWL的世界主要限于描述逻辑 请参见此处相反的说法。 描述逻辑只是知识表示和推理领域的一小部分。 有许多逻辑可以利用。 在图数据库的新兴空间中存在必要的构建块来支持对其他逻辑的利用。 此外在某些情况下这些逻辑可以在同一图形结构中同时使用。 至此下面的阅读清单提供了一些书籍这些书籍阐明了有关异构推理的不同逻辑和思想。 图形数据库提供了实现这些想法的绿色领域。 进一步阅读 BrachmanR.LevesqueH.“ 知识表示与推理 ”Morgan Kaufmann2004年。 WangP.“ 刚性灵活性智能的逻辑 ”Springer2006年。 美国东部时间Mueller“ 常识推理 ”Morgan Kaufmann2006年。 MinskyM.“ 心灵学会” SimonSchuster1988年。 翻译自: https://www.javacodegeeks.com/2014/06/knowledge-representation-and-reasoning-with-graph-databases.html知识图谱 图数据库 推理