2

私は、天気が人々の健康にどのように影響するか (気象病) について卒業論文を書いています。オントロジーは、このリンクの図に示されています: http://dl.dropbox.com/u/5322973/WeatherHealthcast1%20-%20Properties.PNG

そこで、簡単な SWRL ルールを作成しました。

Weather(?w) ∧ temperature(?w, ?t) ∧ swrlb:greaterThan(?t, 25.0) → Disease(Migraine1)

これは、気温が 25°C を超える場合、患者が片頭痛を患っている可能性が高いことを意味します (片頭痛 1 は「疾患」クラスの個人です) オントロジーにいくつかの個人を入力し、SQWRL を実行しようとしましたクエリ ルール

Weather(?w) ∧ temperature(?w, ?t) ∧ swrlb:greaterThan(?t, 25.0) → sqwrl:select(Migraine1)

そしてそれはうまくいきます。しかし、SPARQL クエリを実行しようとすると、次のようになります。

prefix WeatherHealthcast:    <http://www.semanticweb.org/ontologies/2011/2/WeatherHealthcast.owl#>
SELECT ?disease ?tm ?w
WHERE
{
?temperature rdf:type WeatherHealthcast:Weather.
?temperature WeatherHealthcast:temperature ?tm.
FILTER (?tm = 30.0).
?disease rdf:type WeatherHealthcast:Disease.
?w rdf:type WeatherHealthcast:Weather.
?w WeatherHealthcast:affects ?disease.
}

ルールが適用されないようです (この SPARQL クエリでは、気温が 30°C の場合に考えられるすべての病気を取得したいと考えています)。これを機能させる方法、SWRLルールをSPARQLクエリに含める方法を知っている人はいますか?

4

1 に答える 1

3

SPARQL を何かに適用したい場合は、まずこの何かを RDF に変換する必要があります。質問は次のようになります。

  • SWRL ルール (ルール 1) は RDF でどのように表されますか?
  • SQWRL ルール (ルール 2) は RDF でどのように表されますか?

最初のルールはかなり奇妙です: 特定の温度の天気が存在する場合、片頭痛は病気であると述べています. これは本当にあなたが言おうとしていることですか?一般に、SWRL ルールの IF 部分と THEN 部分が変数を共有する場合、通常は意味があります。

weather(?w) ∧ temperature(?w, ?t) ∧ swrlb:greaterThan(?t, 25.0)
            ∧ patient(?p) ∧ exposed-to(?p, ?w) →
                                   suffers-from(?p, Migraine)

SQWRL は OWL のクエリ言語です。つまり、SPARQL と同じ空間で動作します。ですから、なぜ SPARQL を使用したいのか、あるいはなぜ SQWRL と SPARQL を組み合わせたいのか、まったくわかりません。

于 2011-06-30T22:53:57.270 に答える