0

嗨,我是本体初学者,

我已经构建了一个本体,并使用 Protege 保存了启用规则的 RDF 文件。我将构建一个从本体获取一些输入的 Web 服务。可以通过查询 swrl:something swrlb:something 标签下的参数、类和属性谓词来提供输入。

例如:IF age<5 & weather='Windy' & season='Winter' THEN InfluenzaRisk=High

我需要一个查询来检索age<5 & weather='Windy' & season='Winter'和另一个查询来检索InfluenzaRisk=High.

作为 SWRL,前件放在这个标签 swrl:body,后件放在这个标签 swrl:head 中

我在下面尝试了这些查询,但它在前因和后因中都有参数。我期待有一种方法可以仅在 swrl:body 或 swrl:head 中缩小查询搜索的范围。

有没有办法做到这一点?

SELECT ?subject ?object
    WHERE { ?subject swrl:argument1 ?object }
ORDER BY ?subject ?object
SELECT ?subject ?object
    WHERE { ?subject swrl:argument2 ?object }
ORDER BY ?subject ?object
SELECT ?subject ?object
    WHERE { ?subject swrl:propertyPredicate ?object }
ORDER BY ?subject ?object

下面我附上本体中的一条最短规则。

<rdf:Description>
    <swrla:isRuleEnabled rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</swrla:isRuleEnabled>
    <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Anthrax risk to non-vegan</rdfs:comment>
    <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">AnthraxRisk4</rdfs:label>
    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#Imp"/>
    <swrl:body>
        <rdf:Description>
            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
            <rdf:first>
                <rdf:Description>
                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#ClassAtom"/>
                    <swrl:classPredicate rdf:resource="http://www.vhynaulia.com/revalina/ontologies/2016/10/pwidas#Person"/>
                    <swrl:argument1 rdf:resource="http://www.vhynaulia.com/revalina/ontologies/2016/10/pwidas#allperson"/>
                </rdf:Description>
            </rdf:first>
            <rdf:rest>
                <rdf:Description>
                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
                    <rdf:first>
                        <rdf:Description>
                            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#IndividualPropertyAtom"/>
                            <swrl:propertyPredicate rdf:resource="http://www.vhynaulia.com/revalina/ontologies/2016/10/pwidas#hasHabits"/>
                            <swrl:argument1 rdf:resource="http://www.vhynaulia.com/revalina/ontologies/2016/10/pwidas#allperson"/>
                            <swrl:argument2 rdf:resource="http://www.vhynaulia.com/revalina/ontologies/2016/10/pwidas#EatingMeats"/>
                        </rdf:Description>
                    </rdf:first>
                    <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
                </rdf:Description>
            </rdf:rest>
        </rdf:Description>
    </swrl:body>
    <swrl:head>
        <rdf:Description>
            <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#AtomList"/>
            <rdf:first>
                <rdf:Description>
                    <rdf:type rdf:resource="http://www.w3.org/2003/11/swrl#BuiltinAtom"/>
                    <swrl:builtin rdf:resource="http://sqwrl.stanford.edu/ontologies/built-ins/3.4/sqwrl.owl#select"/>
                    <swrl:arguments rdf:parseType="Collection">
                        <rdf:Description rdf:about="http://www.vhynaulia.com/revalina/ontologies/2016/10/pwidas#allperson"/>
                    </swrl:arguments>
                </rdf:Description>
            </rdf:first>
            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
        </rdf:Description>
    </swrl:head>
</rdf:Description>
4

0 回答 0