-- 作者:hoho19840130
-- 发布时间:4/19/2009 3:37:00 PM
-- owl的持久化
OWL的持久化可以用jena或protege。 原来jena 的owl持久化已经忘了,可以看下 Jena2 Database Interface - How To Create Persistent Models 用protege也是比较简单的:http://protegewiki.stanford.edu/index.php/ConvertingToDatabaseProject 下面是我仿造写的方法: 读: package com.demo.application; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.net.URI; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import com.hp.hpl.jena.db.IDBConnection; import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.util.FileUtils; import edu.stanford.smi.protege.model.KnowledgeBase; import edu.stanford.smi.protege.model.Project; import edu.stanford.smi.protege.storage.database.DatabaseKnowledgeBaseFactory; import edu.stanford.smi.protege.util.PropertyList; import edu.stanford.smi.protege.util.URIUtilities; import edu.stanford.smi.protegex.owl.ProtegeOWL; import edu.stanford.smi.protegex.owl.database.CreateOWLDatabaseProjectPlugin; import edu.stanford.smi.protegex.owl.database.OWLDatabaseKnowledgeBaseFactory; import edu.stanford.smi.protegex.owl.database.OWLDatabaseModel; import edu.stanford.smi.protegex.owl.jena.Jena; import edu.stanford.smi.protegex.owl.jena.JenaOWLModel; import edu.stanford.smi.protegex.owl.model.OWLModel; import edu.stanford.smi.protegex.owl.model.OWLNamedClass; import edu.stanford.smi.protegex.owl.model.query.QueryResults; import edu.stanford.smi.protegex.owl.storage.KnowledgeBaseCopier; public class OWLConnectDBreader { public static void main(String[] args) { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost/223"; String table = "owltab1"; String user = "root"; String password = "root"; //String uri = "file:f:/123.owl"; // @SuppressWarnings("unchecked"); try{ OWLDatabaseKnowledgeBaseFactory factory = new OWLDatabaseKnowledgeBaseFactory(); Collection errors = new ArrayList(); Project prj = Project.createNewProject(factory, errors); OWLDatabaseKnowledgeBaseFactory.setSources(prj.getSources(), driver,url, table, user, password); prj.createDomainKnowledgeBase(factory, errors, true); System.out.print("2323333333333333333333"); OWLModel owlmodel = (OWLModel) prj.getKnowledgeBase(); } catch (Exception e) { } } } 写:package com.demo.application; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.net.URI; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.logging.Level; import com.hp.hpl.jena.db.IDBConnection; import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.util.FileUtils; import edu.stanford.smi.protege.model.KnowledgeBase; import edu.stanford.smi.protege.model.Project; import edu.stanford.smi.protege.storage.database.DatabaseKnowledgeBaseFactory; import edu.stanford.smi.protege.util.Log; import edu.stanford.smi.protege.util.MessageError; import edu.stanford.smi.protege.util.PropertyList; import edu.stanford.smi.protege.util.URIUtilities; import edu.stanford.smi.protegex.owl.ProtegeOWL; import edu.stanford.smi.protegex.owl.database.CreateOWLDatabaseProjectPlugin; import edu.stanford.smi.protegex.owl.database.OWLDatabaseKnowledgeBaseFactory; import edu.stanford.smi.protegex.owl.jena.JenaOWLModel; import edu.stanford.smi.protegex.owl.model.OWLDatatypeProperty; import edu.stanford.smi.protegex.owl.model.OWLModel; import edu.stanford.smi.protegex.owl.model.OWLNamedClass; import edu.stanford.smi.protegex.owl.model.OWLObjectProperty; import edu.stanford.smi.protegex.owl.model.RDFIndividual; import edu.stanford.smi.protegex.owl.storage.KnowledgeBaseCopier; public class OWLConnectDBTest { public static void main(String[] args) { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost/protege"; String table = "owltab"; String user = "root"; String password = "root"; // String uri = "file:f:/123.owl"; // @SuppressWarnings("unchecked"); try { System.out.println("In Convert to Database Project"); List errors = new ArrayList(); // File fin = new File("f:\\owl\\newService.owl"); FileInputStream input = new FileInputStream(fin); // URL url=new URL(); InputStreamReader in = null; in = new InputStreamReader(input, "utf-8"); JenaOWLModel owlModel = ProtegeOWL.createJenaOWLModelFromReader(in); // JenaOWLModel owlModel = ProtegeOWL.createJenaOWLModel(); // OWLNamedClass owlClass = owlModel.createOWLNamedClass("ccc"); Project fileProject = owlModel.getProject(); OWLDatabaseKnowledgeBaseFactory factory = new OWLDatabaseKnowledgeBaseFactory(); PropertyList sources = PropertyList.create(fileProject .getInternalProjectKnowledgeBase()); DatabaseKnowledgeBaseFactory.setSources(sources, driver, url, table, user, password); factory.saveKnowledgeBase(owlModel, sources, errors); System.out.println("ok"); // displayErrors(errors); // forget this and it will be a mystery } catch (Exception e) { } } 先写到数据库中,再读。 本人已经学习progete API 2个月了,对一般的操作有一定的认识,现在自己在做个系统。自己觉得学习owl还是找对应的英文文档看。 jena的文档:看它自己的文档file:///F:/Jena-2.5.7/doc/documentation.html protege的文档:http://protege.stanford.edu/plugins/owl/api/guide.html#Jena
|