以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 Web Services & Semantic Web Services 』  (http://bbs.xml.org.cn/list.asp?boardid=10)
----  获得一个实例的所有详细信息(属性和属性值)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=10&rootid=&id=122124)


--  作者:星火辉煌
--  发布时间:10/18/2011 9:13:00 PM

--  获得一个实例的所有详细信息(属性和属性值)

  //获得一个实例的所有详细信息(属性和属性值)
  public String getInsInfo(String insname,String owlpath){
   String info=null;
   String namespace=null;
   namespace=insname.substring(0, insname.indexOf("#")+1);
   //首先创建模型,读取owl文件
   OntModel model=ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM,null);
   try
   {
   model.read(new FileInputStream(owlpath),"");
   }
   catch(FileNotFoundException e)
   {
   System.out.println("文件读取失败:"+e.getMessage());
   }
   //根据实例的名称获取实例类型
   Individual instance=(Individual)model.getIndividual(insname);
   if(instance==null) return null;                                      //Jay
   OntClass classont=instance.getOntClass();
   int index;
   String str;
   //输出实例信息
   String var=insname.substring(insname.indexOf("#")+1);
   info="作品:"+var+"\n\n";
   //获取该实例的类的属性,如果是数值属性,则直接输出其值,否则输出对应的实例
   //获取这个类的所有属性属性有:属性名称,属性类型,属性值
   for(Iterator prys=classont.listDeclaredProperties();prys.hasNext();){
    OntProperty pry=(OntProperty)prys.next();
    //获取属性名称
    String pryname=pry.toString();   //属性uri
    index=pryname.indexOf("#");
    str=pryname.substring(index+1);  //获取属性名称
    //判断该属性是对象属性还是数值数值属性,rang获取的是属性的数据类型
    //从rang中可以看出那些是对象属性那些是数据属性。
    //对象属性的命名空间是自定义的,值属性的命名空间是http://www.w3.org/2001/XMLSchema#
       String rang =pry.getRDFType().toString();
       index=rang.indexOf("#");
       String nstype=rang.substring(index+1);
       if("ObjectProperty".equals(nstype)){//对象属性
              //获取这个实例的属性值
              String pryvalue=instance.getPropertyValue(pry).toString();
              info+="对象属性:"+str+": ";
              
        index=pryvalue.indexOf("#");
        pryvalue=pryvalue.substring(index+1);  //获取对象属性值
        info+="值为:"+pryvalue+"\n\n";
       }
       else if("DatatypeProperty".equals(nstype)){
           info+="数据属性:"+str+": ";
           try {
                    String dataValue=instance.getPropertyValue(pry).toString();
                    if(-1!=dataValue.indexOf("^^")){
                        info+="值为:"+dataValue.substring(0,dataValue.indexOf("^^"))+"\n\n";//去除数据类型
                    }
                    else if(-1!=dataValue.indexOf("@")){//可能这样写不是很好,有可能字符串中本来就包含这个字符
                        info+="值为:"+dataValue.substring(0,dataValue.indexOf("@"))+"\n\n";//去除语言
                    }
                    else{
                        info+="值为:"+dataValue+"\n\n";
                    }
                } catch (Exception e) {
                    info+="值为:空"+"\n\n";
             
                }
       }
   }
   return info;
  }

--  作者:lucaixinwai
--  发布时间:10/24/2011 8:22:00 PM

--  
E:\cloud>javac cloud.java
cloud.java:115: 找不到符号 符号: 方法 getOntClass()
位置: 接口 com.hp.hpl.jena.ontology.Individual
   OntClass classont=instance.getOntClass( );
                             ^
1 错误

明明加了import com.hp.hpl.jena.ontology.*;怎么回事?


--  作者:星火辉煌
--  发布时间:10/26/2011 8:29:00 PM

--  
import java.io.*;
import java.util.Iterator;
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.ontology.OntResource;
import com.hp.hpl.jena.rdf.model.*;


这是我导入的类


--  作者:xufeng5264
--  发布时间:12/23/2011 11:15:00 AM

--  
你这个不能运行出结果吧,OntClass classont=instance.getOntClass( ),没有为类型 Individual 定义方法 getOntClass()
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
60.547ms