`
yydcj
  • 浏览: 59933 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

本体推理的一个例子

阅读更多

引自http://hi.baidu.com/wxmsona/blog/item/de8e54cbe2ee544df21fe7d4.html

 

近日在学习本体,我参考了网上的一 个族谱的例子

“本体”这个术语来自于哲学,它是研究世界上的各种实体以及他们是怎么关联的科学。本体是对应用领域概念化的显示的解释说明,为某领域提供了一个共 享通用的理解,从而无论是人还是应用系统之间都能够有效地进行语义上的理解和通讯。studer认为,本体是:“共享概念模型的明确的形式化规范说明”。 这包括了4层含义:
      概念化(conceptualization)
      通过抽象出客观世界中一些现象的相关概念而得到的模型,其表示的含义独立于具体的环境状态
      明确(explicit)
      所使用的概念及使用这些概念的约束都有明确的定义
      形式化(formal)
      本体应是计算机可读的。
      共享(share)
      知识本体中体现的是共同认可的知识,反映的是相关领域中公认的概念集,它所针对的是团体而不是个体。本体的目标是捕获相关的领域的知识,提供对该领域知识 的共同理解,确定该陋域内共同认可的词汇,并从不同层次的形式化模式上给出这些词汇和词汇之间相互关系的明确定义。

下面给出一个例子

首先是本体文件:family.owl

规则文件:family.rules:

首先贴出推理的代码:

package com.jena.rule.reasoner;

import java.util.List;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.reasoner.*;
import com.hp.hpl.jena.reasoner.rulesys.GenericRuleReasoner;
import com.hp.hpl.jena.reasoner.rulesys.Rule;
import com.hp.hpl.jena.util.*;
import com.hp.hpl.jena.vocabulary.ReasonerVocabulary;

public class FamilyReasoner {
public void InferenceRelation(Resource a, Resource b) {
   Model model = ModelFactory.createDefaultModel();
   model.read("file:family.owl");
   List rules = Rule.rulesFromURL("file:family.rules");

   GenericRuleReasoner reasoner = new GenericRuleReasoner(rules);
   reasoner.setOWLTranslation(true);
   reasoner.setDerivationLogging(true);
   reasoner.setTransitiveClosureCaching(true);
   OntModel om = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM,
     model);
   Resource configuration = om.createResource();
   configuration.addProperty(ReasonerVocabulary.PROPruleMode, "hybrid");

   InfModel inf = ModelFactory.createInfModel(reasoner, om);
   StmtIterator stmtIter = inf.listStatements(a, null, b);
   if (!stmtIter.hasNext()) {
    System.out.println("there is no relation between "
      + a.getLocalName() + " and " + b.getLocalName());
    System.out.println("\n-------------------\n");
   }
   while (stmtIter.hasNext()) {
    Statement s = stmtIter.nextStatement();
    System.out.println("Relation between " + a.getLocalName() + " and "
      + b.getLocalName() + " is :");
    System.out.println(a.getLocalName() + " "
      + s.getPredicate().getLocalName() + " " + b.getLocalName());
    System.out.println("\n-------------------\n");
    // System.out.println(s);
   }
}

public static void main(String[] args) {
   FamilyReasoner f = new FamilyReasoner();
   Model m = FileManager.get().loadModel("file:family.owl");
   String NS = "
http://www.semanticweb.org/ontologies/2010/0/family.owl #";
   Resource Jim = m.getResource(NS + "Jim");
   Resource John = m.getResource(NS + "John");
   Resource Lucy = m.getResource(NS + "Lucy");
   Resource Kate = m.getResource(NS + "Kate");
   Resource Sam = m.getResource(NS + "Sam");
   Resource James = m.createResource(NS + "James");
   f.InferenceRelation(Jim, John);
   f.InferenceRelation(John, Jim);
   f.InferenceRelation(John, Sam);
   f.InferenceRelation(Lucy, John);
   f.InferenceRelation(Kate, Sam);
   f.InferenceRelation(Sam, Kate);
   f.InferenceRelation(James, John);
}
}

希望对有些朋友有帮助。。。。。。

参考:

jena 推理:http://jena.sourceforge.net/inference/index.html

protege:http://protege.stanford.edu/

一个前辈的博客,本文参考了他的例子:http://hi.baidu.com/zhumzhu/blog/category/%B1%BE%CC%E5%BA%CD%D3%EF%D2%E5%CD%F8          

一个在线的博客教程 http://www.crabone.com/index.php/protege-introduction

分享到:
评论
1 楼 pkmu8426 2013-01-02  
楼主 您好
小弟初学Jena 发觉网上文件实在是太少
正好看到您这篇文 实在大有用处
但本体文件与规则的连结已失效
请问可否补上  拜托您了

相关推荐

    家庭本体推理的一个含源代码的学习例子

    压缩包含有java实现代码、OWL本体文件、推理规则文件三个文件。 运行前提是需要自己搭建基于Jena的java工作环境。这个网上有很多,自己可以去找。也很容易。 提供给大家分享学习。欢迎拍砖!

    基于本体的推理技术的相关研究.pdf

    结合一个家族关系本体的例子介绍了如何实现内置 的推理机常识与自定义推理规则的结合,分析了用户通过DIG 接口或者Jena 提供的应用编 程接口使用外部推理机的机制,并对在单一推理能力不足时采用的层叠推理机的方法...

    论文研究-基于本体和规则推理的GUI软件测试用例生成.pdf

    首先建立一个通用的GUI软件测试用例本体模型,通过对其继承和实例化可获得具体被测软件的测试用例本体模型,同时开发反映测试数据生成和测试路径生成的测试用例生成规则。最后将基于OWL的测试用例本体和基于SWRL的...

    基于MapReduce的大规模OWL 2 EL本体推理

    基于MapReduce的大规模OWL 2 EL本体推理

    protege 5.5 实现动物animal推理项目,并且带注释

    本项目是本体知识库构建项目。在动物本体论中,建立了狮子和食肉动物。通过推理,得出狮子是食肉动物的结论。使用此示例可以简单地了解推理引擎racer的用法。基本项目解释了基本操作方法。如果您不清楚使用protege...

    一种新的本体分类方法-研究论文

    通过几个简单的例子,我们证明了即使对于相对较弱的本体语言,通常用于实现这些任务的算法也是不完整的。 此外,我们证明了属性分类可以简化为类分类,这使我们可以使用优化算法对属性进行分类。 我们在OWL推理器...

    一种基于本体和特征综合推理的植物建模方法 (2010年)

    介绍了植物模拟的研究背景,讨论了当前的植物建模的方法以及它们的特点,提出了基于本体和特征综合推理的植物建模方法.将植物学领域本体应用于植物建模中,以高等植物的叶片为例子对本方法的建模过程进行阐述.

    基于永久本体的上下文信息推理的应用研究 (2006年)

    介绍了本体的定义及其描述语言,OSGi服务网关模型及其架构,接着提出基于本体推理的智能家庭网关概念及其框架结构,并对其原理和上下文信息本体进行了描述以及构造了上下文本体,并且利用...最后是一个例子及其代码。

    37篇经过消化云计算论文打包下载

    这篇文章把云模型分为5层,解释了他们的内在关系,本文的贡献是第一个对云模型建立本体。 5、 The Cumulus Project: Build a Scientific Cloud for a Data Center 介绍了Cumulus工程的各个方面,如实验床,基础...

    基于目录服务的语义Web Service共享技术 (2013年)

    针对当前语义Web服务的研究现状,提出利用目录服务和Web服务本体推理机制来实现语义Web服务的自动处理能力;介绍了LDAP目录服务器的功能结构和Web服务本体推理机各模块的功能,并将两者结合构建语义Web服务的自动...

    37篇经过消化的云计算论文

    这篇文章把云模型分为5层,解释了他们的内在关系,本文的贡献是第一个对云模型建立本体。 5、 The Cumulus Project: Build a Scientific Cloud for a Data Center 介绍了Cumulus工程的各个方面,如实验床,基础...

    protege学习笔记(中级)(附实例)

    通过实例来简单了解protege 建模 推理机Racer的用法。

Global site tag (gtag.js) - Google Analytics