版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章:知识图谱数据管理:
存储与检索《知识图谱》配套讲义1提纲知识图谱大数据知识图谱数据模型RDF图模型属性图模型知识图谱数据的存储基于表结构的存储基于图结构的存储知识图谱数据的检索声明式查询语言过程式查询语言Neo4j使用简介总结2提纲知识图谱大数据知识图谱数据模型RDF图模型属性图模型知识图谱数据的存储基于表结构的存储基于图结构的存储知识图谱数据的检索声明式查询语言过程式查询语言Neo4j使用简介总结3知识图谱知识图谱是一种有向图结构,描述了现实世界中存在的实体、事件或者概念以及它们之间的相关关系。实体:CristianoRonaldo,JosDinisAveiro,RealMadridCF、马赛约等实体类型:人物、国家、城市、组织机构等属性:人物有姓名、性别、出生日期、兴趣爱好、职业等属性;国家有国庆日、国家代码、货币、时区、等属性关系:人物和人物间的同事关系、人物和国家间的国籍关系、城市和国家间的属于关系等4知识图谱中的知识表示知识图谱中的知识是通过RDF的结构进行表示的,其基本构成单元是事实三元组,每个事实被表示为一个形如<subject,predicate,object>的三元组。subject:主体(也称主语),其取值通常是实体、事件或者概念中的任何一个predicate:谓词(也称谓语),其取值通常是关系或者属性object:客体(也称宾语),其取值既可以是实体、事件、概念,也可以是普通的值(如数字、字符串等)5知识图谱中的知识表示(示例)知识图谱中的知识是通过RDF的结构进行表示的,其基本构成单元是事实,每个事实被表示为一个形如<subject,predicate,object>的三元组。实体:Pepe,RealMadridCF、Maceio属性:gender,height,dateofbirth,capacity,shortname,creationdate,area,elevation,postalcode属性值:male,1.88m,1983/02/26,81,044,RM,1902/03/06,511km²,7m,57000-000关系:team,placeofbirth6知识图谱中的知识表示(示例)知识图谱中的知识是通过RDF的结构进行表示的,其基本构成单元是事实,每个事实被表示为一个形如<subject,predicate,object>的三元组。7LinkedIn知识图谱:图数据属性(自身性质)拓扑结构(相互关系)8广泛应用的大规模图结构数据9应用方向:社交网络
人立方关系搜索博客分析
论坛观点挖掘
网络舆情监控10应用方向:路径规划求取首都机场到中科院自动化所乘地铁的最短距离或最快交通线路11应用方向:生物学图结构在生物学上已经得到广泛应用基因调控网络(基因之间的相互作用关系所形成的网络)蛋白质PPI(蛋白质相互作用网络)12应用方向:有机化学化合物的性质与复杂化学反应的分析13应用方向:软件剽窃检测目前软件剽窃检测的新方法是基于图模式匹配,将代码先转化为程序依赖图,然后再通过图匹配方法进行检测14应用方向:健康医疗大数据运用健康医疗大数据构建知识图谱15大规模图数据特点“4V”特点规模浩大(Volume)生成快速(Velocity)种类繁多(Variety)可靠性(Veracity)倾斜的度分布小世界现象不清晰的社区结构16大规模图数据特点倾斜的度分布17大规模图数据特点小世界现象RegularRingNetworkAverageof4.1“hops”Small-WorldNetworkAverageof3.1“hops”RandomNetworkAverageof2.5“hops”18大规模图数据特点不清晰的社区结构理想的社区结构实际的社区结构19大图数据新型特点局部特征多样性关联数据复杂性拓扑结构时变性20知识图谱:大规模图数据大规模知识图谱数据的发布百万顶点(106)和上亿条边(108)LinkedData1,239个知识图谱(2019-03-29)/2007-52014-82020-521知识图谱的目标是构建一个能够刻画现实世界的知识库,为自动问答、信息检索等应用提供支撑。因此,对知识的持久化存储并提供对目标知识的高效检索是合格的知识图谱(系统)必须具备的基本功能。知识图谱数据管理22知识图谱数据管理知识图谱数据模型RDF图模型属性图模型知识图谱数据的存储基于表结构的存储基于图结构的存储知识图谱数据的检索声明式查询语言过程式查询语言23目录知识图谱大数据知识图谱数据模型RDF图模型属性图模型知识图谱数据的存储基于表结构的存储基于图结构的存储知识图谱数据的检索声明式查询语言过程式查询语言Neo4j使用简介总结24知识图谱数据模型数据模型逻辑组织结构(structure)操作(operation)约束(constraint)知识图谱数据模型是图数据模型的继承和发展知识图谱数据模型基于图结构,顶点表示实体,边表示实体间的联系刻画现实世界中事物的广泛联系图数据模型:𝐺=
(𝑉,𝐸)理论基础:图论层次数据模型(hierarchicaldatamodel)网状数据模型(networkdatamodel)关系数据模型(relationaldatamodel)数据模型决定了数据管理所采取的方法和策略对于存储管理、查询处理、查询语言设计均至关重要知识图谱数据模型RDF图模型属性图模型25知识图谱数据模型RDF图模型RDF三元组:(𝒔,𝒑,𝒐)∈(𝑼∪𝑩)×𝑼×(𝑼∪𝑩∪𝑳)RDF图G:RDF三元组的有限集合实体集合属性/关系集合文字型对象26知识图谱数据模型G={(屠呦呦,type,药学),(屠呦呦,Birth_date,1930-12-30),(屠呦呦,Citizenship,中国),(屠呦呦,Name,”屠呦呦”),(诺贝尔医学奖,Awarded,屠呦呦),(诺贝尔医学奖,type,NobelPrizes),(诺贝尔医学奖,Name,Nobel
Prize
in
Physiology
or
Medicine),(诺贝尔医学奖,Location,Stockholm,Sweden),(诺贝尔医学奖,Reward(s),9millionSEK(2017)}9个三元组
RDF图模型27知识图谱数据模型RDF图模型没有对顶点和边上属性的内置支持如何表示边上的属性?“具体化”(reification,CVT)顶点与边交集非空:3-uniform
hyper-graph(3均匀超图)28知识图谱数据模型属性图模型属性图G是5元组:𝑮
=
(𝑽,
𝑬,
𝝆,
𝝀,
𝝈)V:顶点的有限集合E:边的有限集合𝝆:
𝑬
→
(𝑽
×
𝑽):将边关联到顶点对𝝀:
(𝑽
∪
𝑬)
→
𝑳𝒂𝒃:为顶点或边赋予标签𝝈:
(𝑽
∪
𝑬)
×
𝑷𝒓𝒐𝒑
→𝑽𝒂𝒍:为顶点或边关联属性29知识图谱数据模型属性图模型V={v1,v2},E={e1}ρ(e1)=(v2,v1)λ(v1)=药学家,λ(v2)=NobelPrizesσ(v1,Name)=‘屠呦呦’,σ(v1,birth_date)=1930-12-30,σ(v1,citizenship)=中国σ(v2,Name)=‘NobelPrizes’,σ(v2,Location)=‘Stockholm,Sweden’,σ(v2,Reward)=9millionSEK(2017)30知识图谱数据模型[王鑫,天津大学,知识图谱数据管理]31知识图谱数据模型知识图谱数据模型典型示例更类似RDF图模型的图谱:Freebase更类似属性图模型的图谱:WikiData32目录知识图谱大数据知识图谱数据模型RDF图模型属性图模型知识图谱数据的存储基于表结构的存储基于图结构的存储知识图谱数据的检索声明式查询语言过程式查询语言Neo4j使用简介总结33知识存储方式以类别为中心:基于表的存储关系数据库以实体为中心:基于图的存储RDF为基础的SemanticWeb可相互转换姚明Person中国上海type出生地配偶type国籍叶莉1980年9月12日出生年月34目录知识图谱大数据知识图谱数据模型RDF图模型属性图模型知识图谱数据的存储基于表结构的存储基于图结构的存储知识图谱数据的检索声明式查询语言过程式查询语言Neo4j使用简介总结35三元组表知识图谱中的事实是一个个的三元组,一种最简单直接的存储方式是设计一张三元组表用于存储知识图谱中所有的事实。36三元组表特性基于三元组表的存储方式的优点是简单直接,易于理解;然而缺点也非常明显,主要有以下几点:每个字段包含不同类型、不同结构的数据。整个知识图谱都存储在一张表中,导致单表的规模太大。对大表进行查询、插入、删除、修改等操作的开销很大,这将导致知识图谱的实用性大打折扣。复杂查询在这种存储结构上的开销巨大。由于数据表只包括三个字段,因此复杂的查询只能拆分成若干简单查询的复合操作,大大降低了查询的效率。例如,查询“佩佩的身高和性别是什么?”需要拆分为“佩佩的身高是多少?”和“佩佩的性别是什么?”37三元组表的六重索引六重索引SPO、SOP、PSO、POS、OSP、OPSHexastore[Weiss08,VLDB],RDF-3X[Neumann08,VLDB]优点:三元组模式查询(triplepattern)的高效执行任意两个三元组模式的高效归并连接(merge-join)问题:6倍空间开销?更新维护代价38类型表为每种类型构建一张表,同一类型的实例存放在相同的表中。表的每一列表示该类实体的一个属性,每一行存储该类实体的一个实例。39类型表的不足大量数据字段的冗余存储。假设知识图谱中既有“演员”也有“歌手”,那么同属于这两个类别的实例将会同时被存储在这两个表中,其中它们共有的属性会被重复存储。大量的数据列为空值。通常知识图谱中并非每个实体在所有属性或关系上都有值,这种存储方式会导致表中存在大量的空值。多值属性不便于存储。40考虑层级关系的类型表构建数据表时,将知识图谱的类别体系考虑进来。具体来说,每个类型的数据表只记录属于该类型的特有属性,不同类别的公共属性保存在上一级类型对应的数据表中,下级表继承上级表的所有属性。41类型表特性类型表克服了三元组表面临的单表过大和结构简单的问题,但是也有明显的不足之处:由于数据表是和具体类型对应的,不同的数据表具有不同的结构,因此在查询之前必须知道目标对象的类型才能确定查找的数据表。当查询涉及到不同类型的实体时,需要进行多表的连接,这一操作开销巨大,限制了知识图谱对复杂查询的处理能力。知识图谱通常包含丰富的实体类型,因此需要创建大量的数据表,并且这些数据表之间又具有复杂的关系,这为数据的管理增加了很大的难度。42关系数据库基本概念关系数据库以二维表结构对数据进行组织和存储。属性(attribute):表中的每一列称为一个属性(也称字段),用来描述实体集的某个特征。每个属性都有自己的取值范围,称为域。元组(tuple):表中的每一行由一个实体的相关属性取值构成,称为元组(也称记录),它相对完整地描述了一个实体。元组中的一个属性值称为分量。学号姓名性别出生日期身份证号1101李强男1995-09-223101031995092223171202张红女1995-11-074101041995110724371303王鹏男1996-04-0851010519960408222343关系数据库基本概念上述二维表格有以下限制:每一属性必须是基本的、不能再拆分的数据类型,如整型、实型、字符型等。结构或数组不能作为属性的类型。44上述二维表格有以下限制:每一属性必须是基本的、不能再拆分的数据类型,如整型、实型、字符型等。结构或数组不能作为属性的类型。姓名籍贯省市李强黑龙江齐齐哈尔张红浙江杭州王鹏江西南昌姓名省市李强黑龙江齐齐哈尔张红浙江杭州王鹏江西南昌X√关系数据库基本概念45上述二维表格有以下限制:每一属性必须是基本的、不能再拆分的数据类型,如整型、实型、字符型等。结构或数组不能作为属性的类型。属性的所有值必须是同类型、同语义的。如果某一列包含学生的学号,则该表中所有行的此列都必须是学生的学号。属性的值只能是域中的值。例如学生的性别只能在“男”或“女”中取值。属性必须有唯一的名字,但不同的属性可以出自相同的域。列在表中的顺序可以任意交换。关系数据库基本概念46上述二维表格有以下限制:每一属性必须是基本的、不能再拆分的数据类型,如整型、实型、字符型等。结构或数组不能作为属性的类型。属性的所有值必须是同类型、同语义的。如果某一列包含学生的学号,则该表中所有行的此列都必须是学生的学号。属性的值只能是域中的值。例如学生的性别只能在“男”或“女”中取值。属性必须有唯一的名字,但不同的属性可以出自相同的域。列在表中的顺序可以任意交换。学号姓名性别出生日期入学日期1101李强男1995-09-222017-09-011202张红女1995-11-072017-09-011303王鹏男1996-04-082017-09-01关系数据库基本概念47上述二维表格有以下限制:每一属性必须是基本的、不能再拆分的数据类型,如整型、实型、字符型等。结构或数组不能作为属性的类型。属性的所有值必须是同类型、同语义的。如果某一列包含学生的学号,则该表中所有行的此列都必须是学生的学号。属性的值只能是域中的值。例如学生的性别只能在“男”或“女”中取值。属性必须有唯一的名字,但不同的属性可以出自相同的域。列在表中的顺序可以任意交换。任意两个元组的值不能完全相同,即不允许有重复的行。行在表中的顺序可以任意交换。关系数据库基本概念48关系数据库属性分类候选码:能够唯一标识元组的最小的属性集合。唯一性:候选码在整个表的范围内必须具有唯一的值,不同元组不能具有相同的候选码值。最小性:候选码所包括的属性必须都是必不可少的,缺少其中的任何一个都不再具备唯一性。例如,在上表中学生的学号、身份证号分别都可以作为候选码;但是(学号,身份证号)这一属性组不能作为候选码,因为去掉其中任何一个剩下的属性仍然可以作为候选码,因此不满足最小性。学号姓名性别出生日期身份证号1101李强男1995-09-223101031995092223171202张红女1995-11-074101041995110724371303王鹏男1996-04-0851010519960408222349主码:一个数据表可以包含多个候选码,从中任意选取一个作为主码。虽然理论上所有的候选码都可以作为主码,但是实际操作中一般选择单属性组成的候选码作为主码。在该表中有三个候选码:学号、身份证号、姓名(不重名)。姓名作主码还是有些限制(不能重名);身份证号太长,使用不方便;学号简洁,使用方便,在实际生活中也被用来唯一区分学生,所以选学号作主码最合适。学号姓名性别出生日期身份证号1101李强男1995-09-223101031995092223171202张红女1995-11-074101041995110724371303王鹏男1996-04-08510105199604082223关系数据库属性分类50外码:如果数据表中的某个属性或属性组是其它表的候选码,那么称该属性或属性组是当前表的外码。外码能够保证不同数据表之间数据的一致性。班号是班级表的候选码,所以班号是学生表的外码。主属性与非主属性:包含在任何候选码中的属性称为主属性;相反地,不包含在任何候选码中的属性称为非主属性。学号姓名性别出生日期班号1101李强男1995-09-22111202张红女1995-11-07121303王鹏男1996-04-0813班号班名专业11数学01应用数学12物理01理论物理13化学01材料化学学生表(外表)班级表(主表)关系数据库属性分类51关系数据库完整性约束关系数据库通过关系完整性约束条件来保证数据的正确性和一致性。所谓关系完整性约束条件主要是指在表和属性(列)上定义的规则,数据库管理系统会依据这些约束条件维护数据完整性。域完整性规则实体完整性规则参照完整性规则52域完整性:在关系数据模型定义时,由用户对属性值的数据类型、长度、单位、精度、格式、值域范围、是否允许为空值等进行限定,规定属性取值必须在其值域中。学号姓名性别出生日期班号1101李强男1995-09-22111202张红女1995-11-07121303王鹏211996-04-0813学号类型定义属性限定学号char(4)PrimaryKey姓名nvarchar(20)NotNull性别nchar(1)NotNull,男/女出生日期datetime>=1900-01-01班号char(2)NotNullX关系数据库完整性约束53实体完整性:元组(记录)在构成主码的属性上不能有空值且主码的值不能相同。实体完整性主要是为了确保主码能唯一标识元组。学号姓名性别出生日期班号1101李强男1995-09-22111202张红女1995-11-07121303王鹏男1996-04-08131102孙丽女1996-01-29111202赵刚男1995-10-2012X√关系数据库完整性约束54参照完整性:一个外表的外码取值必须是其主表主码的存在值或空值。学生表中班号的取值必须是空值或在班级表中班号属性中出现过的值。如果学生表的班号字段允许为空,它取空值表示该学生还没有确定班级;否则只能取班级表出现过的班号值。学号姓名性别出生日期班号1101李强男1995-09-22111202张红女1995-11-07121303王鹏男1996-04-0813班号班名专业11数学01应用数学12物理01理论物理13化学01材料化学学生表(外表)班级表(主表)关系数据库完整性约束55关系数据库操作语言关系数据库的基本操作语言是SQL。SQL语言以简洁的语法支持关系数据库的各类操作(插入/修改/删除/查询)。SQL语言独立于关系数据库本身,独立于使用的机器、网络和操作系统。如果选择关系数据库作为知识图谱的存储引擎,那么对知识图谱的所有操作都需要转换为SQL语句才能执行。56关系数据库基本操作关系数据库通过SQL语言为用户提一系列的操作接口,其核心功能包括插入、修改、删除、查询四种操作。插入(INSERT):在一个表中插入一条或多条新记录。修改(UPDATE):在一个表中修改满足条件的记录的某些字段的值。删除(DELETE):从一个表中删除一条或多条满足条件的记录。查询(SELECT):从一个或多个表中提取满足条件的数据、生成计算列或汇总数据。57常见的关系数据库存储系统DB2:DB2是IBM公司于1983年推出的数据库管理系统,能够运行于各种不同的操作系统平台上,如Windows、Linux、VMS、OS/2等。该数据库的特色之处包括支持面向对象的编程、支持多媒体应用、支持分布式数据库的访问等。更多信息请参考DB2官网:/analytics/us/en/technology/db2/Oracle:Oracle是甲骨文公司于1979年推出的关系数据库管理系统,是目前最流行的数据库之一。该数据库遵循标准SQL语言,支持多种数据类型。和DB2相同,Oracle同样具有跨平台的特点,可以运行于不同的操作系统之上。更多信息请参考Oracle官网:/database/index.html58MicrosoftSQLServer:MicrosoftSQLServer是微软公司推出的应用于Windows操作系统的数据库产品,该数据库实际上是微软基于Sybase公司提供的技术开发而成的,因此完全兼容Sybase数据库。更多信息请参考MicrosoftSQLServer官网:/zh-cn/sql-server/sql-server-2016PostgreSQL:PostgreSQL是一个自由软件系统,和上面几个数据库系统相比,该系统具有开源、免费的特点。由于PostgreSQL可以免费地被使用、修改和分发,因此其具有非常完善的功能,不仅支持大部分的SQL标准,还提供外键、复杂查询、触发器等特性。更多信息请参考PostgreSQL官网:/常见的关系数据库存储系统59MySQL:MySQL也是一个自由软件系统,最早是由瑞典的MySQLAB公司开发的小型关系数据库管理系统,在2008年被Sun公司收购。该系统由于具有体积小、速度快、跨平台、免费开源等特点,是中小型网站最为青睐的数据库。更多信息请参考MySQL官网:/常见的关系数据库存储系统60目录知识图谱大数据知识图谱数据模型RDF图模型属性图模型知识图谱数据的存储基于表结构的存储基于图结构的存储知识图谱数据的检索声明式查询语言过程式查询语言Neo4j使用简介总结61基于图结构的存储模型将实体看做节点,关系看做带有标签的边,那么知识图谱的数据很自然地满足图模型结构。用节点表示实体:刘德华、刘青云、Film:暗战用边表示实体间的关系:刘德华和暗战之间的参演关系、刘德华和刘青云之间的朋友关系等节点可以定义属性:刘德华性别男、身高174cm、出生地香港等边上也可以定义属性:刘德华参演暗战的时间是1999年,参演角色是张彼得等无向关系需要转化为两条对称的有向关系:刘德华和刘青云之间互为朋友关系62图数据库核心概念图数据库基于有向图,其理论基础是图论。节点、边和属性是图数据库的核心概念。节点:节点用于表示实体、事件等对象,可以类比于关系数据库中的记录或数据表中的行数据。例如人物、地点、电影等都可以作为图中的节点。边:边是指图中连接节点的有向线条,用于表示不同节点之间的关系。例如人物节点之间的夫妻关系、同事关系等都可以作为图中的边。属性:属性用于描述节点或者边的特性。例如人物的姓名、夫妻关系的起止时间等都是属性。63基于图结构的存储模型图数据模型:节点、边、节点属性、边属性节点存储(nodestore)关系存储(relationshipstore)属性存储(propertystore)问题:单机系统可扩展性不足,图查询复杂度高64常见的图数据库存储系统Neo4j:Neo4j是一个开源的图数据库系统,它将结构化的数据存储在图上而不是表中。Neo4j基于Java实现,它是一个具备完全事务特性的高性能数据库,具有成熟数据库的所有特性。Neo4j是一个本地数据库(又称基于文件的数据库),这意味着不需要启动数据库服务器,应用程序不用通过网络访问数据库服务,而是直接在本地对其进行操作,因此访问速度快。因其开源、高性能、轻量级等优势,Neo4j受到越来越多的关注。更多信息请参考官网:/65OrientDB:OrientDB是一个开源的文档-图混合数据库,兼具图数据库对数据强大的表示及组织能力和文档数据库的灵活性及很好的可扩展性。OrientDB具有多种模式可选,包括全模式、无模式和混合模式。全模式要求数据库中的所有类别都必须有严格的模式,所有字段都强制约束;无模式则相反,不需要为类别定义模式,存储的数据记录可以有任意的字段;混合模式则允许为类别定义若干字段,同时支持自定义字段。该数据库同样是本地的,支持许多数据库的高级特性,如事务、快速索引、SQL查询等。更多信息请参考官网:/常见的图数据库存储系统66HyperGraphDB:HyperGraphDB同样是开源的存储系统,并依托于BerkeleyDB数据库。和上述图数据库相比,HyperGraphDB最大的特点在于HyperGraph,即超图。从数学角度讲,有向图的一条边只能指向一个节点,而超图则可以指向多个节点。实际上,HyperGraphDB在超图的基础上更进了一步,不仅允许一条边指向多个节点,还允许其指向其它边。如此以来,HyperGraphDB相较于其它图数据库具有更强大的表示能力。更多信息请参考官网:/常见的图数据库存储系统67InfiniteGraph:InfiniteGraph是一个基于Java语言开发的分布式图数据库系统。和MySQL等传统关系数据库类似,InfiniteGraph需要作为服务项目进行安装,应用程序只能通过访问数据库服务对数据库进行操作。InfiniteGraph借鉴了面向对象的概念,将图中的每个节点及每条边都看做一个对象。具体地,所有的节点都继承自基类BaseVertex,所有的边则都继承自基类BaseEdge。更多信息请参考官网:/products/infinitegraph/常见的图数据库存储系统68InfoGrid:InfoGrid是一个开源的互联网图数据库,提供了很多额外的组件,可以很方便地构建基于图结构的网络应用。InfoGrid实际上是一个基于Java语言的开源项目集,其中InfoGrid图数据库项目是其核心,其它的项目包括InfoGrid存储项目、InfoGrid用户接口项目等。更多信息请参考官网:常见的图数据库存储系统69InfoGrid:InfoGrid是一个开源的互联网图数据库,提供了很多额外的组件,可以很方便地构建基于图结构的网络应用。InfoGrid实际上是一个基于Java语言的开源项目集,其中InfoGrid图数据库项目是其核心,其它的项目包括InfoGrid存储项目、InfoGrid用户接口项目等。更多信息请参考官网:和成熟的关系数据库相比,图数据库的发展较晚,相关的标准及技术尚不完善,在实际使用中可能会遇到一些棘手的问题,因此在选用数据库时除了需要考虑数据库本身的特性、性能等因素以外,还需要考虑数据库的易用性、技术文档的完整性等因素。常见的图数据库存储系统70目录知识图谱大数据知识图谱数据模型RDF图模型属性图模型知识图谱数据的存储基于表结构的存储基于图结构的存储知识图谱数据的检索声明式查询语言过程式查询语言Neo4j使用简介总结71知识图谱查询语言知识图谱查询语言RDF图 SPARQL属性图CypherPGQLG-COREGremlin声明式语言过程式语言72语义网回顾本质:以Web数据的内容(即语义)为核心,用机器能够理解和处理的方式链接起来的海量分布式数据库。73RDF回顾RDF(ResourceDescriptionFramework,资源描述框架)是一种资源描述语言,其核心思想是利用Web标识符(URI)来标识事物,通过指定的属性和相应的值描述资源的性质或资源之间的关系。图1只包含一个三元组的RDF图示例74SPARQL语言SPARQL是SimpleProtocolandRDFQueryLanguage的缩写,是由W3C为RDF数据开发的一种查询语言和数据获取协议,是被图数据库广泛支持的查询语言。和SQL类似,SPARQL也是一种结构化的查询语言,用于对数据的获取与管理。数据操纵(插入、删除、更新)数据查询75数据操纵数据插入:将新的三元组插入到已有的RDF图中。SPARQL通过INSERTDATA语句完成该功能,其基本语法为:三元组数据可以是多条三元组,不同的三元组通过“;”
分隔。如果待插入的三元组在RDF图中已经存在,那么系统会忽略该三元组。INSERTDATA三元组数据例
将以下两条三元组插入到图1所示的RDF图中。<http://example/movie1>ns:producer<http://example/person2><http://example/movie1>ns:writer<http://example/person3>76其对应的SPARQL语句为:执行该语句后,图1中的RDF图变为:图2SPARQL插入数据结果示例数据操纵77数据删除:从RDF图中删除一些三元组。SPARQL通过DELETEDATA语句完成该功能,其基本语法为:其中三元组数据可以是多条三元组,不同的三元组通过“;”
分隔。对于给定的每个三元组,如果其在RDF图中,则将其从图中删除,否则忽略该三元组。DELETEDATA三元组数据例
将以下三元组从图2所示的RDF图中删除。<http://example/movie1>ns:producer<http://example/person2>数据操纵78其对应的SPARQL语句为:执行该语句后,图2中的RDF图变为:图3SPARQL删除数据结果示例数据操纵79数据更新:更新RDF图中指定三元组的值。和SQL不同,SPARQL没有定义UPDATE操作,也就是说SPARQL语言没有直接更新已有数据的方法。但是,可以通过组合INSERTDATA语句和DELETEDATA语句来实现该功能。DELETEDATA:删除待修改的三元组;INSERTDATA:插入修改后的三元组。例
将图3中三元组(<http://example/movie1>ns:director<http://example/person1>)的客体<http://example/person1>修改为<http://example/person4>。数据操纵80其对应的SPARQL语句为:执行该语句后,图3中的RDF图变为:图4SPARQL更新数据结果示例数据操纵81数据查询SPARQL提供了丰富的数据查询功能,包括四种形式:SELECT:最为常用的查询语句,其功能和SQL中的SELECT语句类似,从知识图谱中获取满足条件的数据。ASK:用于测试知识图谱中是否存在满足给定条件的数据,如果存在则返回“yes”,否则返回“no”,该查询不会返回具体的匹配数据。DESCRIBE:用于查询和指定资源相关的RDF数据,这些数据形成了对给定资源的详细描述。CONSTRUCT:则根据查询图的结果生成RDF。82SELECT语句SELECT语句的基本语法为:SELECT子句中的“变量1变量2...”和SQL中的“列1,列2,...”的含义类似,表示要查询的目标。不同之处在于,SQL处理的数据存储于结构化的二维表中,语句中的“列1,列2,...”和数据表中的列完全对应,因此查询的目标具有明确的语义;而SPARQL处理的数据则具有更加灵活的存储结构,“变量1变量2...”在知识图谱中没有直接的对应。SELECT变量1变量2…
WHERE图模式[
修饰符]83SELECT语句的基本语法为:WHERE子句用于为SELECT子句中的变量提供约束,查询结果必须完全匹配该子句给出的图模式。图模式主要由两类元素组成,一类是三元组,例如“?xaPerson”表示变量?x必须是Person的一个实例;另一类是通过FILTER关键字给出的条件限制,这些条件包括数字大小的限制、字符串格式的限制等。修饰符是可选项,用于对查询结果做一些特殊处理,例如常见的修饰符有用于表示排序的ORDER子句、用于限制结果数量的Limit子句等。SELECT变量1变量2…
WHERE图模式[
修饰符]SELECT语句84例
在图4所示的RDF图中查询资源<http://example/movie1>的导演和编剧。相应的SPARQL语句为:执行该语句的查询结果为:SELECT语句85ASK语句ASK语句用于测试知识图谱中是否存在满足给定图模式的数据,其基本语法为:ASK图模式例
在图4所示的RDF图中测试是否存在由<http://example/person4>导演的电影。相应的SPARQL语句为:该语句返回的结果为“yes”;如果查询是否存在<http://example/person5>导演的电影,查询的结果将会返回“no”。86DESCRIBE语句DESCRIBE语句用于获取和给定资源相关的数据,其基本语法为:DESCRIBE后既可以直接跟确定的资源标识符,也可以跟变量;WHERE子句是可选的,用于限定变量需要满足的图模式。DESCRIBE资源或变量[WHERE图模式]例
在图4所示的RDF图中获取由<http://example/person4>导演的所有电影的相关信息。87其对应的SPARQL语句为:该语句的执行结果为:DESCRIBE语句88CONSTRUCT语句CONSTRUCT语句用于生成满足图模式的RDF图,其基本语法为:RDF图模板确定了生成的RDF图所包含的三元组类型,它由一组三元组构成,每个三元组既可以是包含变量的三元组模板,也可以是不包含变量的事实三元组;图模式则和上述SELECT等语句中介绍的相同,用于约束语句中的变量。该语句产生结果的基本流程为:首先执行WHERE子句,从知识图谱中获取所有满足图模式的变量取值;然后针对每一个变量取值,替换RDF图模板中的变量,生成一组三元组。CONSTRUCTRDF图模板WHERE图模式89例
在图4所示的知识图谱上执行如下SPARQL语句:?movie=<http://example/movie1>?director=<http://example/person4>CONSTRUCT语句90CONSTRUCT语句该语句的执行结果为:91知识图谱查询语言属性图查询语言:Cypher标准化工作:openCypher92知识图谱查询语言属性图查询语言:GremlinApacheTinkerPop图计算框架过程式语言:图遍历、导航式游走更像一种函数式的编程语言接口93知识图谱查询语言属性图查询语言:PGQLOracle在2016年提出:OraclePGX与Cypher相比,PGQL完整地支持正则路径查询语义与SPARQL属性路径仅支持边标签构成的正则路径不同,PGQL通过路径模式(pathpattern)表达式定义,还支持正则路径中含有顶点标签条件以及顶点(或边)属性值比较在提高了属性图上正则路径查询表达力(expressiveness)的同时保持求值复杂度(complexity)不变94知识图谱查询语言属性图查询语言:G-CORELDBC图查询语言工作组设计充分借鉴和融合各种已有图查询语言的优点,在查询表达力和求值复杂度之间寻求最佳平衡G-CORE与已有图查询语言相比查询的输入输出均是图,彻底实现了图查询语言的可组合性(composability)将路径作为与顶点和边同等重要的图查询处理基本元素95目录知识图谱大数据知识图谱数据模型RDF图模型属性图模型知识图谱数据的存储基于表结构的存储基于图结构的存储知识图谱数据的检索声明式查询语言过程式查询语言Neo4j使用简介总结96常见图数据库平台97Neo4j的特点查询语言Neo4jCQL(与Cyper类似)遵循属性图数据模型支持UNIQUE约束包含一个用于执行CQL命令的UI支持完整的ACID规则支持查询数据导出到JSON与XLS格式提供了REST
API,可以被任何编程语言访问支持两种Java
API:CypherAPI和NativeJavaAPI来开发Java应用程序98Neo4j的优点与缺点一、优点易于学习易于表示半结构化数据性能出众,加载数据快,内存占用低,只需选择需要导入的数据,无需考虑数据大小简单而强大的数据模型二、缺点支持节点数、关系和属性有限制不支持SPARQL查询插件支持:/neo4j-contrib/sparql-plugin不支持Sharding99CQL语言CQL为类Cypher的查询语言,neo4j可以使用CQL来进行数据库操作1.数据类型
CQL的数据类型和java基本一致,主要用于定义结点和关系的属性。CQL数据类型用法boolean用于表示布尔类型:true,falseByte用于表示8位整数short用于表示16位整数int用于表示32位整数long用于表示64位整数float用于表示32位浮点数double用于表示64位浮点数char用于表示16位字符String用于表示字符串100Neo4jCQL——节点&关系节点常用’()’表示,’()’内第一个为节点名,可以在后面添加多个标签名,添加标签名需要在每个标签前添加’:’符号关系常用’[]’表示,’[]’内第一个为关系名,可以在后面添加多个标签名,添加标签名需要在每个标签前添加’:’符号(n:player)(player:player)-[re:play_in]->(tea:team)101CQL语言2.常用命令
CQL的常用命令和对应功能如下表:CQL命令用法/功能CREATE创建创建节点,关系和属性MATCH匹配检索有关节点,关系和属性数据RETURN返回返回查询结果WHERE哪里提供条件过滤检索数据DELETE删除删除节点和关系REMOVE移除删除节点和关系的属性ORDER
BY以…排序排序检索数据SET组添加或更新标签102Neo4jCQL——CREATECREATE:创建节点或关系CREATE(<node-name>:<label-name>:...:<label-name>)
//创建无属性节点CREATE(<node-name>:<label-name>{ <property1-name>:<property-value>, <property2-name>:<property-value>, …})//创建有属性节点CREATE(<node1-name>:<node1-label>)-[<relationship-name>:<relationship-label>{<property1-name>:<property-value>,…}]->(<node2-name>:<node2-label>)//创建新的有属性的关系示例:
CREATE(node:player{name:”KobeBryant”,team:”Lakers”,top_score:”81”})CREATE(player:player)-[re:play_in]->(team:team)103Neo4jCQL——MATCHMATCH:用于获取有关节点、关系和属性的数据MATCH(<node-name>:<label-name>)//查找label为label-name的节点MATCH()-[<relationship-name>:<relationship-label>]->()RETURN<relationship-name>//查找label为relationship-label的关系
示例:MATCH(n:player)RETURNn//返回当前所有player节点MATCH(n:player)SETn.citizenship=‘US’//为所有player节点设置属性MATCH(n)DELETEn//删除所有节点MATCH
(n:player)-[re]->()REMOVE
//删除以player起始的关系的属性name注意:MATCH不能单独使用,需要结合RETURN等语句组合使用104Neo4jCQL——RETURNRETURN
用于返回节点或关联关系或它们的某些属性RETURN
<node-name>.<property1-name>, <node-name>.<property2-name>, …示例:MATCH(n:player)RETURNn//返回所有player节点CREATE(nod:team{name:’Lakers’,city:’LosAngeles’})RETURNnod//创建并返回新创建节点MATCH()-[re]->(nod:team)return,nod.city//返回team节点的city属性及指向它的所有关系的name属性注意:RETURN不能单独使用,需要和MATCH等语句组合使用105Neo4jCQL——DELETE&REMOVE&SETDELETE删除节点,删除节点及相关节点与关系DELETE<node-name>DELETE
<relationship-name>示例:MATCH(b)DELETEb//删除所有节点MATCH
(a:team)-[re]->()DELETEre//删除所有以team为起始点的关系REMOVE删除节点或关系的属性或标签REMOVE
<name>.<property1-name>,<node-name>.<property2-name>…示例:MATCH(nod:player)REMOVE
nod.team//删除所有player节点的team属性MATCH
(n:player)-[re]->()REMOVE
//删除以player起始的关系的name属性SET添加或更新节点与关系的属性值(属性值不存在,就添加,否则更新)SET
<name>.<property>=new_value示例:MATCH(n:player)SET
n.citizenship=‘US’//为所有player节点设置属性106Neo4jCQL——WHEREWHERE类似于SQL语句中的WHERE用于过滤MATCH获得的结果WHERE
<condition>示例MATCH(n:player)-[re]->()WHEREn.team=‘Lakers’RETURNre//返回起始节点为team=’Lakers’的player的关系MATCH
(p:player),(t:team)WHEREp.team=
CREATE(p)-[re:play_in]->(t)//创建特定关系
1.条件语句可以使用的BOOL运算符有AND(与),OR(或),NOT(非),XOR(异或)2.条件语句可以使用的比较运算符有=,<,>,<>,<=,>=107Neo4jCQL——ORDER
BY&UNIONORDER
BY对返回结果排序ORDER
BY<name>.<property>注意:不加该语句将会对结果按照返回的第一个属性进行升序排序,在该语句后添加DESC关键字可以获得降序排序。UNION将两组不同的结果合并成一组结果<MATCHComand1> UNION<MATCHComand2>注意:UNION要求查询时列名相同,若不同可以使用AS关键字对列重命名,UNION返回数据中会去掉重复项。108Neo4jCQL——LIMIT&SKIP&INLIMIT&SKIP返回前n个结果&跳过n个结果LIMIT
n&SKIPn示例MATCH(n:player)RETURNnLIMIT25MATCH(n:player)RETURNnSKIP25IN提供值的集合WHERE
<name>.<property>IN[set]
示例MATCH(n:player)WHEREn,top_scoreIN[51,52]109CQL语言2.常用函数
CQL的常用函数和用法如下表:定制列表功能用法String字符串用于使用String字面量Aggregation聚合用于对CQL查询结果执行一些聚合操作Relationship关系用于获取关系的细节,如startnode,endnode等110Neo4jCQL——字符串函数1.UPPER:字母大写UPPER(<input-string>)
示例:MATCH(n:player)RETURNn.UPPER(n,citizenship)2.LOWER:字母小写
LOWER(<input-string>)
示例:MATCH(n:player)RETURNn.UPPER(n,team)3.SUBSTRING:获取子字符串
SUBSTRING(<input-string>,<startIndex>,<endIndex>)
示例:MATCH(n:player)RETURNn.SUBSTRING(,0,1)111Neo4jCQL——聚合函数1.COUNT:返回MATCH得到的行数
COUNT(<value>)
示例:MATCH(n:player)RETURNCOUNT(n)2.MAX&MIN:返回MATCH返回的结果的一组最大值/最小值
MAX(<property-name>)
示例:MATCH(n:player)RETURNMIN(n.top_score)3.SUM:返回MATCH得到的所有行的和SUM(<property-name>)
示例:MATCH(n:player)RETURNSUM(n.top_score)4.AVG:返回MATCH得到的所有行的平均值AVG(<property-name>)
示例:MATCH(n:player)RETURNAVG(n.top_score)112Neo4jCQL——关系函数1.STARTNODE&ENDNODE:用于直到关系的开始节点/结束节点
STARTNODE
(<relationship-label-name>)
示例:MATCH(n)-[re]->(b)RETURNENDNODE(re)2.ID:获得关系的ID
ID
(<relationship-label-name>)
示例:MATCH(n)-[re]->(b)RETURNID(re)3.TYPE:用于获取字符串表示中的一个关系的TYPE
TYPE(<relationship-label-name>)
示例:MATCH(n)-[re]->(b)RETURNTYPE(re)113Neo4j——知识图谱的构建1.打开IDEA,新建Java
Project114Neo4j——知识图谱的构建2.打开Project
Structure对话框,导入jar文件点击后输入Neo4j数据库下的lib目录的路径,完成导入115Neo4j——知识图谱的构建3.创建Neo4j数据库4.启动数据库下载的Neo4j数据库位置创建的数据库名称116Neo4j——知识图谱的构建5.定义节点类型player,team6.定义关系类型play_in117Neo4j——知识图谱的构建7.创建新节点playerNode,teamNode,并设置它们的属性8.创建新关系relationship,并设置其属性118Neo4j——知识图谱的构建9.运行代码,创建数据库10.代码运行成功后,打开Neo4j数据库目录下的conf中的配置文件,将第九行内容改为下图所示:创建时的数据库名称119Neo4j——知识图谱的构建11.启动数据库,浏览器访问
http://localhost:7474查看结果120目录知识图谱大数据知识图谱数据模型RDF图模型属性图模型知识图谱数据的存储基于表结构的存储基于图结构的存储知识图谱数据的检索声明式查询语言过程式查询语言Neo4j使用简介总结121知识图谱数据模型数据模型逻辑组织结构(structure)操作(operation)约束(constraint)知识图谱数据模型RDF图模型属性图模型知识图谱数据模型是图数据模型的继承和发展知识图谱数据模型基于图结构,顶点表示实体,边表示实体间的联系刻画现实世界中事物的广泛联系图数据模型:𝐺=
(𝑉,𝐸)理论基础:图论层次数据模型(hierarchicaldatamodel)网状数据模型(networkdatamodel)关系数据模型(relationaldatamodel)数据模型决定了数据管理所采取的方法和策略对于存储管理、查询处理、查询语言设计均至关重要122知识图谱数据模型RDF图模型RDF三元组:(𝒔,𝒑,𝒐)∈(𝑼∪𝑩)×𝑼×(𝑼∪𝑩∪𝑳)RDF图G:RDF三元组的有限集合123知识图谱数据模型属性图模型属性图G是5元组:𝑮
=
(𝑽,
𝑬,
𝝆,
𝝀,
𝝈)V:顶点的有限集合E:边的有限集合𝝆:
𝑬
→
(𝑽
×
𝑽):将边关联到顶点对𝝀:
(𝑽
∪
𝑬)
→
𝑳𝒂𝒃:为顶点或边赋予标签𝝈:
(𝑽
∪
𝑬)
×
𝑷𝒓𝒐𝒑
→𝑽𝒂𝒍:为顶点或边关联属性124知识存储方式以类别为中心:基于表的存储关系数据库以实体为中心:基于图的存储RDF为基础的SemanticWeb可相互转换姚明Person中国上海type出生地配偶type国籍叶莉1980年9月12日出生年月125知识图谱查询语言知识图谱查询语言RDF图 SPARQL属性图CypherPGQLG-COREGremlin声明式语言过程式语言126常见图数据库平台127知识图谱数据管理查询语言的统一分布式存储方案分布式查询处理知识推理的支持大规模知识图谱的更新维护128第九章:知识推理《知识图谱》配套讲义129提纲知识推理概述什么是推理推理方式及分类知识推理典型应用演绎推理:推理具体事实经典逻辑推理基于产生式规则的推理基于概率逻辑学习的推理归纳推理:学习推理规则归纳推理概述归纳逻辑程序设计路径排序算法(PRA算法)关联规则挖掘算法(AMIE算法)知识图谱推理新进展基于表示学习的知识图谱推理基于强化学习的知识图谱推理符号规则与表示学习相融合的知识图谱推理总结130提纲知识推理概述什么是推理推理方式及分类知识推理典型应用演绎推理:推理具体事实经典逻辑推理基于产生式规则的推理基于概率逻辑学习的推理归纳推理:学习推理规则归纳推理概述归纳逻辑程序设计路径排序算法(PRA算法)关联规则挖掘算法(AMIE算法)知识图谱推理新进展基于表示学习的知识图谱推理基于强化学习的知识图谱推理符号规则与表示学习相融合的知识图谱推理总结131作为知识载体的知识图谱物理世界人类世界机器世界能理解言外之意;能创造新说法和新语法;语言系统语言理解与语言生成知识图谱能不能举一反三,自动发现新知识?知识表示与知识推理132作为认知智能重要基础的知识图谱知其然的AI
vs
知其所以然的AI人的大脑依赖所学的知识进行思考、逻辑推理、理解语言知识图谱感知识别判断思考推理生成深度学习学习有智慧的AI有知识的AI推理133基于知识的Agent人类认识世界,这种认识能帮助我们做事。也称认识论、知识论,相对应的是行为论。---认知论人类一直强调人的智能是如何获得的:不是靠反射机制而是对知识的内部表示进行操作的推理过程。---基于知识的Agent领域无关的算法特定领域的内容推理引擎知识库134知识推理示例:渡河背景:一个人带着一匹狼、一只羊和一捆卷心菜来到了河边。他需要过河,但是河边只有一条船,而且他只能带一样东西上船。他不能把狼和羊一起留在河边,也不能让羊和卷心菜一起留在河边,因为在这两种情况下,前者都会吃掉后者。提问:如何用最少的渡河次数把所有东西都带到河对岸?
背景:狮子、老虎、熊三对动物过河,每种动物有妈妈和孩子两个(就是狮子妈妈、小狮子;老虎妈妈、小老虎;熊妈妈、小熊)。而小动物的妈妈不在的话,自己就会被吃掉(例如老虎妈妈不在,小老虎会被狮子妈妈或熊妈妈吃掉)。所有的妈妈都会划船,孩子里面只有小狮子会划船。一艘船上只能同时最多坐两个动物(可以是两个妈妈。提问:请问他们要如何过河才能保全所有的动物?135知识推理示例:Wumpus世界(1)来自书籍《ArtificialIntelligence:AModernApproach(4thEdition)》Wumpus世界是一个由多个房间组成并连接起来的山洞。在洞穴的某处隐藏着一只怪兽(Wumpus),它会吃掉进入它房间的任何人。探险者(Agent)可以射杀怪兽,但是探险者只有一支箭。某些房间是无底洞,任何人漫游到这些房间都会被无底洞吞噬。生活在该环境下的唯一希望是存在发现一堆金子的可能性。性能度量:带着金子爬出洞口+1000,掉入洞被Wumpus吃-1000,采用一个行动-1,用掉箭-10。Agent死亡或出洞,则游戏结束。环境:4*4房间网格,始发[1,1]且向右。1个Wumpus,1/5房间为无底洞,分布均匀。执行器:Agent向前、左转、右转、射箭。136知识推理示例:Wumpus世界(2)传感器:在与无底洞相邻的方格内,Agent能感知到微风(Breeze);在与Wumpus相邻的方格内,Agent能感受到臭气(Stench);在金子所处方格,Agent能感受到闪闪金光(Glitter);当Agent碰到墙时,它感知到碰撞(Bump);当Wumpus被杀死后,它发出的嚎叫声(Scream)。137知识推理示例:Wumpus世界(3)第1步感知:NONE[1,2]和[2,1]安全第2步感知:微风[2,2]或[3,1]洞
回到[1,1]然后去[1,2]138知识推理示例:Wumpus世界(4)第3步感知:臭气[1,3]怪兽和[2,2]安全
射杀怪兽,去往[2,2]第5步感知:臭气,闪光,微风[2,3]金子,[2,4]或[3,3]洞
拿金子,往回走139什么是推理(1)推理是逻辑学、哲学、心理学、人工智能等学科中的重要概念。早在古希腊时期,著名哲学家亚里斯多德就提出三段论作为现代演绎推理的基础。在计算机科学及人工智能领域,推理是一个按照某种策略从已知事实出发去推出结论的过程。推理就是通过已知知识推断出未知知识的过程。140什么是推理(2)推理,逻辑学中指思维的基本形式之一,是由一个或几个已知的判断(前提)推出新判断(结论)的过程,有直接推理、间接推理等。------《现代汉语词典第6版》事件必定有其原因,事件背后必定有其真相。通过推理可以预测未来,甚至确定未来发展的详细过程。任何一个推理都包含已知判断、新的判断和一定的推理形式。作为推理的已知判断叫前提,根据前提推出新的判断叫结论。前提与结论的关系是理由与推断,原因与结果的关系。141什么是推理(3)牛顿的出生地属于哪个国家已知知识:事实公理常识…未知知识:新事实新公理新常识…演绎、归纳、朔因预测、推断、类比142提纲知识推理概述什么是推理推理方式及分类知识推理典型应用演绎推理:推理具体事实经典逻辑推理基于产生式规则的推理基于概率逻辑学习的推理归纳推理:学习推理规则归纳推理概述归纳逻辑程序设计路径排序算法(PRA算法)关联规则挖掘算法(AMIE算法)知识图谱推理新进展基于表示学习的知识图谱推理基于强化学习的知识图谱推理符号规则与表示学习相融合的知识图谱推理总结143知识推理的分类归纳推理与演绎推理归纳推理(induction):归纳是从特殊到一般的过程。所谓归纳推理,就是从一类事物的大量特殊事例出发,去推出该类事物的一般性结论。我们熟知的数学归纳法就是归纳推理的一个典型例子。前提:蓝鲸可以喷射水柱。抹香鲸可以喷射水柱。座头鲸可以喷射水柱。结论:鲸鱼都可以喷射水柱。前提:树木有年轮。乌龟有年轮(龟甲上的环数)。牛马有年轮(年轮在牙齿上)。结论:所有生物都有记录自己寿命长短的年轮。日本科学家发现,人的年轮在脑中。144知识推理的分类归纳推理与演绎推理演绎推理(deduction):演绎是从一般到特殊的过程。所谓演绎推理,就是从一般性的前提出发,通过演绎(即推导),得出具体陈述或个别结论的过程。最经典的演绎推理就是三段论(syllogism),它包括一个一般性原则(大前提)、一个附属于大前提的特殊化陈述(小前提),以及由此引申出的特殊化陈述符合一般性原则的结论。大前提:人工智能学院的学生都会PyTorch。小前提:小李是人工智能学院的学生。结论:小李会PyTorch。145知识推理的分类归纳推理与演绎推理演绎推理(deduction):演绎推理不仅仅局限于三段论,也不只是从一般到特殊的过程。它有着强烈的演绎特性,重在通过利用每一个证据,逐步地推导到目标或以外的结论,多被用于数学物理证明、思维推导等各类应用。例:莎士比亚在《威尼斯商人》中,描写富家少女鲍西亚品貌双全,贵族子弟、公子王孙纷纷向她求婚。鲍西亚按照其父遗嘱,由求婚者猜盒订婚。鲍西亚有金、银、铅三个盒子,分别刻有三句话,其中只有一个盒子放有鲍西亚的肖像。求婚者中谁通过这三句话,最先猜中肖像放在哪个盒子里,谁就可以娶到鲍西亚。
金盒子上说:“肖像不在此盒中。”
银盒子上说:“肖像在铅盒中。”
铅盒子上说:“肖像不在此盒中。”鲍西亚告诉求婚者,上述三句话中,最多只有一句话是真的。如果你是一位求婚者,如何尽快猜中鲍西亚的肖像究竟放在哪一个盒子里?146知识推理的分类归纳推理与演绎推理的区别演绎推理是在已知领域内的一般性知识的前提下,求解一个具体问题或者证明一个结论的正确性。演绎推理得出的结论实际上早已蕴含在一般性知识的前提中,演绎推理只不过是将已有事实揭示出来,因此它不能增殖新知识。相反,归纳推理所推出的结论是没有包含在前提内容中的。这种由个别事物或现象推出一般性知识的过程,是增殖新知识的过程。147知识推理的分类必然性推理与或然性推理:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广州某人行隧道防水工程施工工法
- 《旅游政策法规》课件
- 开题报告:新文科建设背景下的跨学科研究生培养模式研究
- 开题报告:新疆兵团少数民族地区国家语言文字教学成效与质量监测研究
- 2024届辽宁省沈阳市第一七零中学高考数学试题命题揭秘与专题练析
- 2024年度公安局交通管理局道路安全维护合同版
- 2024年度借款协议0223版示例
- 2024年城市供水工程建设项目合同
- 中考地理总复习专题10 东南亚和南亚(梯级进阶练)(解析版)
- 小学二年级第一学期音乐教学计划
- 跨学科视角下中学物理实践活动设计
- 设计师助理工作合同
- 法律法规和其他要求合规性评价表
- 医院临床试验用医疗器械使用记录表
- 2024-2030年中国微风发电行业市场全景分析及投资策略研究报告
- 大学生创业基础智慧树知到期末考试答案章节答案2024年湖北工业大学
- 24《司马光》(教学设计)2023-2024学年统编版语文三年级上册
- 北师大版七年级下册数学全册课件
- 多媒体课件设计与制作智慧树知到期末考试答案章节答案2024年佳木斯大学
- 2024年全国营养师技能大赛河南省赛考试题库(附答案)
- 陕2023TJ077 住宅厨房、卫生间装配式L型构件排气道系统图集
评论
0/150
提交评论