`
yydcj
  • 浏览: 61559 次
  • 性别: 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 发觉网上文件实在是太少
正好看到您这篇文 实在大有用处
但本体文件与规则的连结已失效
请问可否补上  拜托您了

相关推荐

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

    Jena是一个开源框架,提供了处理RDF(Resource Description Framework)、RDFS(RDF Schema)和OWL的工具,是实现本体推理的重要库。为了运行这个例子,你需要安装Jena库,配置好Java开发环境,然后将提供的Java代码...

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

    在这篇文章中,涉及到的知识点主要集中在大规模本体推理、OWL 2 EL、MapReduce模型、数据处理、Hadoop实现等方面。以下是对这些知识点的详细介绍: 1.大规模本体推理(Large Scale Ontology Reasoning): 本体推理...

    使用Protege创建本体进行推理-入门实例

    在“使用Protege创建本体进行推理-入门实例”中,我们将探讨如何通过Protege 5.2构建一个简单的生物分类本体,并利用内置的HermiT推理机进行推理。 首先,我们需要理解本体的基本构成。在这个实例中,我们有两类...

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

    文章通过一个家族关系本体的例子,展示了如何将内置推理机的常识与自定义推理规则相结合。这种结合方式极大地扩展了推理机的功能,使其能够处理更复杂的推理任务。 #### 六、外部推理机的使用 文章还讨论了如何...

    jena操作本体的小例子

    以下是一个简化版的例子,展示如何使用Jena操作本体: 1. **创建模型**:首先需要创建一个Jena Model对象,用于存储RDF数据。 2. **加载本体**:接着,可以通过读取本地或远程的RDF文件来加载本体到Model中。 3. **...

    运用Jena对本体模型进行推理及其应用

    在这个例子中,`ReasonerRegistry.getReasoner(model)`创建了一个推理引擎实例,并将其绑定到指定的模型上。`ModelFactory.createInfModel(reasoner, model)`则创建了一个推理模型,该模型包含了原始模型中的所有...

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

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

    protege本体建模例子

    在这个例子中,我们可以预见到一个关于生物分类的本体模型。动植物例子可能包括各种类(Class)如动物、植物,以及这些类的子类(如哺乳动物、鸟类、爬行动物、开花植物等)。此外,可能还有属性(Property)如生命...

    university 一个大学本体 语义网 protege

    完成大学本体后,其价值主要体现在以下几个方面: - 数据共享:通过本体,不同大学的信息系统可以实现数据交换,提高资源利用率。 - 智能检索:搜索引擎可以基于本体理解查询意图,提供更精确的结果。 - 自动推理:...

    Protege新手入门(推理篇)

    **Protege新手入门(推理篇)** Protege是一款开放源代码的本体编辑器,广泛用于构建、编辑和管理本体。...这仅仅是Protege和本体推理的冰山一角,深入学习和实践将揭示更多关于知识表示和智能推理的奥秘。

    本体Protege4

    本体Protege4教程 ...本教程还提供了一个实践例子,指导用户如何打开 Protege,选择已有的本体,了解Protege的界面,创建本体等。通过这个教程,用户可以快速掌握Protege4.0的使用方法,学习本体构建的基础知识。

    Protege新手入门推理篇.doc

    Protege 是一个基于ontology 的知识管理工具,通过建立本体和推理机来实现知识的表达和推理。下面是 Protege 新手入门推理篇的知识点总结: 1. 知识表示 在 Protege 中,知识表示是通过本体(ontology)来实现的。...

    本体开发例子 an_Experience_in_developing

    在本体开发领域,构建一个领域本体的过程:开发政府预算本体的经验 近年来,由于本体能够以一种通用的方式显式地描述数据语义,独立于数据源特性,为异构信息系统之间的数据交换和用户提供了模式,因此对本体的关注...

    Protege的一个pizza的OWLS例子

    总之,这个例子提供了一个实际的起点,帮助学习者了解如何利用Protege和OWL-S来构建本体,这在领域建模、知识表示、智能信息检索和推理等场景中有着广泛的应用。通过这样的练习,我们可以深入理解如何使用本体来表达...

    对Jena的简单理解和一个例子

    "对Jena的简单理解和一个例子" Jena是一个开源的Java开发工具包,由HP Labs开发,用于Semantic Web(语义网)中的应用程序开发。该工具包主要包括四个部分:RDF/XML、三元组形式读写RDF资源描述框架,RDFS、OWL、...

    语义Web中的本体操作

    总的来说,本体是一个强大的工具,它能够帮助我们更好地组织和处理信息,使其在语义层面具有可操作性,从而在人工智能、数据管理、知识工程等领域发挥关键作用。随着语义网和人工智能技术的不断发展,本体的应用和...

    对jena的简单理解和一个例子

    3. **OntModel**: 建立在Model之上,OntModel扩展了对OWL的支持,提供了更高级的推理功能,包括类层次结构、属性链和本体推理。 4. **Fusion**: 用于融合来自多个数据源的数据,提供了一种集成不同模型的方法。 5....

Global site tag (gtag.js) - Google Analytics