• 知识图谱学习笔记(2)


      一、知识图谱的基础概念1:RDF

    RDF(Resource Description FrameWork),就是资源描述框架,它的本质是一个数据模型(Data Model)。它提供了一个统一的标准,用于描述实体/资源。简单来说,就是表示事物的一种手段和方法。RDF在形式上表示为SPO三元组,有时候也称为一条语句(statment),在知识图谱中我们称之为一条知识)

      Subject ---------------------------Predicate-------------------------------->Object

    其中RDF由节点和边组成,节点表示实体/资源、属性,边则表示实体和实体之间以及实体和属性之间的关系。

      二、RDF序列化的方法

    RDF的表示形式和类型有了,那我们如何创建EDF数据集,将其序列化呢(Serialization)呢?换句话说,就是我们怎么存储和传输RDF数据。目前,RDF序列化的主要方式有:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD等几种方式。  

      (1)RDF/XML,顾名思义,就是XML的格式来表示RDF数据,之所以用到这个方法就是因为XML技术比较成熟,有很多现成的工具来存储和进行解析XML。然而,对于RDF来说,XML的格式太冗长,也不便于阅读,通常我们不会使用这种方式来处理RDF数据。

      (2)N-Triples,就是用三元组的方式来表示RDF数据集,是最直观的表述方法。在文件中每一行表示一个三元组,方便机器的解析和处理。开放知识领域的图谱DBpedia通常是用这种格式来发布数据的。

      (3)Turtle,是用的最多的一种RDF序列化的方式了。他比RDF/XML紧凑,并且可读性比N-Triple要好一些。

      (4)RDFa,即"The Resource Description Framework in Attributes",是HTML5的一个扩展,在不改变任何显示效果的情况下,能够让网站构建者在页面中标记实体,像人物、时间、地点、评论等等。也就是说,将RDF数据嵌入到网页中,搜索引擎能够更好的解析非结构化的页面,获取一些有用的结构化信息。

      (5)JSON-LD,j就是"JSON for Linking Data",用键值对的方式来存储RDF数据

    接下来我们结合罗纳尔多的例子,进行N-Triples和Turtle的具体表示。

    N-Triples;
    <http://www.kg.com/person/1<http://www.kg.com/ontology/chineseName>"罗纳尔多.路易斯"

     

    Proteger工具介绍使用

      1.Protege简介:

        (1)Protege软件是斯坦福大学医学院生物信息中心基于java语言开发的本体编辑和本体开发工具,也是基于知识的编辑器,属于开放的源代码软件

        (2)这个软件主要用于语义网中本体的构建,是语义网中本体构建的核心开发工具。

      2.Protege使用:

        (1)Protege是一组自由开源的工具软件,用于构建模型与基于知识的文本化应用程序。

        (2)Protege提供了大量的知识模型架构与动作,用于创建、可视化、操纵各种表现形式的本体

        (3)可以通过用户定制实现域-友好(领域相关)的支持,用于创建知识模型并填充数据。

        (4)相比于其他的本体构建工具而言,Protege最大的好处是在于支持中文,在插件上,用OntoGraf可以实现中文关系的显示。

      3.Protege用途

        (1)类建模:Protege提供了一个图形化用户界面来建模类(领域概念)和他们的属性以及关系

        (2)示例编辑(Instance editing):从这些类中,Protege自动产生交互式的形式,全用户或领域转件进行有效的实例编辑成为可能。

        (3)模型处理:Protege有一些插件库,可以定义语义、解答查询以及定义逻辑行为。

        (4)模型交换(Model exchange):最终的模型(类和实例)能以各种各样的格式被装在和保存,包括XML、UML和资源描述框架RDF

        4.Protege的使用

      (1)建立新的本体。

        第一步:建立新的本体。

            打开Protege软件之后(界面上显示如图所示),便是新建文本的界面;

            或者,可以在菜单里面的选择File->New ... 新建一个本体

        第二步:构建类。

            1.Protege的主页面中,点击Entities页面,进入本体的编辑界面;

            2.在Entities页面,选择Classes标签(默认情况下用户看到的是该标签的页面),进入类及其层次的编辑页面

            3.在Classes页面,右键点击owl:Thing,选择Add Subclasses...,在出现的对话框中Name标签后输入类的名字,然后点击确定;

            4.在Classes页面点击一个类名,在protege右侧Description部分修改跟该类相关的属性值

        第三步:建立子类。

            1.在"人物"上右键点击,选择Add subclass...;

            2.在弹出的对话框中输入子类的名称,如"禅师",点击确定,在Classes界面显示类的层次

            3.如果需要就删除某个类,点击该类,然后点击删除图案进行相应的删除

        第四步构建类之间的关系。

            因为人物和地点是不同的事物,即他们具有排他性,下面定义该关系。

            1.在选中"人物"的状态下,在Entities界面的右侧Description部分点击DisjointWith后面 的加号

            2.在弹出的界面中,展开owl:Thing,选择"地点",然后点击确定。这样人物和地点就有相互排斥的属性了

        第五步  建立对象属性

            添加属性名称:

              1:在Entities界面选择Object properties标签,进入对象属性的编辑界面

              2.在owl:topObjectProperty上右键点击,选择"Add Sub-Properties.."

              3.在弹出的界面中,输入属性的名称,例如"曾住",点击"Continue",再点击"Finish",便建好了属性。

            为属性添加domain和range属性值

              1.在Object properties界面,选择一个属性,例如"曾住";

              2.在Entities界面的右侧Description模块中点击Domain后的加号;

              3.在弹出的界面中选择"人物",点击确定,这样为"曾住"加了domain约束;

              4.类似地,点击Description中后的加号,选择"地点"。

        第六步:建立数据属性:

              1.在Entities界面选择Data properties标签,进入数据属性的编辑界面;

              2.在owl:topDataProperty上右键点击,选择"Add sub-properties...";

              3.在弹出的界面中,输入属性名称,例如法号,点击"Continue",再点击"Finish",便已经建好了属性;

              4.在Data properties界面,选择一个属性,例如"法号";

              5.在Entities界面的右侧Description模块中点击Range后的加号;

              6.在弹出的界面中,选择"Built indataypes",从中挑选xsd:string,再点击确定,即限制该属性的取值范围是字符串;建立数据属性类似于建立对象属性,主要是在家range时的约束条件不同。

        第七步:建立实例

            添加实例机及其类型

              1.在Entities界面选择Individual标签,进入实例的编辑界面

              2.单机Individuals界面的菱形图标,在弹出的界面输入实例的名字,如"佛印大师",点击确定

              3.在Entities的右侧界面的Description部分,点击Types后面的加号,在出现的界面中选择Class           Hierarchy标签,从类层次中选择"禅师"。这样实例就有了类型约束。

            添加实例之间的关系,以"佛印禅师"为例

              1.在Individuals界面选择实例"佛印禅师",在Entities界面右侧的Property assertions部分点击Object             property assrttions旁边的加号    

              2.在弹出的界面分别输入一个对象属性的名字(如"曾住")和一个实例名字(如"镇江金山寺"),点击确定。这样,使得"佛印禅师"与"镇江金山寺"通过"曾住"关联起来了。    

            添加实例添加属性值,以"苏轼"为例

              1.在Individuals界面选择"苏轼",在Entities界面右侧的"Property assertions"部分点击Data property assertions旁边的加号(类似添加是李建关系的操作);

              2.在弹出的界面中,在左侧选择数据属性(如"别名"),右侧填写属性值(如"苏东坡、东坡"),点击确定。这样,便为实例"苏轼"的属性"别名"添加了具体的值,即"苏东坡、东坡"

            第八步:保存本体

              1.在菜单选择File--->Save;

              2.在弹出的界面中,选择"RDF/XML Syntax"

              3.在新出现的界面中,在在文件名处输入本体的名字,例如kgexample,文件类型是"OWL File",点击保存

            第九步:可视化。

              1.在菜单中选择Windows->Tabs->OntoGraf;

              2.在出现的界面中,点击加号可以进行展开,鼠标移到线上,可以显示此线代表的关系名称。

            第十步:推理

              1.在菜单中选择Reasoner

              2.在出现的界面中,选择HermiT,然后点击Start reason

              3.推理得到的信息就会在对应的描述中显示出来

              例如:本体中给出裴文德和裴林是人物的实例,裴林是裴文德的父亲,父亲的domain是人物,range是男人,因此可以推导出裴林是男人的一个实例。

              4.对于推理出来的信息,如果想知道为什么能被推理机推到出来,可以点击推到信息后面的问号

              5.解释的原因会在新的对话框中进行显示

  • 相关阅读:
    误删表空间处理办法
    一步步开发网站系列-网站界面
    webstorm ftp发布问题
    TP5接受Vue跨域请求
    tp5上传图片添加永久素材到微信公众号
    将博客搬至CSDN
    swoole http_server 多进程并使用多进程处理消息
    高并发下,php与redis实现的抢购、秒杀功能
    SVN服务器搭建
    web服务器安全笔记
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9613809.html
Copyright © 2020-2023  润新知