新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国XML论坛<<     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Semantic Web(语义Web,语义网或语义万维网, Web 3.0)及相关理论,如:Ontology(本体,本体论), OWL(Web Ontology Langauge,Web本体语言), Description Logic(DL, 描述逻辑),RDFa,Ontology Engineering等。
    [返回] 中文XML论坛 - 专业的XML技术讨论区W3CHINA.ORG讨论区 - Web新技术讨论『 Semantic Web(语义Web)/描述逻辑/本体 』 → [求助]如果实现通过jsp页面显示owl内的实例名称 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6150 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]如果实现通过jsp页面显示owl内的实例名称 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     jiangqiangln 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:34
      积分:162
      门派:XML.ORG.CN
      注册:2009/10/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jiangqiangln发送一个短消息 把jiangqiangln加入好友 查看jiangqiangln的个人资料 搜索jiangqiangln在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jiangqiangln的博客楼主
    发贴心情 [求助]如果实现通过jsp页面显示owl内的实例名称

    如果实现通过jsp页面显示owl内的实例名称,多谢!最好提示在javabean书写操作owl文件程序,谢谢

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/10/11 19:54:00
     
     jiangqiangln 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:34
      积分:162
      门派:XML.ORG.CN
      注册:2009/10/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jiangqiangln发送一个短消息 把jiangqiangln加入好友 查看jiangqiangln的个人资料 搜索jiangqiangln在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jiangqiangln的博客2
    发贴心情 
    我是想利用jsp+javabean读取owl文件
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/10/11 21:08:00
     
     绿色心情1231 帅哥哟,离线,有人找我吗?天蝎座1986-10-25
      
      
      等级:大一(猛啃高等数学)
      文章:12
      积分:166
      门派:XML.ORG.CN
      注册:2009/7/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给绿色心情1231发送一个短消息 把绿色心情1231加入好友 查看绿色心情1231的个人资料 搜索绿色心情1231在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看绿色心情1231的博客3
    发贴心情 
    JavaBean源代码:  OWLIndividualInfo.java
    -------------------------------------------------------------------------------------------------------------------
    package com.cms.bean;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.util.HashMap;
    import com.hp.hpl.jena.ontology.OntModel;
    import com.hp.hpl.jena.ontology.OntModelSpec;
    import com.hp.hpl.jena.ontology.OntClass;
    import com.hp.hpl.jena.ontology.Individual;
    import com.hp.hpl.jena.rdf.model.ModelFactory;
    import com.hp.hpl.jena.util.iterator.ExtendedIterator;

    public class OWLIndividualInfo {
     private String filePath;       // 所要操作的.owl文件的绝对路径
     private OntModel ontModel;     
     private String prefix;         
     private List<String> classLst; // 用于存储无子类且拥有实例的概念类名称
     private List<String> allIndiLst; // 用于存放所有实例名称
     private Map<String, ArrayList<String>> classIndiMap;  // 用于存储概念类-实例列表的Map
     private void loadModel() {
      try {
       FileInputStream file = new FileInputStream(filePath);
       InputStreamReader in = new InputStreamReader(file, "UTF-8");
       ontModel.read(in, null);
       in.close();
       file.close();
      }catch(FileNotFoundException e) {
       e.printStackTrace();
      }catch(IOException e) {
       e.printStackTrace();
      }
     }
     private void setIndividualRelated() {
      ExtendedIterator classesIter = ontModel.listClasses();
      while(classesIter.hasNext()) {
          OntClass ontClass = (OntClass)classesIter.next();
          if(!ontClass.hasSubClass()) {
           String className = ontClass.getURI();
           className = className.substring(className.indexOf('#') + 1);
           classLst.add(className);
           ExtendedIterator indiIter = ontClass.listInstances();
           ArrayList<String> indiLst = new ArrayList<String>();
           while(indiIter.hasNext()) {
            Individual indi = (Individual)indiIter.next();
            String indiName = indi.getURI();
            indiName = indiName.substring(indiName.indexOf('#') + 1);
            indiLst.add(indiName);
            allIndiLst.add(indiName);
           }
           if(indiLst.size() != 0) {
            classIndiMap.put(className, indiLst);
           }
          }
      }
     }
     public OWLIndividualInfo(String filePath) {
      this.filePath = filePath;
      ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);
      loadModel();
      prefix = ontModel.getNsPrefixURI("");
      classLst = new ArrayList<String>();
      classIndiMap = new HashMap<String, ArrayList<String>>();
      allIndiLst = new ArrayList<String>();
      setIndividualRelated();
     }
     public List<String> getClassesList() {
      return classLst;
     }
     public Map<String, ArrayList<String>> getClassIndiMap() {
      return classIndiMap;
     }
     public List<String> getAllInstance() {
      return allIndiLst;
     }
     public static void main(String[] args) {
      OWLIndividualInfo owlIndiInfo = new OWLIndividualInfo("src\\ontology\\creatureTest.owl");
      List<String> classLst = owlIndiInfo.getClassesList();
      Map<String, ArrayList<String>> classIndiMap = owlIndiInfo.getClassIndiMap();
      for(String className : classLst) {
       ArrayList<String> indiLst = classIndiMap.get(className);
       System.out.println(className + ":");
       for(String indiName : indiLst) {
        System.out.println(" " + indiName);
       }
      }
     }
    }
    -------------------------------------------------------------------------------------------------------------------

    测试所用.owl文件: 新建该"creatureTest.owl"文件时,切记要以"UTF-8"的编码格式保存!
    -------------------------------------------------------------------------------------------------------------------
    <?xml version="1.0"?>
    <rdf:RDF
        xmlns="http://www.owl-ontologies.com/Ontology1255315967.owl#"
        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
        xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#"
        xmlns:owl="http://www.w3.org/2002/07/owl#"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
        xmlns:swrl="http://www.w3.org/2003/11/swrl#"
        xmlns:swrlb="http://www.w3.org/2003/11/swrlb#"
        xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
      xml:base="http://www.owl-ontologies.com/Ontology1255315967.owl">
      <owl:Ontology rdf:about=""/>
      <owl:Class rdf:ID="虎">
        <rdfs:subClassOf>
          <owl:Class rdf:ID="动物"/>
        </rdfs:subClassOf>
      </owl:Class>
      <owl:Class rdf:ID="植物">
        <rdfs:subClassOf>
          <owl:Class rdf:ID="生物"/>
        </rdfs:subClassOf>
      </owl:Class>
      <owl:Class rdf:about="#动物">
        <rdfs:subClassOf rdf:resource="#生物"/>
      </owl:Class>
      <owl:Class rdf:ID="树">
        <rdfs:subClassOf rdf:resource="#植物"/>
      </owl:Class>
      <虎 rdf:ID="孟加拉虎"/>
      <树 rdf:ID="李树"/>
      <虎 rdf:ID="华南虎"/>
      <虎 rdf:ID="爪哇虎"/>
      <树 rdf:ID="桃树"/>
      <树 rdf:ID="梧桐树"/>
      <虎 rdf:ID="巴厘虎"/>
      <虎 rdf:ID="东北虎"/>
      <树 rdf:ID="柳树"/>
      <虎 rdf:ID="里海虎"/>
    </rdf:RDF>

    <!-- Created with Protege (with OWL Plugin 3.4.1, Build 536)  http://protege.stanford.edu -->

    -------------------------------------------------------------------------------------------------------------------

    测试使用的JSP页面: AllInstancesDisplay.jsp
    -------------------------------------------------------------------------------------------------------------------
    <%@ page contentType="text/html; charset=UTF-8" language="java" import="java.util.*" errorPage="" %>
    <%@ page import="com.cms.servlet.test.OWLIndividualInfo;"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>AllInstancesDisplay</title>
      </head>
      <body>
      <table width="400" border="1" align="center">
      <tr>
          <td width = "200" align = "left">概念类</td>
          <td width = "200" align = "left">实例</td>
      </tr>
      <%    String filePath = "\\creatureTest.owl";
            filePath = request.getRealPath("\\WEB-INF\\classes\\ontology") + filePath;
            OWLIndividualInfo indiInfo = new OWLIndividualInfo(filePath);
            List<String> classLst = indiInfo.getClassesList();
            Map<String, ArrayList<String>> classIndiMap = indiInfo.getClassIndiMap();
            for(String className : classLst) {
       ArrayList<String> indiLst = classIndiMap.get(className);
       int i = 1;
       %><tr>
             <td width = "200" align = "left"><%=className %></td>
      <%  for(String indiName : indiLst) {
                    if(i == 1) {
                      %><td with = "200" align = "left"><%=indiName %></td></tr>
                 <% }
                    else {
                      %><tr>
                            <td with = "200" align = "left">&nbsp;</td>
                            <td with = "200" align = "left"><%=indiName %></td>
                        </tr>  
                 <% }
                    i++;
       }
      }   
      %>
      </table>
         
      </body>
    </html>

    -------------------------------------------------------------------------------------------------------------------

    P.S.
        考虑到展示实例的效果,该测试的JSP页面同时显示了实例及其直接所属概念类(叶子概  念类),没有直接实例的概念类(即其本身没有实例的概念类,处于概念类树形结构的根和枝干位置)只使用了OWLIndividualInfo类中List<String> getClassesList()方法和Map<String, ArrayList<String>> getClassIndiMap()方法来获取拥有直接实例的概念类名称和概念类名称-实例列表的映射map。
        如果只是需要展示相应本体文件中的所有实例,则可以调用List<String> getAllInstance()方法获得。
        另外如果本体是全英文的,则处理相对容易;如果是包含中文的,载入本体内容就要记得如loadModel() 中使用的一样设置编码格式为“UTF-8"。
    -------------------------------------------------------------------------------------------------------------------

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/10/12 13:38:00
     
     jiangqiangln 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:34
      积分:162
      门派:XML.ORG.CN
      注册:2009/10/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jiangqiangln发送一个短消息 把jiangqiangln加入好友 查看jiangqiangln的个人资料 搜索jiangqiangln在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jiangqiangln的博客4
    发贴心情 
    非常感谢:)我试试
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/10/12 14:59:00
     
     springbird 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(C++考了100分!)
      文章:85
      积分:412
      门派:XML.ORG.CN
      注册:2008/5/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给springbird发送一个短消息 把springbird加入好友 查看springbird的个人资料 搜索springbird在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看springbird的博客5
    发贴心情 
    学习一下,受教了,正好遇到类似的问题
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/10/13 9:24:00
     
     jiangqiangln 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:34
      积分:162
      门派:XML.ORG.CN
      注册:2009/10/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jiangqiangln发送一个短消息 把jiangqiangln加入好友 查看jiangqiangln的个人资料 搜索jiangqiangln在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jiangqiangln的博客6
    发贴心情 
    非常感谢3楼提供的代码,但是没有调试成功呀
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/10/13 20:41:00
     
     Avansky 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:大三(研究MFC有点眉目了!)
      文章:103
      积分:675
      门派:W3CHINA.ORG
      注册:2008/12/3

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Avansky发送一个短消息 把Avansky加入好友 查看Avansky的个人资料 搜索Avansky在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Avansky的博客7
    发贴心情 
    找你找的好辛苦啊!!!!!!!
    太谢谢啦!!!绿色心情1231

    ----------------------------------------------
    本人的论文是基于语义网的搜索引擎技术。
    望同路人多交流!
    Email:avan1017@163.com

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/3/30 15:46:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Semantic Web(语义Web)/描述逻辑/本体 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/12/18 9:19:33

    本主题贴数7,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    140.625ms