0

オントロジーを開発していますが、Dl クエリに問題があります

「花」というクラスがあります

このクラスにはいくつかの花の名前であるサブクラスがあります

「flowersColor」という別のクラスもあります

そして、これらの値 (「赤」、「緑」、および「青」) をサブクラスではなく個体として持ちます。

すべての花には 1 つ以上の色があります

赤だけで赤い色の花を探したい

私のDLクエリは:

"flower and hasColor value red"

このクエリは、他の色がある場合でも、赤色のすべての花を返します

ただし、色が赤のみのすべての花が必要です

このようなことを書きたい

"flower and hasColor only value red" <- これは文法的に正しくありません

色に「赤」と「緑」の組み合わせがある場合、結果に表示したくありません

あなたが私の質問で私を助けてくれることを願っています

ありがとう

4

2 に答える 2

3

OWL はオープン ワールドの仮定を使用するため、記述ロジックを介して推測できる内容が多少制限されることに注意してください。

したがって、Kaarelが言及しているように、あなたの「クエリ」は次のようになります。

flower and (hasColor only {red})

しかし、これはオープンワールドの仮定では証明できません。宇宙のどこかに、次のように主張する声明が存在する可能性があります。

<RedRose> :hasColor :StackOverflow .

アサーション(クエリしようとしているもの)と組み合わせると、次のようになります。

<RedRose> :hasColor :Red .
<RedRose> a :Flower .

DL クエリが結果を返さない原因となります。したがって、オープンワールドの仮定と、(少なくともあなたの観点からは)ワイルドで不正確で無関係なアサーションが理論的に存在するため、DL クエリは失敗します。

ただし、クエリの例を OWL 制限で使用して、何かが他のものではないかどうかを判断できます。例として、クラス ( :OnlyRedFlower) が赤だけでなければならないが、青の色を持っている場合 (この追加の色をアサートした)、この新しい花はのセットにない:OnlyRedFlowerと推測できます。

更新: これを自分で試すことに興味がある人のために、この質問に基づいて作成したオントロジーを次に示します。

<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
    <!ENTITY onto "http://www.elastra.com/onto/2009/5/30/onto.owl#" >
]>
<rdf:RDF xmlns="http://stackoverflow.com/users/64881/ontology_842588.rdf#"
     xml:base="http://stackoverflow.com/users/64881/ontology_842588.rdf"
     xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:onto="http://www.elastra.com/onto/2009/5/30/onto.owl#">
    <owl:Ontology rdf:about="">
        <rdfs:comment xml:lang="en"
            >Example for http://stackoverflow.com/questions/842588/in-owl-dl-query-how-to-use-advanced-valu-query-in-protege</rdfs:comment>
    </owl:Ontology>
    <owl:ObjectProperty rdf:about="&onto;hasColor"/>
    <owl:Class rdf:about="&onto;Color"/>
    <owl:Class rdf:about="&onto;ExampleFlower">
        <rdfs:subClassOf rdf:resource="&onto;Flower"/>
    </owl:Class>
    <owl:Class rdf:about="&onto;Flower"/>
    <owl:Class rdf:about="&onto;OnlyRedFlower">
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="&onto;Flower"/>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="&onto;hasColor"/>
                        <owl:allValuesFrom>
                            <owl:Class>
                                <owl:oneOf rdf:parseType="Collection">
                                    <rdf:Description rdf:about="&onto;Red"/>
                                </owl:oneOf>
                            </owl:Class>
                        </owl:allValuesFrom>
                    </owl:Restriction>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
        <rdfs:subClassOf rdf:resource="&onto;Flower"/>
    </owl:Class>
    <owl:Class rdf:about="&onto;OtherFlower">
        <rdfs:subClassOf rdf:resource="&onto;Flower"/>
    </owl:Class>
    <onto:Color rdf:about="&onto;Blue">
        <rdf:type rdf:resource="&owl;Thing"/>
    </onto:Color>
    <onto:Flower rdf:about="&onto;BlueOrchid">
        <rdf:type rdf:resource="&owl;Thing"/>
        <onto:hasColor rdf:resource="&onto;Blue"/>
    </onto:Flower>
    <onto:Color rdf:about="&onto;Red">
        <rdf:type rdf:resource="&owl;Thing"/>
    </onto:Color>
    <onto:Flower rdf:about="&onto;RedRose">
        <rdf:type rdf:resource="&owl;Thing"/>
        <onto:hasColor rdf:resource="&onto;Red"/>
    </onto:Flower>
</rdf:RDF>
于 2009-06-30T16:42:36.277 に答える
1

あなたが求めているクエリは次のとおりです。

flower and (hasColor only {red})

{.}コンストラクターは、個体または個体のリストからクラスを作成することに注意してください。したがって、クラスが構文的に必要な場所ならどこでも使用できます。

(not {blue}) subClassOf
             {red} and {green,blue} or (hasColor max 10 ({red} or {blue}))
于 2009-05-10T16:07:17.073 に答える