以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  关于jena解析owl文件的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=89926)


--  作者:ehuangjiazi
--  发布时间:3/28/2011 8:12:00 PM

--  关于jena解析owl文件的问题

根据论坛上的代码,我把本体保存到了数据库,也用jena查询成功了,可是jena好像是直接查询的owl文件,而不是从数据库里面查询的,那不要数据库也可以吗?
jena查询代码:
import java.util.*;   
import com.hp.hpl.jena.rdf.model.*;   
import com.hp.hpl.jena.ontology.*;   
   
public class MyOntology   
{   
    public static void main(String[] args) {   
        // 创建本体模型    
        OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);   
        ontModel.read("file:E:\\Program Files\\Protege_3.4.4\\Animal.owl"); // 读取文件,加载模型    
   
       //迭代显示模型中的类    
        for (Iterator i = ontModel.listClasses(); i.hasNext();) {   
            OntClass c = (OntClass) i.next();   
               
            if (!c.isAnon()) { // 如果不是匿名类    
                System.out.print("Class");   
                   
                // 获取类的URI并输出,在输出时对URI做了简化(将命名空间前缀省略)    
                System.out.println(c.getModel().getGraph().getPrefixMapping().shortForm(c.getURI()));   
                   
                // 处理Animal类    
                if (c.getLocalName().equals("Animal")) { // 如果当前类是Animal    
                    System.out.println("  URI@" + c.getURI()); // 输出它的完整URI                 
                    // 取得特定类的等价类    
                    
                }                  
       
                // 迭代显示当前类的父类    
                for (Iterator it = c.listSuperClasses(); it.hasNext();)   
                {   
                    OntClass sp = (OntClass) it.next();   
                    String str = c.getModel().getGraph()   
                                .getPrefixMapping().shortForm(c.getURI()) // 获取URI    
                                + "'s superClass is " ;   
                    String strSP = sp.getURI();   
                    try{ // 另一种简化处理URI的方法    
                        str = str + ":" + strSP.substring(strSP.indexOf('#')+1);   
                        System.out.println("  Class" +str);   
                    }   
                    catch( Exception e ){   
                    }   
                }   
   
                // 迭代显示当前类的子类    
                for (Iterator it = c.listSubClasses(); it.hasNext();)   
                {   
                    System.out.print("  Class");   
                    OntClass sb = (OntClass) it.next();   
                    System.out.println(c.getModel().getGraph().getPrefixMapping()   
                            .shortForm(c.getURI())   
                            + "'s suberClass is "   
                            + sb.getModel().getGraph().getPrefixMapping()   
                                    .shortForm(sb.getURI()));   
                }   
                   
                // 迭代显示与当前类相关的所有属性    
                for(Iterator ipp = c.listDeclaredProperties(); ipp.hasNext();)   
                {   
                    OntProperty p = (OntProperty)ipp.next();   
                        System.out.println("  associated property: " + p.getLocalName());   
                }   
            }    
        }   
           
    }   
}   

--  作者:zghydx02wl
--  发布时间:3/31/2011 9:02:00 AM

--  
你这个本来就是直接读OWL文件,和数据库没啥关系啊
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
54.688ms