本站首页    管理页面    写新日志    退出


«June 2026»
123456
78910111213
14151617181920
21222324252627
282930


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接


Blog信息
blog名称:
日志总数:1
评论数量:3
留言数量:0
访问次数:11942
建立时间:2011年3月9日




[收藏][原创]实现将本体文件存入数据库,再从数据库中读出,输出该本体中的所有类,所有属性及其对应属性的值 -- 作者:dorothyle
文章收藏

luxiao2233 发表于 2011/3/9 10:54:32

本文转载自W3CHINA.ORG讨论区(BBS.W3CHINA.ORG)   原文链接作者:dorothyle以下为原文:[原创]实现将本体文件存入数据库,再从数据库中读出,输出该本体中的所有类,所有属性及其对应属性的值今天终于实现了将一个本体文件存储到数据库中,再从数据库中将文本文件读出来,输出该本体中的所有类,所有属性及其对应属性的值。 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 ReadOntologyFromMysql { public static final String strDriver = &amp;quot;com.mysql.jdbc.Driver&amp;quot;; public static final String strURL = &amp;quot;jdbc:mysql://localhost:3306/jena&amp;quot;; public static final String strUser = &amp;quot;root&amp;quot;; public static final String strPassword = &amp;quot;root&amp;quot;; public static final String strDB = &amp;quot;MySQL&amp;quot;; // 连接数据库 public static IDBConnection connectDB(String DBURL, String DBUSER, String DBPASSWORD, String DBTYPE){ try { Class.forName(&amp;quot;com.mysql.jdbc.Driver&amp;quot;); System.out.print(&amp;quot;数据库连接成功, 已经连接到&amp;quot;); }catch (ClassNotFoundException e){ e.printStackTrace(); System.out.println(&amp;quot;数据库连接不成功&amp;quot;); } return new DBConnection(DBURL, DBUSER,DBPASSWORD,DBTYPE); } // 提取本体文件关于OWL架构等详细信息 public static OntModelSpec getModelSpec(ModelMaker maker) { OntModelSpec spec = new OntModelSpec(OntModelSpec.OWL_MEM); spec.setImportModelGetter(maker); return spec; } // 从文件读取本体并将其存入数据库 public static OntModel ceateDBModelFromFile(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); System.out.println(&amp;quot;已将本体文件存入数据库。&amp;quot;); System.out.println(); 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); System.out.println(&amp;quot;已从数据库中读出本体文件。&amp;quot;); System.out.println(); return newmodel; } // 简单读取本体中的所有类 public static void SimpleReadOntology(OntModel model){ System.out.println(&amp;quot;该本体文件中包括以下类:&amp;quot;); for (Iterator i = model.listClasses(); i.hasNext();){ OntClass c = (OntClass) i.next(); System.out.println(&amp;quot; &amp;quot; + c.getLocalName()); } System.out.println(); } public static void main(String args[]){ IDBConnection con = connectDB(strURL, strUser, strPassword, strDB); System.out.println(con + &amp;quot;;&amp;quot;); System.out.println(); String filePath = &amp;quot;file:e:/ontologies/BeijingOpera/Costume.owl&amp;quot;; String prefix = &amp;quot;http://Costume.owl#&amp;quot;; OntModel defModel = ceateDBModelFromFile(con, &amp;quot;Costume&amp;quot;, filePath); // 读取filePath目录下本体文件Costume的内容,将该本体文件的内容存储到数据库con中; OntModel model = getModelFromDB(con, &amp;quot;Costume&amp;quot;); // 将数据库con中存储的本体文件Costume的内容读出到一个本体文件Model中; SimpleReadOntology(model); OntClass CostumeClass = model.getOntClass(prefix + &amp;quot;Costume&amp;quot;); String name = CostumeClass.getLocalName(); //返回的是Costume本体中的类Costume的名字,是一个字符串; System.out.print(&amp;quot;此处返回的是&amp;quot; + name + &amp;quot;类的名称&amp;quot;); System.out.println(name); System.out.println(); ExtendedIterator it = CostumeClass.listInstances(); System.out.println(&amp;quot;此处返回的是&amp;quot; + name + &amp;quot;类的所有实例:&amp;quot;); while (it.hasNext()) { Individual oi = (Individual) it.next(); System.out.println(&amp;quot; &amp;quot; + oi.getLocalName()); for (Iterator ipp = CostumeClass.listDeclaredProperties(); ipp.hasNext();){ OntProperty p = (OntProperty) ipp.next(); System.out.println(&amp;quot; associated property:&amp;quot; + p.getLocalName() + &amp;quot;:&amp;quot; + oi.getPropertyValue(p)); } } } } 以上代码执行后,控制台的输出如下:数据库连接成功, 已经连接到com.hp.hpl.jena.db.DBConnection@157f0dc; 已将本体文件存入数据库。 已从数据库中读出本体文件。 该本体文件中包括以下类: Costume Document Image Master 此处返回的是Costume类的名称Costume 此处返回的是Costume类的所有实例: HongTuanLongMang associated property:kind:Mang^^http://www.w3.org/2000/01/rdf-schema#Literal associated property:image:null associated property:pattern:SanJianShui, Long^^http://www.w3.org/2000/01/rdf-schema#Literal associated property:daPei:null associated property:name:HuanTuanLongMang^^http://www.w3.org/2000/01/rdf-schema#Literal associated property:color:red^^http://www.w3.org/2000/01/rdf-schema#Literal associated property:hangDang:Sheng^^http://www.w3.org/2000/01/rdf-schema#Literal associated property:texture:DaDuan^^http://www.w3.org/2000/01/rdf-schema#Literal associated property:depiction:null associated property:style:DuiJin, YuanCollar^^http://www.w3.org/2000/01/rdf-schema#Literal HuangTuanLongMang associated property:kind:null associated property:image:null associated property:pattern:null associated property:daPei:null associated property:name:null associated property:color:null associated property:hangDang:null associated property:texture:null associated property:depiction:null associated property:style:null LvTuanLongMang associated property:kind:null associated property:image:null associated property:pattern:null associated property:daPei:null associated property:name:null associated property:color:null associated property:hangDang:null associated property:texture:null associated property:depiction:null associated property:style:null<完>参与讨论本主题


阅读全文(1130) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.578 second(s), page refreshed 144828310 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号