Sparql SWRL规则没有';我不能应用我的本体论

Sparql SWRL规则没有';我不能应用我的本体论,sparql,ontology,owl,swrl,Sparql,Ontology,Owl,Swrl,我正在写一篇关于天气如何影响人们健康(流星病)的毕业论文。本体如此链接中的图片所示: 因此,a编写了一个简单的SWRL规则: Weather(?w) ∧ temperature(?w, ?t) ∧ swrlb:greaterThan(?t, 25.0) → Disease(Migraine1) 这意味着如果天气温度高于25°C,患者极有可能患有偏头痛(偏头痛1属于“疾病”类别) 我在本体中输入了一些个人,并尝试运行SQWRL查询规则 Weather(?w) ∧ temperature(?w,

我正在写一篇关于天气如何影响人们健康(流星病)的毕业论文。本体如此链接中的图片所示:

因此,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.
}
前缀WeatherHealthcast:
选择?疾病?tm?w
哪里
{
?温度rdf:类型WeatherHealthcast:天气。
?温度WeatherHealthcast:temperature?tm。
滤波器(?tm=30.0)。
?疾病rdf:类型WeatherHealthcast:疾病。
?w rdf:类型WeatherHealthcast:天气。
w WeatherHealthcast:影响疾病。
}
这条规则似乎不适用(通过这个SPARQL查询,如果天气温度为30°C,我想得到所有可能的疾病)。
有人知道如何做到这一点吗?如何在SPARQL查询中包含SWRL规则?

如果要将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。

Hi!谢谢你的回答。我稍微改变了SWRL规则,所以现在它看起来有点像你的:Person(?p)∧ 天气(?w)∧ 有(?p,偏头痛)∧ 温度(?w,?t)∧ swrlb:大于(?t,25.0)→ 患有偏头痛(p,偏头痛),当我进行SQWRL查询时:患有偏头痛(p,d)→ sqwrl:选择(?p,?d)效果很好,它只选择“偏头痛”。但是现在a还有其他一些问题。似乎小球推理机不适用我的SWRL规则。你知道为什么吗?