-- 作者:gflzx6506
-- 发布时间:4/28/2010 9:55:00 PM
--
import java.util.Iterator; import com.hp.hpl.jena.db.DBConnection; import com.hp.hpl.jena.db.IDBConnection; import com.hp.hpl.jena.ontology.Individual; import com.hp.hpl.jena.ontology.OntClass; import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.ontology.OntModelSpec; import com.hp.hpl.jena.ontology.OntProperty; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.ModelMaker; import com.hp.hpl.jena.util.iterator.ExtendedIterator; /* 连接数据库 */ public class text1{ public static IDBConnection connectDB(String DB_URL, String DB_USER, String DB_PASSWD, String DB_NAME) { return new DBConnection(DB_URL, DB_USER, DB_PASSWD, DB_NAME); } /* 从文件读取本体并将其存入数据库 */ public static OntModel createDBModelFromFile(IDBConnection con, String name, String filePath) { ModelMaker maker = ModelFactory.createModelRDBMaker(con); Model base = maker.createModel(name); OntModel newmodel = ModelFactory.createOntologyModel( getModelSpec(maker), base); newmodel.read(filePath); return newmodel; } /* 从数据库中得到已存入本体 */ public static OntModel getModelFromDB(IDBConnection con, String name) { ModelMaker maker = ModelFactory.createModelRDBMaker(con); Model base = maker.getModel(name); OntModel newmodel = ModelFactory.createOntologyModel( getModelSpec(maker), base); return newmodel; } public static OntModelSpec getModelSpec(ModelMaker maker) { OntModelSpec spec = new OntModelSpec(OntModelSpec.OWL_MEM); spec.setImportModelMaker(maker); return spec; } /*下面是测试的代码,先从文件中读取,让后存入数据库中,再从数据库中读出。*/ public static void test() { String DB_URL = "jdbc:mysql://localhost/ontodb"; String DB_USER = "root"; String DB_PASSWD = "123"; String DB = "MySQL"; String DB_DRIVER = "com.mysql.jdbc.Driver"; try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } String filePath = "file:d://Electronic_medical_records.owl"; IDBConnection con = text1.connectDB(DB_URL,DB_USER, DB_PASSWD, DB); System.out.println(con); text1.createDBModelFromFile(con, "Disease",filePath); OntModel model = JaneUtils.getModelFromDB(con, "Disease"); JaneUtils.SimpleReadOntology(model); getInstance(model); } /* 简单读取本体中的各个class */ public static void SimpleReadOntology(OntModel model) { for (Iterator i = model.listClasses(); i.hasNext();) { OntClass c = (OntClass) i.next(); System.out.println(c.getLocalName()); } } /* 获取个体及其属性值 */ public static void getInstance(OntModel model) { String NS = "http://www.owl-ontologies.com/Ontology1271230855.owl#"; /* 得到本体中的Expert类 */ OntClass expert = model.getOntClass(NS + "1234"); // 打印类名 System.out.println(expert.getLocalName()); // 获得其所以个体 ExtendedIterator it = expert.listInstances(); // 打印其个体 // System.out.println(it.toList().size()); while (it.hasNext()) { Individual oi = (Individual) it.next(); for (Iterator ipp = expert.listDeclaredProperties(); ipp.hasNext();) { OntProperty p = (OntProperty) ipp.next(); System.out.println(" associated property: " + p.getLocalName() + " : " + oi.getPropertyValue(p)); }// property ends } } public static void main(String[] args) { test(); } } 这个是近日我研究的代码 已经能够显示出类来,但是不能显示实例 请高手指点下错误。
|