OWL API简单入门与使用

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,仅供参考。


原文地址:http://blog.csdn.net/tao_sun/article/details/14585719  欢迎新浪 @晓风well 交流学习。

你可能感兴趣的:(Web)