2

我正在写一篇关于天气如何影响人们健康(气象病)的毕业论文。本体如图所示:http: //dl.dropbox.com/u/5322973/WeatherHealthcast1%20-%20Properties.PNG

于是,a 写了一个简单的 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 回答