您的位置:首页 > 其它

OWL API简单入门与使用

2013-11-10 16:57 459 查看
OWL即网络本体语言,用于对本体进行语义描述。本体即Ontology,可以理解为某一个领域词汇的汇集,即词汇表。OWL的最新版本为2,具体OWL语法知识这里不赘述。本篇博客主要针对OWL API的简单使用进行说明,通过一些例子说明OWL API中核心类的构建与使用。

首先需要说明的是OWL API是用JAVA实现的,因此需要掌握相关的JAVA语言开发基础知识才能使用,这里一个相关的开源项目是jena,有兴趣的可以去了解一下。owl api提供了RDF/XML、OWL/XML解析器,并且提供了推理机功能,例如Pallet和FaCT++。使用OWL api时最核心的一个类是OWLOntologyManager,用于载入、创建和访问本体。下面提供一下api
documentation的网络地址,阅读起来还是比较费劲的。

http://owlapi.sourceforge.net/javadoc/index.html

另外,下面所有的代码均使用JUnit进行调试。为简化复杂度,所有的异常均抛Exception。

第一个例子用于演示对OWL文档的加载,需要说明的是这里载入的是本地OWL文档,当然也可以直接通过IRI载入OWL文档。

@Test
public void shouldLoad() throws Exception{
// Get hold of an ontology manager
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
// we can load a local ontology file
File file = new File("ontology/academic.owl");
// Now load the local copy
OWLOntology localAcademic = manager.loadOntologyFromOntologyDocument(file);
// We can always obtain the location where an ontology was loaded from
IRI documentIRI = manager.getOntologyDocumentIRI(localAcademic);
System.out.println(" from:"+documentIRI );
}

这里用到三个类(详细使用方式和类中的方法请阅读owl api,这也是最方便的方式)

OWLOntologyManager 用于管理ontology的集合,也是载入、创建、访问ontologies的核心类。

OWLOntology 表示一个符合OWL2规范的ontology

IRI 获取OWL文档的IRI

第二例子用于演示如何使用指定格式保存OWL文档,默认情况下保存的是载入文档的相同格式。当然保存时可以自己指定路径和保存格式,如RDF/XML或OWL/XML等。

@Test
public void shouldSaveOntologies() throws Exception{
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
File file = new File("ontology/academic.owl");
OWLOntology localAcademic = manager.loadOntologyFromOntologyDocument(file);
System.out.println("loaded ontology: "+ localAcademic);
File outFile = file.createTempFile("owlapiexamples", "saving");
manager.saveOntology(localAcademic, IRI.create(file.toURI()));
}


第三个例子用于演示和merge两个owl文件,操作过程与上面的类似,说使用的类也非常的类似。

@Test
public void mergeOntologies() throws Exception{
OWLOntologyManager man = OWLManager.createOWLOntologyManager();
OWLOntology owl1 = man.loadOntologyFromOntologyDocument(new File("ontology/academic.owl"));
OWLOntology owl2 = man.loadOntologyFromOntologyDocument(new File("ontology/downFromWeb.owl"));
OWLOntologyMerger merger = new OWLOntologyMerger(man);
IRI mergedOntologyIRI = IRI.create("http://www.semanticweb.com/mymergedont");
OWLOntology merged = merger.createMergedOntology(man, mergedOntologyIRI);
for (OWLAxiom ax : merged.getAxioms()) {
System.out.println(ax);
}
man.saveOntology(merged, new RDFXMLOntologyFormat(),IRI.create("file:/mymergedoc.owl"));
}

需要说明的是,这里载入的是两个本地owl文档,分别我们自己创建的owl文档,以及另一从falcons search中检索来的相似文档。当然,这里你也可以直接使用IRI来指定owl文档。

合并两个文档,OWL API提供了 OWLOntologyMerger 这个核心类,用于实现两个文档的合并。具体的使用方法可以阅读 owl api 。我在这里的实现思路是直接使用foreach遍历两个本体的内容,然后统一输出到一个文档。最后使用第二例子的保存操作进行文件的保存。

本例只是一个示范操作,仅仅用于示范如何使用owl api,仅供参考。

原文地址:/article/10616368.html 欢迎新浪 @晓风well 交流学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: