1

私は最近、実践するために小さなオントロジーを作成しました。私のオントロジーには、1 つの SWRL ルールによって定義された、EmployedPerson というクラスが存在します: Person(?x), (worksin min 1 Place)(?x) -> EmployedPerson(?x)。

また、クラス式で定義された UnEmployedPerson という別のクラスがあります。(Person and (not (EmployedPerson))) と同等です。これは、UnEmployedPerson が EmployedPerson の補数であることを意味します。

上記の両方のクラス (EmployedPerson と UnEmployedPerson) は Person のサブクラスであり、person は「EmployedPerson または UnEmployedPerson」として設定されます。Person クラスには、Ivan、Lenka、Martin の 3 人の個人がいます。すべての個人は異なる個人です。

別のクラス Place には、個別の「WorksApplication」があります。オブジェクト プロパティ 'worksin' は、クラス 'Person' とクラス 'Place' をリンクします。

私のオントロジーには、次の 2 つの公理があります。 Lenka は Worksapplication で機能します Martin は Worksapplication で機能します Pellet と HermiT による推論の後、Lenka と Martin は SWRL ルールに基づいて EmployedPerson のメンバーであると推論できます。

Ivan は EmployedPerson に属しておらず、UnEmployedPerson は EmployedPerson の補数であるため、Evan はクラス UnEmployedPerson のメンバーとして推論される必要があります。

しかし実際には、Pellet と Hermit による推論の後、Ivan はクラス UnEmployedPerson で推論できません。結果は私の期待に応えませんでした。ONTOLOGY に何か問題がありますか、それとも OWA の効果を無視していますか? その問題に対処するのを手伝ってください。クラス UnEmployedPerson で Ivan が推論されるのを見たいです!!

この動作を示すオントロジーは次のとおりです。

<Declaration>
    <Class IRI="#Adult"/>
</Declaration>
<Declaration>
    <Class IRI="#EmployedPerson"/>
</Declaration>
<Declaration>
    <Class IRI="#Parent"/>
</Declaration>
<Declaration>
    <Class IRI="#Person"/>
</Declaration>
<Declaration>
    <Class IRI="#Place"/>
</Declaration>
<Declaration>
    <Class IRI="#UnemployedPerson"/>
</Declaration>
<Declaration>
    <ObjectProperty IRI="#wokrsin"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#Ivan"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#Lenka"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#Martin"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#TreatHighBloodSugar"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#worksapplication"/>
</Declaration>
<EquivalentClasses>
    <Class IRI="#Person"/>
    <ObjectUnionOf>
        <Class IRI="#EmployedPerson"/>
        <Class IRI="#UnemployedPerson"/>
    </ObjectUnionOf>
</EquivalentClasses>
<EquivalentClasses>
    <Class IRI="#UnemployedPerson"/>
    <ObjectIntersectionOf>
        <Class IRI="#Person"/>
        <ObjectComplementOf>
            <Class IRI="#EmployedPerson"/>
        </ObjectComplementOf>
    </ObjectIntersectionOf>
</EquivalentClasses>
<SubClassOf>
    <Class IRI="#Adult"/>
    <Class IRI="#Person"/>
</SubClassOf>
<SubClassOf>
    <Class IRI="#EmployedPerson"/>
    <Class IRI="#Person"/>
</SubClassOf>
<SubClassOf>
    <Class IRI="#Parent"/>
    <Class IRI="#Person"/>
</SubClassOf>
<SubClassOf>
    <Class IRI="#UnemployedPerson"/>
    <Class IRI="#Person"/>
</SubClassOf>
<DisjointClasses>
    <Class IRI="#Person"/>
    <Class IRI="#Place"/>
</DisjointClasses>
<ClassAssertion>
    <Class IRI="#Person"/>
    <NamedIndividual IRI="#Ivan"/>
</ClassAssertion>
<ClassAssertion>
    <Class IRI="#Person"/>
    <NamedIndividual IRI="#Lenka"/>
</ClassAssertion>
<ClassAssertion>
    <Class IRI="#Person"/>
    <NamedIndividual IRI="#Martin"/>
</ClassAssertion>
<ClassAssertion>
    <Class IRI="#Place"/>
    <NamedIndividual IRI="#worksapplication"/>
</ClassAssertion>
<DifferentIndividuals>
    <NamedIndividual IRI="#Ivan"/>
    <NamedIndividual IRI="#Lenka"/>
</DifferentIndividuals>
<DifferentIndividuals>
    <NamedIndividual IRI="#Ivan"/>
    <NamedIndividual IRI="#Martin"/>
</DifferentIndividuals>
<DifferentIndividuals>
    <NamedIndividual IRI="#Ivan"/>
    <NamedIndividual IRI="#worksapplication"/>
</DifferentIndividuals>
<DifferentIndividuals>
    <NamedIndividual IRI="#Lenka"/>
    <NamedIndividual IRI="#Martin"/>
</DifferentIndividuals>
<DifferentIndividuals>
    <NamedIndividual IRI="#Lenka"/>
    <NamedIndividual IRI="#worksapplication"/>
</DifferentIndividuals>
<DifferentIndividuals>
    <NamedIndividual IRI="#Martin"/>
    <NamedIndividual IRI="#worksapplication"/>
</DifferentIndividuals>
<ObjectPropertyAssertion>
    <ObjectProperty IRI="#wokrsin"/>
    <NamedIndividual IRI="#Lenka"/>
    <NamedIndividual IRI="#worksapplication"/>
</ObjectPropertyAssertion>
<ObjectPropertyAssertion>
    <ObjectProperty IRI="#wokrsin"/>
    <NamedIndividual IRI="#Martin"/>
    <NamedIndividual IRI="#worksapplication"/>
</ObjectPropertyAssertion>
<DLSafeRule>
    <Body>
        <ClassAtom>
            <Class IRI="#Person"/>
            <Variable abbreviatedIRI="var:x"/>
        </ClassAtom>
        <ClassAtom>
            <ObjectMinCardinality cardinality="1">
                <ObjectProperty IRI="#wokrsin"/>
                <Class IRI="#Place"/>
            </ObjectMinCardinality>
            <Variable abbreviatedIRI="var:x"/>
        </ClassAtom>
    </Body>
    <Head>
        <ClassAtom>
            <Class IRI="#EmployedPerson"/>
            <Variable abbreviatedIRI="var:x"/>
        </ClassAtom>
    </Head>
</DLSafeRule>

4

1 に答える 1

1

0) SWRL ルールを使用する代わりに、GCI を使用できます

Person and (works min 1 Place) subClassOf EmployedPerson.

これにより、SWRL をサポートせず、クラスでも (名前付きの個人だけでなく) 動作し、一般的により優れたパフォーマンスを提供する推論を使用できます。

1) それは確かに OWA の結果です。Ivan働く場所があるかどうかはわかりません。職場があること知らないので、彼がEmployedPerson. 職場がないかどうか分からないので、UnEmployedPerson. Person が完全にカバーされており、ここでは問題にならないという事実EmployedPerson:UnEmployedPersonPersonがどの種類の人物であるかはまだわかりません (そして、OWA のために推測できませんでした)。

于 2015-02-28T20:12:15.647 に答える