SWRL – как, зачем?
| Публикация | |||||
| Автор: |
| ||||
|---|---|---|---|---|---|
| Технический редактор: | |||||
| Тип публикации: | |||||
| Оригинал: | |||||
Как показывает практика, русскоязычного контента о технологиях Семантик Веб днем с огнем не сыщешь. С одной стороны хорошо, а с другой – как-то не очень. Поэтому, некоторым людям иногда приходят мысли – а не написать ли чего-нибудь интересного, дабы обратить полезную (или не очень – кому как) информацию в массы, так сказать. Где-то так и появился следующий ниже текст, в котором автор пытается ненавязчиво в двух словах рассказать о том, что же такое SWRL.
И так, с чего же это все началось. А началось, как показывают достоверные источники, уже давно — в мае 2004 года. Исследователями National Research Council of Canada, Network Inference и Stanford University в рамках работы W3C был представлен «релиз» A Semantic Web Rule Language. Перевести это выражение можно, но не нужно — теряется наглядность смысла.
A Semantic Web Rule Language (SWRL) — это технология, которая основана на объединении OWL и RuleML, т.е. объединены онтологии (OWL-DL) и правила.
Содержание |
Лирическое отступление
Следует уточнить, что же разработчики понимали под онтологиями, а что под правилами.
OWL-DL с данном контексте соответствует SHOIN(D), что в переводе на обычный язык означает:
-
S— это ALC (это набор базовых классов, имен свойств и имен объектов, является подмножеством DL) в связке с транзитивными свойствами; -
H— иерархия свойств; -
O— номиналы (так называемые классы единичных объектов); -
I— обратные свойства; -
N— числовые ограничения области значений свойств; -
(D)— типы данных, свойства, которые связывают объекты с типами данных.
Ядром RuleML является язык Datalog, который, в свою очередь — синтаксическое подмножество Prolog’а. Отсюда вывод: работаем с хорновскими дизъюнктами.
Дизъюнктом Хорна называют выражение типа
откуда, используя правила эквивалентных преобразований, получаем дизъюнкцию всех отрицаний аi и b. Ограничение на предикаты (атомы) SWRL-правил заключается в том, что они, в отличии от предикатов RuleML, должны быть одноместными, двуместными. Таким образом, все N-арные отношения (где N > 2) должны быть представлены соответствующей форме, чтобы их было возможно реализовать средствами SWRL. Для приведения к этому виду предлагается использовать преобразование Ллойда-Топора.
Синтаксис SWRL
Атомы в SWRL определены следующим образом.
где:
-
C(i)— класс; -
D(v)— тип данных; -
R(i,j)— объектное свойство; -
U(i, v)— свойства – типы данных (определяет связь); -
p— встроенное отношение; -
i,j— переменные, конкретные экземпляры или значения данных; -
— типы данных переменных или типы данных значений.
Выражение в SWRL, т.е. SWRL-правило, состоит из головы и тела: голова — это консеквент продукционного правила и может состоять только из одного атома, а тело — это антецедент, который может состоять из нескольких атомов (по поводу ограничений на количество информации не встречалось).
База знаний SWRL состоит из двух компонентов:
- БЗ
SHOIN(D)и - множества SWRL-правил.
Так же разработчиками введено понятие «safety» — безопасность SWRL-правил. В правилах атомы могут ссылаться на экземпляры, на реальные данные, переменные экземпляров и переменные данных. Причем, область действия переменных ограничена конкретным правилом. Переменные, которые присутствуют в антецеденте, присутствуют и в консеквенте. В консеквенте не может появится новая переменна, отличная от тех, что были использованы в антецеденте.
Семантика SWRL
Правило интерпретации SWRL-правил выглядит следующим образом:
где:
-
I— интерпретация; -
R— множество ресурсов; -
LV R— множество конкретных значений; -
EC— отображение классов и типов данных на множестваRиLVсоответственно; -
ER— отображение свойств на бинарные отношения в R; -
L— отображение расклассифицированных конкретных объектов на элементыLV; -
S— отображение экземпляров наEC.
Причем, область объектов интерпретации не пересекается с областью типов данных объектов интерпретации.
Связь интерпретации со структурой атома SWRL-правила выглядит следующим образом:
| Атом | Условие интерпретации |
|---|---|
| C(i) |
|
| D(v) |
|
| R(i,j) |
|
| U(i,v) |
|
| sameAs(i,j) | S(i) = S(j) |
| differentFrom(i,j) |
|
|
|
В SWRL-правиле антецедент удовлетворен, если в нем все атомы пусты (консеквент в этом случае принимает значение истины) или если все атомы удовлетворены (согласованы).
В SWRL-правиле консеквент удовлетворен, если атом в нем не пуст или удовлетворен.
SWRL-правило удовлетворяет интерпретации I, если интерпретация каждого атома в антецеденте удовлетворена и интерпретация консеквента удовлетворена.
FastComputer (?c) ← Computer (?c) ^ hasCPU (?c; ?cpu) ^ hasSpeed (?cpu; ?sp) ^ HighSpeed (?sp)
где, к примеру, FastComputer (?c) это C (i), hasCPU (?c; ?cpu) это R (i,j).
hasUncle (?x1, ?x3) ← hasBrother (?x2, ?x3) ^ hasParent (?x1, ?x2)
где все отношения являются R (i,j).
Тривиальные SWRL-правила можно переводить в DL с помощью метода свертки. А вот привести к DL SWRL-правило, в консеквенте которого две различные переменные, невозможно. Для совершения такого преобразования нужно будет сгенерировать новые правила, которые будут содержать в консеквенте по одной переменной (пример №2).
Зачем нужен SWRL?
Какими именно устремлениями руководствовались разработчики технологии SWRL не известно, т.к. мемуаров они еще не написали (а жаль). Однако суть технологии и принципы ее работы дают возможность определить, что она необходима по следующим причинам:
- правила SWRL не содержат конкретных объектов, а только ссылаются на них, что дает возможность применять одно и то же правило к ряду групп объектов;
- правила SWRL могут быть добавлены к OWL-описанию, т.е. включены в онтологию;
- написание и «чтение» правил удобнее, если для этого существует специальный язык.
Возможность работать с SWRL уже реализована во многих редакторах онтологий, в т.ч. и в Protege. Поддержка SWRL существует в Jess и Sesame.
(defrule rule-5 (triple (predicate «http://a.com/ontology#hasParent») (subject ?x) (object ?y)) (triple (predicate «http://a.com/ontology#hasBrother») (subject ?y) (object ?z)) => (assert (triple (predicate «http://a.com/ontology#hasUncle») (subject ?x) (object ?z))))
В Sesame описание правил проходит так, как показано на W3C — SWRL
В целом, SWRL — это технология, которая помогает описать абстрактный механизм оперирования объектами предметной области, а так же закономерности предметной области. Основным достоинством SWRL является то, что он дает возможность выводить новые факты из существующих утверждений. Так же, плюсом технологии SWRL является то, что ее правила можно описывать с помощью таких языков, как CLIPS (что реализовано в Jess) или Prolog, что должно повысить эффективность описания и обработки, как минимум.
Ссылки
- A Semantic Web Rule Language
- SWRL 0.6
- RuleML
- Protégé
- Jing Mei, Elena Paslaru Bontas «Reasoning Paradigms for SWRL-enabled Ontologies»
- Vahid Karimi «Semantic Web Rule Language (SWRL)»