2012-10-24 27 views
3

嗨语义Web乡亲,为什么我的OWL推理器不给我我期望的结果?

我不期望有在NamedIndividual <rdf:type rdf:resource='#Tsunami'>:instance_Dromen推理下面的OWL代码之后。 不知何故,#Huis和#Auto之间的不相交,或者我不使用正确的方式使用complementOf?在inferencer的结果NamedIndividual:instance_Dromen具有下面的输出:

-

<rdf:Description rdf:about="http://www.almfluss.com/rdf/0.1/Ontology.owl#instance_Dromen"> 
    <owl:sameAs rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#instance_Dromen"/> 
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Wielen"/> 
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Auto"/> 
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Onderstel"/> 
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Tsunami"/> 
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> 
    <rdf:type rdf:resource="http://www.almfluss.com/rdf/0.1/Ontology.owl#Dromen"/> 
    </rdf:Description> 

我作为输入使用的inferencer owl代码是:


<?xml version="1.0" encoding="UTF-8" standalone="no"?> 

<!DOCTYPE rdf:RDF [ 
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" > 
    <!ENTITY swrl "http://www.w3.org/2003/11/swrl#" > 
    <!ENTITY swrlb "http://www.w3.org/2003/11/swrlb#" > 
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > 
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > 
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > 
    <!ENTITY Ontology201210 "http://www.almfluss.com/rdf/0.1/Ontology.owl#" > 
]> 

    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
       xmlns="http://www.almfluss.com/rdf/0.1/Ontology.owl#" 
       xmlns:Ontology201210="http://www.almfluss.com/rdf/0.1/Ontology.owl#" 
       xmlns:owl="http://www.w3.org/2002/07/owl#" 
       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
       xmlns:swrl="http://www.w3.org/2003/11/swrl#" 
       xmlns:swrlb="http://www.w3.org/2003/11/swrlb#" 
       xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
       xml:base="http://www.almfluss.com/rdf/0.1/Ontology.owl#"> 

    <owl:DatatypeProperty rdf:about="#hasValue"/> 

    <owl:Class rdf:about="#Dromen"> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:unionOf rdf:parseType="Collection"> 
        <rdf:Description rdf:about="#Huis"/> 
        <rdf:Description rdf:about="#Auto"/> 
       </owl:unionOf> 
      </owl:Class> 
     </owl:equivalentClass> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:complementOf rdf:resource="#Werkloos"/> 
      </owl:Class> 
     </owl:equivalentClass> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:complementOf rdf:resource="#Arbeidsongeschikt"/> 
      </owl:Class> 
     </owl:equivalentClass> 

    </owl:Class> 
    <owl:NamedIndividual rdf:about="#instance_Dromen"> 
       <rdf:type rdf:resource="#Wielen"/> 
       <rdf:type rdf:resource="#Onderstel"/> 
    </owl:NamedIndividual> 

    <owl:Class rdf:about="#Huis"> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:complementOf rdf:resource="#Tsunami"/> 
      </owl:Class> 
     </owl:equivalentClass> 
    </owl:Class> 
    <owl:NamedIndividual rdf:about="#instance_Huis"/> 

    <owl:Class rdf:about="#Auto"> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:intersectionOf rdf:parseType="Collection"> 
        <rdf:Description rdf:about="#Wielen"/> 
        <rdf:Description rdf:about="#Onderstel"/> 
       </owl:intersectionOf> 
      </owl:Class> 
     </owl:equivalentClass> 
     <owl:disjointWith rdf:resource="#Huis"/> 
    </owl:Class> 
    <owl:NamedIndividual rdf:about="#instance_Auto"/> 

    <owl:Class rdf:about="#Werkloos"> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:unionOf rdf:parseType="Collection"> 
        <rdf:Description rdf:about="#ZelfOntslag"/> 
        <rdf:Description rdf:about="#Ontslagen"/> 
       </owl:unionOf> 
      </owl:Class> 
     </owl:equivalentClass> 
    </owl:Class> 
    <owl:NamedIndividual rdf:about="#instance_Werkloos"/> 

    <owl:Class rdf:about="#Arbeidsongeschikt"/> 
    <owl:NamedIndividual rdf:about="#instance_Arbeidsongeschikt"/> 

    <owl:Class rdf:about="#Wielen"/> 
    <owl:NamedIndividual rdf:about="#instance_Wielen"/> 

    <owl:Class rdf:about="#Onderstel"/> 
    <owl:NamedIndividual rdf:about="#instance_Onderstel"/> 

    <owl:Class rdf:about="#Ontslagen"/> 
    <owl:NamedIndividual rdf:about="#instance_Ontslagen"/> 

    <owl:Class rdf:about="#ZelfOntslag"/> 
    <owl:NamedIndividual rdf:about="#instance_ZelfOntslag"/> 

    <owl:Class rdf:about="#Tsunami"/> 
    <owl:NamedIndividual rdf:about="#instance_Tsunami"/> 
    </rdf:RDF> 

我希望有人能帮我。

在此先感谢。

问候, 的Martijn范德Plaat

回答

1

instance_Dromen(从现在开始称之为i,为简洁起见)被定义为Wielen型和Onderstel型。导致它被Tsunami型的推理如下:

  1. 您所定义的类Auto是相当于WielenOnderstel的交点,因此i被推断为Auto类型。
  2. 由于i类型为Auto,我们知道它不是Huis类型(因为这两个类被定义为不相交)。
  3. 由于Tsunami被定义为Huis补(即,不是HuisTsunami一切),而i不是Huis类型,我们可以推断,iTsunami

说得更简洁,你的本体被建模的方式导致每个Auto都是Tsunami

+0

谢谢!这正是我正在寻找的答案。这不是我期望的行为..我同意xml/rdf不是最好的可读格式,但是这种格式是最常用的,所以在 – martijnplaat

+0

@martijnplaat中,如果你发现我的答案有帮助,你可以帮我一个真正的好处通过投票和/或接受它... –

+0

对不起,我的声望只有11,我需要15投票!无论哪种方式,我已经接受你的答案。其实,我有一个后续问题,但是我必须开始一个新的问题页面。 – martijnplaat

3

你的本体是挺乱的,比如,你说,汽车是从回族脱节,但Dromen相当于回族&汽车的工会。

如果您正在手动写入,请停止。去获得Protege 4并用它来创作你的本体。除了使本体更易于编写之外,它还与各种reasoners集成,因此您可以在GUI中检查一致性&。而且您还可以使用解释工具来告诉您为什么进行了特定的推断。

最后,你几乎总是想要subClassOf而不是equivalentTo。这种关系中的对等是双向的,这通常不是作者所期望的。

+0

谢谢你的回答。但是,我不想使用像Protege这样的工具。 我正在寻找我的问题的正式答案:你能逻辑地解释为什么instance_Dromen个体在推理过程之后得到了rdf:type海啸? unionOf Huis&Auto背后的想法以及Auto en Huis之间的脱离是因为我想创建一个我的个人可能是rdf类型的情况:Domen但从来没有同时输入:Huis和type:Auto。 – martijnplaat

1

我同意@Michael写的。只是呈现OWL代码为(#1)问题的一部分,一些基本点:因为这两个

  • 使用人类可读的语法,即避免XML和避免RDF(你同时使用......)是一个不必要的冗长人与人的通信
  • 解释每个公理背后的意图用简单的英语(在这种情况下,如SWRL空间前缀)
  • 使用英语的实体名称(荷兰没有被广泛#2用户中使用)
  • 删除的东西,是不相关的

这些变化,你可能会只剩下几行代码,并与它的问题可能成为立即可见后...

+0

FWIW我不认为实体名称是荷兰语这一事实在这里特别相关 - 但我同意你的一般观点,即更可读的格式将是好的:) –

相关问题