图数据库的知识表示与推理

图形数据库及其技术生态系统可以为知识表示和推理问题提供优雅,有效的解决方案。 要了解这种说法,我们必须首先了解什么是图形。 图是一种数据结构。 图数据结构的类型很多,但出于本文的目的,我们将重点介绍一种已被称为属性图的类型 。 属性图表示顶点(节点,点)和边缘(弧,线)。 对属性图中的边进行定向和标记/键入(例如“马科知道彼得”)。 顶点和边缘(通常称为元素)都可以具有与之关联的任意数量的键/值对。 这些键/值对称为属性。 通过这种基础结构,可以回答一系列问题并解决问题。

对象建模

property-graph-1
属性图数据结构的形式几乎与面向对象编程的对象图相同。 收集对象,删除它们的方法,然后剩下一个属性图。 对象的字段是原始字段,在这种情况下用作属性,或者它们很复杂,在这种情况下用作对其他对象的引用。 例如,在Java中:

class Person {String name;Integer age;Collection<Person> knows;
}

这个名字年龄的属性是特定人实例的顶点属性和属性都知道指的知道标记的边缘给其他人。 Neo Technology的 Emil Eifrem拥护一种观点,即属性图与现代面向对象语言的语义以及开发人员使用的绘图技术保持一致,因此是“白板友好的”。 泰勒·科 万 ( Taylor Cowan )的jo4neo项目就是对这一想法的证明。 在jo4neo中,Java注释被优雅地用于允许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}

概念建模

分类1
从组成模型的实例来看,可能存在抽象概念。 例如,尽管可能存在书籍实例,但也可能存在那些书籍所属的类别-例如科幻小说,技术小说,浪漫史等。图形是一种灵活的结构,因为它允许人们表达某种事物与某种事物相关其他的方式。 这些东西可能是真实的,也可能是空灵的。 这样,可以将本体论概念及其实例表示出来并进行适当查询以回答问题。

// 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

自动推理

推理1
根据显式对象,它们之间的关系以及它们的抽象类别,可以制定推理过程。 图建模中存在的一种张力是要进行显式(结构化)和通过遍历(过程)进行推断的结果 。 就像许多计算一样,权衡是在空间和时间之间进行的。 如果某人与其共同作者之间存在优势,那么从该人与其共同作者之间只有一步之遥。 另一方面,如果必须通过共享著作推断出合著者,则需要执行多跳步骤来确定合著者。 推理是使隐含的事物显式化的过程。 下面使用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.type='role'; author.name='author'
g.V.foreach{it.outE('wrote').inV[0].foreach{g.addEdge(null, it, author, 'hasRole')} >> -1}

在上面的示例中,计算了完整的图表分析以确定所有共同作者和作者角色。 但是,没有什么可以阻止对本地推理算法的评估。

// Marko's 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的世界主要限于描述逻辑 (请参阅此处的相反论点)。 描述逻辑只是知识表示和推理这一更大领域的一部分。 有许多逻辑可以利用。 在图数据库的新兴空间中,存在必要的构建块来支持对其他逻辑的利用。 此外,在某些情况下,这些逻辑可以在同一图形结构内同时使用。 至此,下面的阅读清单提供了一些书籍,这些书籍阐明了有关异构推理的不同逻辑和思想。 图形数据库提供了一个实现这些想法的绿色领域。

进一步阅读

  • Brachman,R.,Levesque,H.,“ 知识表示与推理 ”,Morgan Kaufmann,2004年。
  • Wang,P.,“ 刚性灵活性:智能的逻辑 ”,Springer,2006年。
  • 美国东部时间Mueller,“ 常识推理 ”,Morgan Kaufmann,2006年。
  • Minsky,M.,“ 心灵学会” ,Simon&Schuster,1988年。

翻译自: https://www.javacodegeeks.com/2014/06/knowledge-representation-and-reasoning-with-graph-databases.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决win2003安装exchangeServer后关机慢的方法

在windows2003上安装exchange2003&#xff08;或者是exchange2000&#xff09;后&#xff0c;很多用户发现服务器关闭变得非常之慢……很不幸的是&#xff0c;我也遇到了这个问题。从日志中的错误信息来分析&#xff0c;和目录服务先于某些服务终止有关。在微软的KB上查了一下&…

vegas 为盖斯

vegas 为盖斯 S键 分割素材U键 分开视频和音频I键渲染开始O渲染结束 默认布局 为盖斯新建项目的参数 剪好后渲染 插入字幕 转载于:https://www.cnblogs.com/GaoNa/p/10562504.html

简单配置 docker swarm

简单配置 docker swarm #准备三台CentOS7 #IP划分 192.168.1.201 virtualBox1 192168.1.202 virtualBox2 192168.1.204 virtualBox3 #三台机器上分别安装docker docker安装 #三台机器上分别配置加速器 vim /etc/docker/daemon.json #该文…

css图片的全屏显示代码-css3

<!DOCTYPE html><html lang"en">  <head>     <meta charset"UTF-8">     <title>Title</title>     <style type"text/css" rel"stylesheet">       *{margin: 0;pad…

COMET彗星(三)构建自己的COMET核心

主题列表&#xff1a; COMET彗星&#xff08;一&#xff09;SERVER PUSH介绍 COMET彗星&#xff08;二&#xff09;基于SERVER PUSH的消息传输 引言&#xff1a; 在上一篇随笔中&#xff0c;对COMET使用的类和作用进行了简短的介绍&#xff0c;从本篇随笔开始&#xff0c;将从实…

如何在JavaServer Pages中使用Salesforce REST API

摘要&#xff1a;本教程提供了一个JSP示例以及如何将其与Salesforce REST API集成。 我们将逐步完成创建外部客户端以使用Force.com &#xff08;同时使用HTTP&#xff08;S&#xff09;和JSON&#xff09;管理您的数据的分步过程。 在此示例中&#xff0c;我将Mac OS X 10.9.…

写在08年“愚人节”

从博客园学了很多东西&#xff0c;是时候该回馈了。谢谢博客园给我们提供这么好的平台交流技术。 刚发了文章习惯性的看了下自己博客的首页代码&#xff0c;感觉日历不够精良。 我做过的一个ajax日历&#xff0c;可以参考解放日报 艺术家具版的日期直达功能的日历&#xff0c;用…

19.3.20 解决pycharm快捷键无法使用问题和熟悉git与码云操作流程

problem&#xff1a;由于Vim插件导致快捷键无法使用&#xff1b; answer&#xff1a;settings→Plugins→搜索到ideaVim→取消选中→apply→重启pycharm&#xff1b; git&#xff1a;创建仓库→生成公钥&#xff08;ssh-keygen -t rsa -C "962891994qq.com"&#xff…

JQuery实现点击按钮切换图片(附源码)--JQuery基础

JQuery实现切换图片相对比较简单&#xff0c;直接贴代码了哈&#xff0c;有注释噢&#xff01;疑问请追加评论哈&#xff0c;不足之处还请大佬们指出&#xff01; 1、案例代码&#xff1a; demo.html&#xff1a; <!DOCTYPE html><html><head>   <me…

Java EE陷阱#1:忽略@Singleton的默认锁定

EJB Singleton Bean是EJB 3.1规范引入的&#xff0c;通常用于存储缓存的数据。 这意味着&#xff0c;我们尝试通过使用Singleton来提高应用程序的性能。 总的来说&#xff0c;这很好。 特别是在并行调用不多的情况下。 但是&#xff0c;如果我们忽略默认锁&#xff0c;并且并行…

js左右对联

相当着急的找了一早上&#xff0c;幸好有原来的代码作为基础&#xff0c;不害怕。<script>function initEcAd() {document.all.AdLayer1.style.posTop -200;document.all.AdLayer1.style.visibility visibledocument.all.AdLayer2.style.posTop -200;document.all.AdL…

cocos2d-x 横屏、竖屏(以及基于传感器)、读写sd卡

一、横屏、竖屏设置&#xff08;以及基于传感器的&#xff09; AndroidManifest.xml文件中&#xff0c; 1、不论任何情况的&#xff1a; screenOrientation"landscape" 为横屏 screenOrientation"portrait"为竖屏 …

CSS3盒子模型

web前端必须了解的CSS3盒子模型 1、需要了解的属性以及属性值 display:box或者display:inline-box box-orient:horizontal | vertical (水平 垂直) 定义盒模型的布局方向 box-direction:normal reverse(正序 反序) 元素排列顺序 box-ordinal-group:number(数值) 设置元素…

与JBoss Fuse,Jenkins和Nexus的持续集成

最近&#xff0c;我正在整理一个快速启动的Maven项目&#xff0c;以展示一种组织JBoss Fuse项目的可行方法。 该项目可在Github上找到&#xff1a; https &#xff1a; //github.com/paoloantinori/fuse_ci 这是我与朋友詹姆斯罗林斯 &#xff08; James Rawlings&#xff09…

回家

好啦&#xff0c;搞笑的2008年过去了&#xff0c;拿完年终奖&#xff0c;回家过年吧。 去年这个年还真有意思&#xff0c;先有冰冻&#xff0c;后有地震&#xff0c;还有奥运。 好的也有&#xff0c;坏的也有&#xff0c;不过不管怎么样&#xff0c;我们还是撑过来了。 08年也没…

HDFS优缺点

HDFS架构简述 一、HDFS简介 HDFS&#xff08;Hadoop distributed File System&#xff09;&#xff1a;Hadoop分布式文件系统。是基于流数据模式访问和处理超大文件的需要而开发的&#xff0c;可以运行于廉价的服务器上。它所具有的高容错&#xff0c;高可靠性&#xff0c;高可…

Python学习_线程Thread学习 GIL锁 队列queue 线程池

进程和线程的目的&#xff1a;提高执行效率IO操作利用极少量CPUIO密集型(不用CPU)&#xff1a;多线程计算密集型(用CPU)&#xff1a;多进程1、单进程单线程&#xff0c;主进程&#xff0c;主线程2、自定义线程&#xff1a; 主进程&#xff1a; 主线程 子线程进…

html5表单与PHP交互

1、示例代码 前端&#xff1a; <!DOCTYPE html><html><head><meta charset"utf-8"> <title>html5表单与PHP交互</title></head><body><form action"http://localhost/jh.php" method"post"…

文件加密 1

一、 1、NTFS分区才能使用EFS加密&#xff1b; 2、我的电脑&#xff0d;&#xff0d;工具&#xff0d;&#xff0d;文件夹选项&#xff0d;&#xff0d;查看&#xff0d;&#xff0d;取消简单文件共享&#xff1b; 3、右键点击要加密的文件或文件夹&#xff0d;&#xff0d;属性…

Java中抽象类和接口之间的区别

一些受欢迎的访谈问题是“抽象类和接口之间有什么区别”&#xff0c;“什么时候使用抽象类以及什么时候使用接口”。 因此&#xff0c;在本文中&#xff0c;我们将讨论这个主题。 在探讨它们之间的差异之前&#xff0c;让我们先介绍一下它们。 抽象类 创建抽象类以捕获子类的…