为什么我的OWL推理器没有给我我预期的结果?

时间:2012-10-24 20:13:43

标签: xml rdf owl inference-engine

Hi Semantic Web人员,

在推断下面的OWL代码之后,我不希望在NamedIndividual:instance_Dromen中有<rdf:type rdf:resource='#Tsunami'>。 不知何故,#Huis和#Auto之间的脱节有什么问题,或者我可能不会以正确的方式使用complementOf?在推理器的结果中,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>

我用作推理器输入的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 van der Plaat

3 个答案:

答案 0 :(得分:3)

你的本体论非常混乱,例如,你说过,自动与Huis脱节,但是Dromen相当于Huis&amp; amp;汽车。

如果您是手写,请停止。得到Protege 4并用它来创作你的本体。除了更容易编写本体之外,它还与各种reasoners集成,因此您可以检查一致性和&amp; GUI中的可满足性。并且您还可以使用解释工具来告诉您为何进行了特定的推断。

最后,几乎总是需要subClassOf而不是equivalentTo。等价在关系中是双向的,这通常不是作者的意图。

答案 1 :(得分:1)

我同意@Michael所写的内容。关于将OWL代码作为(Stackoverflow)问题的一部分呈现的一些一般观点:

  • 使用人类可读的语法,即避免使用XML并避免使用RDF(您同时使用了两种语言),因为两者对于人与人之间的沟通都是不必要的冗长。
  • 用简单的英语解释你的每个公理背后的意图
  • 使用英文实体名称(Stackoverflow用户中没有广泛使用荷兰语)
  • 删除不相关的内容(例如,在这种情况下为SWRL名称空间前缀)

完成这些更改之后,您可能只需要几行代码,而且问题可能会立即显现......

答案 2 :(得分:1)

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

  1. 您已将班级Auto定义为等同于WielenOnderstel的交集,因此推断i属于Auto类型。
  2. 由于i的类型为Auto,我们知道它不是Huis类型(因为这两个类被定义为不相交)。
  3. 由于Tsunami被定义为Huis的补充(即,Huis的所有内容都是Tsunami),i是不属于Huis类型,我们可以推断iTsunami
  4. 更简洁地说,你的本体建模方式导致每AutoTsunami

相关问题