以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  请问怎么用jena可以找到owl里面import进来其他owl的类[求助]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=74019)


--  作者:lff840118
--  发布时间:4/9/2009 1:02:00 AM

--  请问怎么用jena可以找到owl里面import进来其他owl的类[求助]
[color=#FF0000]        我现在用jena只能查询到一个OWL里面的类,比如这个OWL file里面import了其他的OWLfile,我在Protege 里面就能看见,但是自己查询的时候就显示是null,我怎么做才能让jena也找到 这些import进来的类. 谢谢大家帮忙.[/color]
--  作者:jpz6311whu
--  发布时间:4/9/2009 11:13:00 AM

--  
jena是自动import的,你直接读入最前端的那个本体库即可,比如A import B, A import C,那么只需要读入A即可,而B和C都是自动读入的
--  作者:lff840118
--  发布时间:4/9/2009 12:31:00 PM

--  
这样啊,可是为什么我要找的节点找不到呢
public OntClass getSubClass(String name)  {
  
         String SOURCE= "http://sweet.jpl.nasa.gov/ontology/units.owl";
  String NS = SOURCE +"#";
  OntClass r =model.getOntClass( NS + name) ;
  return r;
 }
name我用的是一个import节点的名字,结果return 出来的是NULL
这个是为什么
--  作者:jpz6311whu
--  发布时间:4/10/2009 4:12:00 PM

--  
请楼主把本体库的头部分,包括import和namespace定义的部分贴出来看看,还有楼主写的完整的程序源代码贴出来看看
--  作者:lff840118
--  发布时间:4/12/2009 2:46:00 AM

--  
这个是部分源码


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.*;


public class OntAccess {

 /**
  * @param filepath
  */
 public String filePath = "sweetdata.owl";
 OntModel model;

 
 /**
  * constructor load ontology
  */
 public OntAccess() {
  
  model = ModelFactory.createOntologyModel();   //create an ontology model
  loadModel();
 }
 
 
 /**
  *  Initialization
  */
 public OntClass getSubClass(String name)  {
  String SOURCE= "file:/C:/Users/Documents/activework/METOC/sweet-data.owl";
  //String SOURCE= "http://sweet.jpl.nasa.gov/ontology/units.owl";
  String NS = SOURCE +"#";
  OntClass r =model.getOntClass( NS + name) ;
  return r;
 }
 
 
 
 /**
  *  return all individuals of class c
  */
 public ArrayList getIndividuals(OntClass c){
  ArrayList individual=new ArrayList();
  if(c !=null){
   for(Iterator j=c.listInstances();j.hasNext();){
    OntResource in = (OntResource) j.next();
    individual.add(in);
   }
  }
  return individual;
 }
 /**
  *
  * Load the OWL file
  */
 private void loadModel() {

  InputStreamReader in;
  try {
   FileInputStream file = new FileInputStream(filePath);
   in = new InputStreamReader(file, "UTF-8");
   model.read(in, null);
   in.close();
  } catch (FileNotFoundException e) {
   System.out.println("can not open");
   System.exit(0);
  } catch (IOException e) {
   e.printStackTrace();
   System.exit(0);
  }

 }
 
 
 public static void main(String[] args) {
  OntAccess onto1=new OntAccess();  
  OntClass c=onto1.getSubClass("Prefix");
  ArrayList a=onto1.getIndividuals(c);
  for(int i=0;i<a.size();i++)
  {
   System.out.println(a.get(i).toString());
  }
  
 }

}

OWL file 里面的import内容是
<rdf:RDF xml:base="file:/C:/Users/Documents/activework/METOC/sweet-data.owl">

<owl:Ontology rdf:about="">
<owl:versionInfo>1.0</owl:versionInfo>
<owl:imports rdf:resource="http://sweet.jpl.nasa.gov/ontology/numerics.owl"/>
<owl:imports rdf:resource="http://sweet.jpl.nasa.gov/ontology/space.owl"/>
<owl:imports rdf:resource="http://sweet.jpl.nasa.gov/ontology/time.owl"/>
</owl:Ontology>

现在我查找的是Prefix这个节点,这个节点在 import ../time.owl里面的一个节点,我运行OntClass c=onto1.getSubClass("Prefix"); c返回的是null.


--  作者:jpz6311whu
--  发布时间:4/12/2009 7:30:00 PM

--  
楼主再仔细检查一下吧,我没看到time.owl里面有Prefix这个节点
--  作者:lff840118
--  发布时间:4/13/2009 7:08:00 AM

--  
谢谢,版主这么认真帮忙,我说错了

这个节点在第一个import文件的http://sweet.jpl.nasa.gov/ontology/numerics.owl里面的import文件http://sweet.jpl.nasa.gov/ontology/units.owl
能再帮忙看一下吗,谢谢


--  作者:jpz6311whu
--  发布时间:4/16/2009 8:11:00 PM

--  
你的getSubClass写得有问题,Prefix类的namespace并不是“file:/C:/Users/Documents/activework/METOC/sweet-data.owl”
--  作者:lgpxzyb
--  发布时间:9/4/2009 8:59:00 AM

--  
很多时候都是URI写错了。我最近也经常遇到类似问题。在调试状态跟一下URI的变量看看是否正确?
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms