以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  jena推理后本体的更新  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=83868)


--  作者:binyu3008
--  发布时间:3/17/2010 11:42:00 AM

--  jena推理后本体的更新
请问哪位大侠知道,我通过Jena推理机对一个本体进行推理,得到了一些新知识,怎么样才能把这些新知识写到原来的本体文件?谢谢
--  作者:laotao
--  发布时间:3/17/2010 4:22:00 PM

--  
inferedModel.write(originalFileStream)?
--  作者:binyu3008
--  发布时间:3/18/2010 11:24:00 AM

--  请求程序代码
首先对你表示感谢。还有一个请求,麻烦你能把这段程序代码写详细吗,或者传给我也可以,我的邮箱是:jenareasoning@163.com
谢谢!
--  作者:laotao
--  发布时间:3/18/2010 3:36:00 PM

--  
import java.util.Iterator;
import java.io.*;

import com.hp.hpl.jena.rdf.model.InfModel;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.reasoner.Reasoner;
import com.hp.hpl.jena.reasoner.ReasonerRegistry;
import com.hp.hpl.jena.reasoner.ValidityReport;
import com.hp.hpl.jena.util.FileManager;
import com.hp.hpl.jena.util.PrintUtil;

public class InfModelTester {
 
 public static final String RDF_FILE = "E:/My Projects/Elipse/HelloWorld/src/test/foaf.rdf";
 public static final String OWL_FILE = "http://xmlns.com/foaf/0.1";
 
 public static void main(String[] args){
 
  //load instance data
  Model data = ModelFactory.createDefaultModel();
  FileManager.get().readModel(data, RDF_FILE);
  
  //load the ontology document
  OntModel ontology = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM_RDFS_INF, data);
  ontology.read(OWL_FILE);
  
  //get the reasoner
  Reasoner owlReasoner = ReasonerRegistry.getOWLReasoner();
  owlReasoner = owlReasoner.bindSchema(ontology);
  
  //use the reasoner and instance data to create an inference model
  InfModel infModel = ModelFactory.createInfModel(owlReasoner, data);
  
  //some validation to make us happy
  ValidityReport vr = ontology.validate();
  if(vr.isValid() == false){
   System.out.println("ontology model validation failed...");
   for (Iterator i = vr.getReports();i.hasNext();){
    System.out.println(" - " + i.next());   
   }
   return;
  }
  
  //update resource
  OutputStream s;
  try {
  s = new FileOutputStream(RDF_FILE);
  infModel.write(s);
  } catch (FileNotFoundException e)
  {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } 
 }
}


--  作者:laotao
--  发布时间:3/18/2010 3:47:00 PM

--  
E:/My Projects/Elipse/HelloWorld/src/test/foaf.rdf的内容如下
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
      xml:lang="en"
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
      xmlns:foaf="http://xmlns.com/foaf/0.1/">

<rdf:Description rdf:about="http://www.laotao.com/foaf.rdf#laotao">
   <foaf:mbox_sha1sum>1613a9c3ec8b18271a8fe1f79537a7b08803d896</foaf:mbox_sha1sum>
   <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>

   
</rdf:Description>

<rdf:Description rdf:about="http://www.laotao.com/foaf.rdf#tao">
 <foaf:mbox_sha1sum>1613a9c3ec8b18271a8fe1f79537a7b08803d896</foaf:mbox_sha1sum>
</rdf:Description>

</rdf:RDF>



--  作者:binyu3008
--  发布时间:3/20/2010 3:23:00 PM

--  谢谢
您好,上个问题解决了,我还有一个问题向你请教,我自己构建一个本体,我通过Jena持久化存储到Mysql数据库中,然后从中读取数据,经过jena通用规则推理机推理,得到了新的知识,可是数据库却没有更新,查不到新的知识,问如何实现数据库的 更新?谢谢
--  作者:laotao
--  发布时间:3/22/2010 2:05:00 PM

--  
model.begin();
//read and reasoning
model.commit();
--  作者:binyu3008
--  发布时间:3/23/2010 11:14:00 AM

--  
你能把代码写具体点吗?谢谢
--  作者:binyu3008
--  发布时间:3/23/2010 12:24:00 PM

--  请教
大侠你好,小弟向你请教一个问题:
我构建了一个本体,通过jena中的Ontmodel读取了该本体中的一个ship类,然后为这个类创建了一个实例ship110,这个实例有对象属性和数据属性,比如数据属性hasLength(船长),对象属性happen(发生),我就想对这两种属性赋值,比如数据属性hasLength赋值为5600,对象属性happen赋值为该本体中的另外一个实例,请问怎么在jena中通过编码实现赋值?

--  作者:laotao
--  发布时间:3/23/2010 2:20:00 PM

--  
ship10.addProperty(hasLength, 5600);
ship10.addProperty(happen, anotherInstance);
--  作者:binyu3008
--  发布时间:3/26/2010 11:21:00 AM

--  请教
大侠你好,非常感谢一直以来你对我的帮助,有一个问题请教你:
定义一个数据属性a是boolean(布尔类型),它的值为true,通过jena规则怎么制定?
谢谢!
--  作者:binyu3008
--  发布时间:3/26/2010 7:32:00 PM

--  你好
大侠你好,添加对象属性实例,你提供的方法ship10.addProperty(happen, anotherInstance);不对,我试验了一下,怎么添加不进去。请你更正以下,谢谢!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
125.000ms