Правило SWRL не распространяется на мою онтологию - PullRequest
2 голосов
/ 30 июня 2011

Я пишу дипломную работу о том, как погода влияет на здоровье людей (метеоропатия).Онтология показана на рисунке по этой ссылке: 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 существует большая вероятность того, что пациент будет страдать от мигрени (Migraine1 - человек из класса «Болезнь»). Я ввел некоторых людей в онтологию и попытался выполнить правило запроса 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?

1 Ответ

3 голосов
/ 01 июля 2011

Если вы хотите применить SPARQL к чему-либо, то это что-то должно быть сначала преобразовано в RDF. Тогда возникает вопрос:

  • Как ваше правило SWRL (правило 1) представлено в RDF?
  • Как ваше правило SQWRL (правило 2) представлено в RDF?

1-е правило довольно странное: оно гласит, что если существует погода с определенной температурой, то Мигран является болезнью. Это действительно то, что вы намереваетесь сказать? Обычно это имеет смысл, если IF-часть и THEN-часть правила SWRL совместно используют переменные, например

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.

...