<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>luxiao2233的博客</title>
<link>http://blogger.org.cn/blog/blog.asp?name=luxiao2233</link>
<description>luxiao2233的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[[收藏][原创]实现将本体文件存入数据库，再从数据库中读出，输出该本体中的所有类，所有属性及其对应属性的值 -- 作者：dorothyle]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=luxiao2233&amp;id=51088</link>
<author>luxiao2233</author>
<pubDate>2011/3/9 10:54:32</pubDate>
<description><![CDATA[本文转载自<A href="http://bbs.w3china.org/" target=_blank>W3CHINA.ORG讨论区</A>(BBS.W3CHINA.ORG)&nbsp;&nbsp;&nbsp;<A href="http://bbs.w3china.org/dispbbs.asp?boardid=39&amp;ID=87259&amp;replyID=200179&amp;skin=1" target=_blank>原文链接</A><BR>作者：<A href="http://bbs.w3china.org/dispuser.asp?name=dorothyle" target=_blank>dorothyle</A><BR>以下为原文：<BR><BR><B>[原创]实现将本体文件存入数据库，再从数据库中读出，输出该本体中的所有类，所有属性及其对应属性的值</B><BR><BR>今天终于实现了将一个本体文件存储到数据库中，再从数据库中将文本文件读出来，输出该本体中的所有类，所有属性及其对应属性的值。 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;amp;quot;com.mysql.jdbc.Driver&amp;amp;quot;; public static final String strURL = &amp;amp;quot;jdbc:mysql://localhost:3306/jena&amp;amp;quot;; public static final String strUser = &amp;amp;quot;root&amp;amp;quot;; public static final String strPassword = &amp;amp;quot;root&amp;amp;quot;; public static final String strDB = &amp;amp;quot;MySQL&amp;amp;quot;; // 连接数据库 public static IDBConnection connectDB(String DBURL, String DBUSER, String DBPASSWORD, String DBTYPE){ try { Class.forName(&amp;amp;quot;com.mysql.jdbc.Driver&amp;amp;quot;); System.out.print(&amp;amp;quot;数据库连接成功, 已经连接到&amp;amp;quot;); }catch (ClassNotFoundException e){ e.printStackTrace(); System.out.println(&amp;amp;quot;数据库连接不成功&amp;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;amp;quot;已将本体文件存入数据库。&amp;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;amp;quot;已从数据库中读出本体文件。&amp;amp;quot;); System.out.println(); return newmodel; } // 简单读取本体中的所有类 public static void SimpleReadOntology(OntModel model){ System.out.println(&amp;amp;quot;该本体文件中包括以下类：&amp;amp;quot;); for (Iterator i = model.listClasses(); i.hasNext();){ OntClass c = (OntClass) i.next(); System.out.println(&amp;amp;quot; &amp;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;amp;quot;;&amp;amp;quot;); System.out.println(); String filePath = &amp;amp;quot;file:e:/ontologies/BeijingOpera/Costume.owl&amp;amp;quot;; String prefix = &amp;amp;quot;<A class=contentlink href="http://costume.owl/" target=_blank>http://Costume.owl</A>#&amp;amp;quot;; OntModel defModel = ceateDBModelFromFile(con, &amp;amp;quot;Costume&amp;amp;quot;, filePath); // 读取filePath目录下本体文件Costume的内容，将该本体文件的内容存储到数据库con中； OntModel model = getModelFromDB(con, &amp;amp;quot;Costume&amp;amp;quot;); // 将数据库con中存储的本体文件Costume的内容读出到一个本体文件Model中； SimpleReadOntology(model); OntClass CostumeClass = model.getOntClass(prefix + &amp;amp;quot;Costume&amp;amp;quot;); String name = CostumeClass.getLocalName(); //返回的是Costume本体中的类Costume的名字，是一个字符串； System.out.print(&amp;amp;quot;此处返回的是&amp;amp;quot; + name + &amp;amp;quot;类的名称&amp;amp;quot;); System.out.println(name); System.out.println(); ExtendedIterator it = CostumeClass.listInstances(); System.out.println(&amp;amp;quot;此处返回的是&amp;amp;quot; + name + &amp;amp;quot;类的所有实例：&amp;amp;quot;); while (it.hasNext()) { Individual oi = (Individual) it.next(); System.out.println(&amp;amp;quot; &amp;amp;quot; + oi.getLocalName()); for (Iterator ipp = CostumeClass.listDeclaredProperties(); ipp.hasNext();){ OntProperty p = (OntProperty) ipp.next(); System.out.println(&amp;amp;quot; associated property:&amp;amp;quot; + p.getLocalName() + &amp;amp;quot;:&amp;amp;quot; + oi.getPropertyValue(p)); } } } } 以上代码执行后，控制台的输出如下：数据库连接成功, 已经连接到com.hp.hpl.jena.db.DBConnection@157f0dc; 已将本体文件存入数据库。 已从数据库中读出本体文件。 该本体文件中包括以下类： Costume Document Image Master 此处返回的是Costume类的名称Costume 此处返回的是Costume类的所有实例： HongTuanLongMang associated property:kind:Mang^^<A class=contentlink href="http://www.w3.org/2000/01/rdf-schema" target=_blank>http://www.w3.org/2000/01/rdf-schema</A>#Literal associated property:image:null associated property:pattern:SanJianShui, Long^^<A class=contentlink href="http://www.w3.org/2000/01/rdf-schema" target=_blank>http://www.w3.org/2000/01/rdf-schema</A>#Literal associated property:daPei:null associated property:name:HuanTuanLongMang^^<A class=contentlink href="http://www.w3.org/2000/01/rdf-schema" target=_blank>http://www.w3.org/2000/01/rdf-schema</A>#Literal associated property:color:red^^<A class=contentlink href="http://www.w3.org/2000/01/rdf-schema" target=_blank>http://www.w3.org/2000/01/rdf-schema</A>#Literal associated property:hangDang:Sheng^^<A class=contentlink href="http://www.w3.org/2000/01/rdf-schema" target=_blank>http://www.w3.org/2000/01/rdf-schema</A>#Literal associated property:texture:DaDuan^^<A class=contentlink href="http://www.w3.org/2000/01/rdf-schema" target=_blank>http://www.w3.org/2000/01/rdf-schema</A>#Literal associated property:depiction:null associated property:style:DuiJin, YuanCollar^^<A class=contentlink href="http://www.w3.org/2000/01/rdf-schema" target=_blank>http://www.w3.org/2000/01/rdf-schema</A>#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<BR><BR>&lt;完&gt;<BR><A href="http://bbs.w3china.org/dispbbs.asp?boardid=39&amp;ID=87259&amp;replyID=200179&amp;skin=1" target=_blank>参与讨论本主题</A><BR>]]></description>
</item>
</channel>
</rss>