以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  使用pellet api进行swrl推理的失败,希望哪位高人指点原因  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=61019)


--  作者:zhangxm
--  发布时间:4/8/2008 1:50:00 AM

--  使用pellet api进行swrl推理的失败,希望哪位高人指点原因
本体文件如下
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE rdf:RDF [
    
     <!ENTITY owl  "http://www.w3.org/2002/07/owl#" >
     <!ENTITY xsd  "http://www.w3.org/2001/XMLSchema#" >
     
     <!ENTITY loan  "http://adr.avic1/loan#" >
     
   ]>
<rdf:RDF
    xml:base=""
    xmlns="http://adr.avic1/loan#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   
    xmlns:loan="http://adr.avic1/loan#"
    
    
xmlns:swrla="http://swrl.stanford.edu/ontologies/3.3/swrla.owl#"
xmlns:query="http://swrl.stanford.edu/ontologies/built-ins/3.3/query.owl#"
xmlns:swrl="http://www.w3.org/2003/11/swrl#"
xmlns:swlrx="http://swrl.stanford.edu/ontologies/built-ins/3.3/swrlx.owl#"
xmlns:swrlb="http://www.w3.org/2003/11/swrlb#"
xmlns:tbox="http://swrl.stanford.edu/ontologies/built-ins/3.3/tbox.owl#"
>
<owl:Ontology rdf:about="loan.owl">
  <rdfs:comment></rdfs:comment>
  <owl:versionInfo>
      $Id: test.html,v 1.0 2003/03/20 22:22:00 Lxp $
  </owl:versionInfo>
  
  
  
  <owl:imports rdf:resource="common/swrl.owl" />
  <owl:imports rdf:resource="common/swrlb.owl" />
  <owl:imports rdf:resource="common/swrla.owl" />

  <owl:imports rdf:resource="common/abox.owl" />
  <owl:imports rdf:resource="common/tbox.owl" />
  <owl:imports rdf:resource="common/swrlx.owl" />
  <owl:imports rdf:resource="common/query.owl" />
</owl:Ontology>

<!--定义loanMoney是借款项类,loan;amount是借款金额类 loan;value是连接二者的R-->
<owl:Class rdf:about="&owl;Thing"/>
<owl:Class rdf:about="&loan;loanMoney"/>
<owl:Class rdf:about="&loan;amount"/>  

<owl:ObjectProperty rdf:about="&loan;value">
    <rdfs:domain rdf:resource="&loan;loanMoney"/>
    <rdfs:range rdf:resource="&loan;amount"/>
</owl:ObjectProperty>


<loan:amount rdf:about="&loan;A1"/>
<loan:amount rdf:about="&loan;A2"/>
<loan:amount rdf:about="&loan;A3"/>


<!--可以看出来,这三个"借款项类"实例在"loan;value"上是一致的-->
<loan:loanMoney rdf:about="&loan;money1">
<loan:value rdf:resource="&loan;A1"/>
</loan:loanMoney>

<loan:loanMoney rdf:about="&loan;money2">
<loan:value rdf:resource="&loan;A1"/>
</loan:loanMoney>

<loan:loanMoney rdf:about="&loan;money3">
<loan:value rdf:resource="&loan;A1"/>
</loan:loanMoney>


<owl:ObjectProperty rdf:about="&loan;same">
    <rdfs:domain rdf:resource="&loan;loanMoney"/>
    <rdfs:range rdf:resource="&loan;loanMoney"/>
</owl:ObjectProperty>

<swrl:Variable rdf:about="&loan;x"/>
<swrl:Variable rdf:about="&loan;y"/>
<swrl:Variable rdf:about="&loan;z"/>

<swrl:Impl rdf:ID="rule-1">

  


    <swrl:head rdf:parseType="Collection">
        <swrl:IndividualPropertyAtom>
            <swrl:propertyPredicate rdf:resource="&loan;same"/>
            <swrl:argument1 rdf:resource="&loan;x"/>
            <swrl:argument2 rdf:resource="&loan;z"/>
        </swrl:IndividualPropertyAtom>
       
    </swrl:head>
    <swrl:body rdf:parseType="Collection">
    
    <swrl:ClassAtom>
      <swrl:classPredicate rdf:resource="&loan;loanMoney"/>
      <swrl:argument1 rdf:resource="&loan;x" />
    </swrl:ClassAtom>
    
    <swrl:ClassAtom>
      <swrl:classPredicate rdf:resource="&loan;loanMoney"/>
      <swrl:argument1 rdf:resource="&loan;y" />
    </swrl:ClassAtom>
    
    <swrl:ClassAtom>
      <swrl:classPredicate rdf:resource="&loan;loanMoney"/>
      <swrl:argument1 rdf:resource="&loan;z" />
    </swrl:ClassAtom>
    
    
    
         <swrl:IndividualPropertyAtom>
            <swrl:propertyPredicate rdf:resource="&loan;value"/>
            <swrl:argument1 rdf:resource="&loan;x"/>
            <swrl:argument2 rdf:resource="&loan;y"/>
        </swrl:IndividualPropertyAtom>
         <swrl:IndividualPropertyAtom>
            <swrl:propertyPredicate rdf:resource="&loan;value"/>
            <swrl:argument1 rdf:resource="&loan;z"/>
            <swrl:argument2 rdf:resource="&loan;y"/>
   </swrl:IndividualPropertyAtom>
   
    </swrl:body>
</swrl:Impl>


</rdf:RDF>


--  作者:zhangxm
--  发布时间:4/8/2008 1:52:00 AM

--  
indivdual="http://adr.avic1/loan#money1";
         ObjProperty ="http://adr.avic1/loan#same";   
         OWLIndividual loanMoney = reasoner.getIndividual(new URI(indivdual));
         
         System.out.println("完成导入主语");
       
        
         OWLObjectProperty same = reasoner.getObjectProperty(new URI(ObjProperty));
         System.out.println("完成导入谓语");
         results = reasoner.getPropertyValues(john, sameRoom);
         System.out.println("检索记录个数:"+results.size());
          iter = results.iterator();
         
         while(iter.hasNext())
         {
          System.out.println (iter.next());
          
         }


以上是使用swrl进行推理的代码.
使用pellet api对本体进行导入的时候,很正常.包括加载swrl段.
但是进行推理的时候,检索结果个数为0.

但是从本体文件来看.与http://adr.avic1/loan#money1实例有same关系的实例还有
http://adr.avic1/loan#money2,http://adr.avic1/loan#money3
两个.

不知道为什么,请高人指点了.谢谢.


--  作者:zhangxm
--  发布时间:4/8/2008 1:56:00 AM

--  
swrl:ClassAtom>
      <swrl:classPredicate rdf:resource="&loan;loanMoney"/>
      <swrl:argument1 rdf:resource="&loan;z" />
    </swrl:ClassAtom>
这一段,加不加结果都是一样的.气人呀.
唉.文档太少了.

--  作者:sdc_1225
--  发布时间:8/5/2008 4:04:00 PM

--  
是啊,文档太少,例子更少啊,且大都是英文地。对了,楼主,pellet在protege中有可视化的插件吗?
--  作者:fanwander
--  发布时间:8/14/2008 9:14:00 AM

--  
楼主能多介绍一下推理机的用法吗?
谢谢了!
--  作者:HONGDAXIANG
--  发布时间:3/16/2011 1:03:00 AM

--  
我来告诉你吧,PELETE是不支持SWRL规则语言的,这才是正解哈!!!!!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
70.313ms