我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 约束推理 >

JENA操作本体

归档日期:07-08       文本归类:约束推理      文章编辑:爱尚语录

  一个本体允许程序以一种开放有意义的方式明确一个关心的领域里的相关概念和关系。比如“wine”(酒)这个领域的概念,红酒白酒,葡萄品种,酿酒年份,酿酒厂等,关系如“酿酒厂生产酒”“酒有一个生产年份”。这个酒的本体可能被一个特定的应用开发出来。它需要有一个很好的数据元结构,并且可以被发布和重用。

  写一个本体的方法有很多,在实际中,本体的内容很大程度取决于它所支持的应用的种类。Jena中,并不关注一个本体的需要最小的必要组件,而是支持一个更加通用的技术。Jena是一个基础RDF平台。仅支持基于RDF形式的本体。

  Jena本体模型是Jena的RDF模型的拓展,提供了处理本体更加有力的工具。

  将创建一个默认设置的本体模型。(OWL-full,内存存储,RDFS推理)

  OntModelSpec中定义了许多与OWL语言,存储模型以及推理器的相关设置。

  可以从不同的本体文件document中读入本体模型,这些模型中有一个基本模型,这个模型可以将几个本体模型集合起来;对这些模型的管理是分开的。获取基本模型: Model base= myOntModel.getBaseModel();

  每个本体模型都有一个相关的文件管理器,支持本体文件以及相关的处理过程。有一个全局的文件管理器,用来被整个本体模型使用。可以使用OntDocumentManager.getInstance()来取得管理器的引用。也可以分别对每个模型设置文件管理器:

  文件管理器有很多很多的配置参数,有两种自定义方法。第一种,通过代码设置文件管理器实例引用的参数修改配置。第二种,通过manager policy文件修改。

  对于新创建新添加的本体,Jena定义了model maker来允许不同的模型存储方式(内存的,文件的,数据库的)。新的model maker可以使用ModelFactory来创建。

  当基本模型刚创建时,需要使用maker来分配存储空间,当新的模型加入时,需要为他们开辟存储。所以,有两种ModelMaker,一种的是base model maker,一种是imports model maker。

  在Jena内部,使用Graph来作为基础的数据结构,而应用的代码常常总会引用model而不是graphs。Model是Graph的一种封装,提供了一种方便的编程接口(Model)来管理简单的易管理的内部数据结构(Graph)。应将Model视作RDF和本体数据的容器。

  使用本体工作的一个优点是可以重用其他的本体,importing别人已经发布的本体进我们自己的本体。OntModel可以自动地引用这些本体从他们已经发布的URL中。这会使应用启动时有一个延迟。可能会因为网络或者文件移动等等,导致加载失败。为避免此种情况,可以使用Jena的FileManager来管理本地的间接定向,试图从一个Url里导入一个文件。

  这里的意思就是,预先从一个网上URL里下载好别人的本体,然后将它重定向成本地的一个目录URL,在本体加载的时候,虽然还是原来的URL,但是实际访问的却是本地的URL目录下的文件。

  本体API中的代表本体的各种类值的类拥有一个共同的超类 OntResource. 可以把这些类所共享的功能放入OntResource中,对于一些通用的方法可以返回方便的值。java类OntResource继承了Jena的RDF的Resource接口,因而任何接受一个resource或者一个RDFNode的方法,可以接受OntResource,或者,其他的本体值。

  一些通过方法所表达的共有的本体属性资源在OntResource中,如下:

  最后,OntResource类提供了一些方法来list,get,set资源的rdf:type属性,这个值表示,这一个资源属于那个类(在RDF/OWL中,一个资源可以一次属于好多类)。rdf:type属性是许多本体语言的语义模型里定义的推演规则的一种。因此,listRDFTypes()方法的返回值将不仅仅取决于依赖于本体模型的推理器(reasoner)。

  对于一些任务,获取一个资源的所有的RDF types的列表是我们需要的。对于另一些,则不需要。这就涉及到断言类型(asserted types)和推理类型(inferred types)。所谓的断言类型就是在语句中声明过的。而其他的一切都是推理类型。

  类是本体的最基本的构建模块。一个简单的类在Jena里通过一个OntClass的对象来表示。一个本体的类是一个RDF资源的一个方面。将一个普通的RDF资源(convert)为它的类方面可以获得一个本体类。假设,m是一个本体模型OntModel,并且已经加载了本体文件,NS表示本体的名字空间。

  也可以创建一个匿名类 m.getOntClass();  匿名类就是没有URI描述的类。在RDFS中意义不大。

  一旦获取了本体的类对象,就可以开始使用OntClass中的方法来操作它。一个类的属性(attributes)可以以OntResource那个同样的方式来操作。有一系列的set/get/add/test/list/remove方法和返回值。

  代表了本体属性的共同的API超类是OntProperty。它也有一系列的方法来获取属性和方法。

  OWL允许对象属性和数据类型属性是功能性的(Functional),也就是说,对于一个给定的domain里面的实例,range的值将总是一样的(函数的定义域和值域一一对应关系)。例如一个functional属性father,一个实例:jane有一个father :james和:jim,那么推理器就会推出:jim和:jane是一个实例。

  由于所有的属性都是RDFNode对象,所以支持as()方法,可以使用as()方法讲一个对象属性侧面转化为传递属性侧面。OntProperty类有一系列的方法支持直接的转化。asXXXProperty()方法返回一个XXXProperty对象。对于不支持转换的RDF模型,这些方法将抛出一个ConversionException异常。convertToXXXProperty()方法将添加额外的信息(rdf:type 声明)来支持转换的成功。

  上面介绍了处理基本的命名的类。这些是RDFS中唯一可用的类描述;然而在owl中,有一系列的额外的类表达类型,它们可以提供对于概念的更加丰富的描述。有两种主要的额外的类表达式的种类:约束和布尔表达式。

  一个约束定义一个类,通过引用与这个类的成员一致的实例的属性,然后在这个属性上添加约束。目前OWL定义了有六种约束类型:

  all values from 约束属性的所有值,如果有的话,是给定的类的成员。

  some values from 这个属性有至少一个值,是给定类的成员。

  Jena提供了一系列的方法支持创建restrictions,从一个模型中提取它们。首先,可以通过URI从一个本体模型中提取出一个普通的约束。

  RDF最初有三类容器类型(Seq、Alt、Bag),它们都是开放形式(没有固定的元素数目)。后来加入的List

  OWL允许的最后一种类表达式就是枚举类。一个本体类拥有一系列的实例。枚举类就是在类定义的时候,显式地将类的实例也定义了,例如三原色这个类的实例,就只是红绿蓝这三种颜色而已。

  Jena中的枚举类的创建与其他的类相似。构成枚举的值的集合,用一个RDFList来表达。

  DataRange与枚举类很相似,不过,DataRange的成员是语义值,比如整数,日期,字符串等。

  迭代器在hasNext()方法返回false时,会自动close掉,如果不迭代到他的最后,要显式地调用close()方法关闭迭代器,以释放资源。

  在OWL而不是RDFS中,关于本体自身的元数据封装作为类owl:Ontology的实例的属性。

  按惯例,实例的URI可以是URL或者web地址,或者本体文件本身。在xml序列化中,这个是

  可以向这个本体实例添加属性的元数据声明。java对象Ontology代表了这个特殊的实例,可以使用标准的add,set,get,list,test,delete等操作属性。

  Jena API中,这些本体的元数据属性可以通过Ontology接口来获取。如果我们希望获取这个本体所import的本体的URI,首先我们应该获取到代表这个本体自己的资源(resource):

  本文简单介绍Jena(Jena2.4),使用Protégé3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Class...博文来自:zhang6560329的专栏

  最近在学习知识图谱相关的知识,相关的工具可以在下面的网址下载:提取密码:6t6u本博客参考的博客网址:ht...博文来自:摆渡者

  前面我已经介绍了如何使用D2RQ平台来生成我们jean可以解析和推理的RDF文本,这里我来介绍下如何通过jena操作把RDF存到Mysql数据库。先介绍下整体流程:①加载数据库JDBC驱动。②创建数据...博文来自:tb176的专栏

  转载自:本文简单介绍Jena(Jena2.4),使用Protégé3.1...博文来自:一室阳光,温暖你我他!

  目录白皮书本体官网本体区块链源码区块链浏览器开发者文档概览产品文档概览现有DApps简介DApp开发工具DApp开发教程智能合约开发教程SDKs钱包本体开发者激励项目白皮书白皮书概览:Introduc...博文来自:weixin_44240497的博客

  求教高人,protege中可以执行的sparql不知为什么在程序中运行后没反应论坛

  最近在学习知识图谱相关的知识点,而有一个工具jena会有教程代码,阅读了一下,特地将其中的前5个简单的阅读整理一下,在下面会一一进行展示1、Tutorial01.java代码如下:package je...博文来自:摆渡者

  我们使用本体(Ontology)来获取某一领域的知识,本体描述该领域的概念,以及这些概念之间的关系。目前有很多种不同的本体语言,它们各有千秋,而W3C(WorldWideWebConsortium)...博文来自:web开发自学

  在网上找了好多Api和方法,可以解析出实体,属性,但是都无法解析出本体中的属性值。后在网上看到本体本身保存的就是三元组,每个三元组可构成一个Statement,每个statement包括subject...博文来自:Willdf的专栏

  (1)在Jena的主页()下载Jena的最新版本。将下载的Jena-2.6.4.zip解压到任意路径,解压之后生成J...博文来自:周萝卜的水世界

  在用protege建好本体之后,下一步便是需要对本体进行解析.本体解析有许多思路和工具可以使用,甚至可以自己编写本体解析的模块.jena是由HP实验室开发的模块,用于支持语义网应用.为了学习和使用je...博文来自:u010660002的专栏

  一部分常用的Jena本体操作函数,写在这里备忘更加详细的,参见:博文来自:shiyue0010的专栏

  本体的推理规则库是有一条条规则组成的。每条规则由主体(body)和头(head)组成,一条规则可以有一个主体和一个头,例如规则:[rule1:(?afa:hasHusband?b)(?afa:is...博文来自:周萝卜的水世界

  在上一篇博文中我们已经探讨了如何通过Jena的命令行工具构建TDB数据库,并导入RDF数据。本文讨论通过Fuseki构建基于HTTP的RDF查询、修改框架,最终可以通过Python构建SPARQL查询...博文来自:南极光的专栏

  由于现在在手工创建本体的时候,大多采用protege等软件,该软件屏蔽了代码层面的细节(类、属性、实例等的定义),我们可以直接通过概念层进行本体的搭建所以导致我们队代码无法理解;其次当我们打开一个rd...博文来自:xuzhiming302的博客

  JENA教程(包括生成RDF和写本体到MySQL中,很适合入门,很详细)JENA教程(包括生成RDF和写本体到MySQL中,很适合入门,很详细)JENA教程(包括生成RDF和写本体到MySQL中,很适

  这是通过java把本体持久化到数据库的最稳定版本,压缩包里面包含了必要的jar同时也包含jar对应的源码

  本体编辑、知识推理与检索一切要从一个倒霉项目开始说起,项目要求根据一个构建好的本体文件,通过JAVA调用相应API实现对本体文件的编辑、推理以及检索。由于之前对本体、知识图谱这些完全不熟悉,被强行推入...博文来自:本体编辑、知识推理与检索

  楼主是大三信管专业的学生,最近在研究protege和jena的相关使用方法 目前遇到一些瓶颈,希望论坛里的各位能帮忙解决一下: 假设现在我用protege建立了一个本体Pipe_Inspect 该本体论坛

  使用软件Protege5.2版本英文版初学者尚有很多不明白,陆续更。博文来自:hbuwanglei的博客

  最近,学习的过程中需要处理owl文件,我的需求比较简单,不需要用到推理,但是要读取到owl文件中的所有的属性以及属性值。经过在网上大量的搜索和阅读后,发现大部分都是讲如何创建RDF文件后者是owl文件...博文来自:yangchangqingIT的博客

  鉴于昨天的结论,今天在本体中补上了几个子属性关系、传递关系,想验证一下JenaAPI的推理功能:      我在旅游本体中加入了一个新类“#旅游目的地”,我按照特色的不同建了五个子类“#避暑胜地”...博文来自:周萝卜的水世界

  今天我在使用Jena的过程中出现了一些问题,现在我将我出现的问题进行如下总结:1.要使用Jena,需要分别下载apache-jena和apache-jena-fuseki,因为fuseki和其他的功能...博文来自:的博客

  RDF:资源描述框架,RDF使用XML语法和RDFSchema(RDFS)来将元数据描述成为数据模型。XML:可扩展标记语言元数据:即Metadata,又称中介数据、中继数据,为描述数据的数据,...博文来自:lanxiangru的博客

  本文将对jena 的使用进行简单介绍。部分内容参考了这里。 1. jena包下载与开发环境配置首先,从这里下...博文来自:javafreely的专栏

  0Jena介绍Jena是一个JavaAPI(应用程序编程接口)。它不是一个程序或工具,它的主要用途是帮助我们编写处理RDF和OWL文档和描述的Java代码。1准备工作Eclipse下载:https:/...博文来自:鱼与橙的诱惑

  翻译自Jena文档。一,简介Jena2提供的规则推理引擎支持前向链、后向链以及二者混合的推理执行模型,更准确地说,Jena有两个内部规则引擎:前向链推理RETE引擎和一个tableddatalogen...博文来自:zhoubl668的专栏:远帆,梦之帆!

  接触SemanticWeb的时间还不是很长,所以现在写的这方面内容算是笔记性质,很可能存在很多误解,欢迎指出或讨论:)一般来说,我们在Protege这样的编辑器里构建了本体,就会想在应用程序里使用...博文来自:周萝卜的水世界

  为了更好的使用JenaAPI,我们应该对OWL有个大致的了解。OWL核心是围绕三元组的,即我们在很多资料中看到的陈述(Statement),它的组成为:Statement=(Subject,Prope...博文来自:yangchang999的专栏

  除了Sesame,我们还能使用另外一个开源的RDF数据库:ApacheJena博文来自:南极光的专栏

  上一篇博客的末尾遇到了问题:   错误:找不到或无法加载主类主要是Eclispe环境配置出现了问题,将java的编译版本改成1.8即可(JDK的版本为1.8)运行结果如下所示:感悟:有些问题可能暂时解...博文来自:摆渡者

  jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn...博文来自:Websites

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗!nnDocker的三大核心概念:镜像、容器、仓库n镜像:类似虚拟机的镜像、用俗话说就是安装文件。n容器:类似一个轻量...博文来自:我走小路的博客

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

本文链接:http://ksbuilders1.com/yueshutuili/232.html