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

从Protege本体中获取JenaModel

阅读更多

因为项目要用到Protege中构建的本体,这些本体又在Protege中编辑,所以存储结构是使用其内部的结构。要想使用Jena推理机,必须要将Protege中的KnowledgeBase导出为Jena内兼容的结构。庆幸的是,ProtegeAPI提供的转换接口。

 

(1)从本地项目中导出Jena Model,并打印所有的Triple,程序如下:

	public static void getLocalModel() {
		Collection errors = new ArrayList();
		Project p = new Project("d:\\human.pprj", errors);
		OWLModel owlmodel = (OWLModel) p.getKnowledgeBase();
		Iterator<TripleStore> listtriplestore = owlmodel.getTripleStoreModel()
				.listUserTripleStores();
		while (listtriplestore.hasNext()) {
			TripleStore ts = listtriplestore.next();
			System.out.println(ts.getName().toString());
			Iterator<Triple> itriple = ts.listTriples();
			while (itriple.hasNext()) {
				Triple triple = itriple.next();
				System.out.println("triple:" + triple.getSubject() + ","
						+ triple.getPredicate() + "," + triple.getObject());
			}
		}
		owlmodel.getOntModel().write(System.out);
	}

 

(2)从数据库导出Jena Model并且进行推理,程序如下:

	/**
	 * 从Protege本体数据库中导出Jena本体,并且进行推理
	 */
	public static void connectTest() {
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://IPaddress:3306/protege?useUnicode=true&characterEncoding=UTF-8";
		String table = "test";
		String user = "root";
		String password = "root";

		OWLDatabaseKnowledgeBaseFactory factory = new OWLDatabaseKnowledgeBaseFactory();
		Collection errors = new ArrayList();
		Project prj = Project.createBuildProject(factory, errors);

		try {
			OWLDatabaseKnowledgeBaseFactory.setSources(prj.getSources(),
					driver, url, table, user, password);
			prj.createDomainKnowledgeBase(factory, errors, true);
			OWLModel owlmodel = (OWLModel) prj.getKnowledgeBase();
			Model ont = owlmodel.getOntModel();
			ont.write(new FileOutputStream("onto/human_pro.rdf"));
			List<Rule> rule = Rule.rulesFromURL("rules/humantest.rules");
			Reasoner reasoner = new GenericRuleReasoner(rule);
			InfModel inf = ModelFactory.createInfModel(reasoner, ont);
			inf.difference(ont).write(
					new FileOutputStream("onto/human_infer_pro.rdf"));

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			prj.dispose();
		}
	}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics