Как показывает практика, русскоязычного контента о технологиях Семантик Веб днем с огнем не сыщешь. С одной стороны хорошо, а с другой – как-то не очень. Поэтому, некоторым людям иногда приходят мысли – а не написать ли чего-нибудь интересного, дабы обратить полезную (или не очень – кому как) информацию в массы, так сказать.
Где-то так и появился следующий ниже текст, в котором автор пытается ненавязчиво в двух словах рассказать о том, что же такое .



И так, с чего же это все началось. А началось, как показывают достоверные источники, уже давно – в мае 2004 года. Исследователями National Research Council of Canada, Network Inference и Stanford University в рамках работы был представлен «релиз» A Rule Language. Перевести это выражение можно, но не нужно – теряется наглядность смысла.

A Rule Language () – это технология, которая основана на объединении OWL и RuleML, т.е. объединены онтологии (OWL-DL) и правила.

Лирическое отступление.

Следует уточнить, что же разработчики понимали под онтологиями, а что под правилами.

OWL-DL с данном контексте соответствует SHOIN(D), что в переводе на обычный язык означает:

  • S – это ALC (это набор базовых классов, имен свойств и имен объектов, является подмножеством DL) в связке с транзитивными свойствами;
  • H – иерархия свойств;
  • O – номиналы (так называемые классы единичных объектов);
  • I – обратные свойства;
  • N – числовые ограничения области значений свойств;
  • (D) – типы данных, свойства, которые связывают объекты с типами данных.
  • Ядром RuleML является язык Datalog, который, в свою очередь – синтаксическое подмножество Prolog'а. Отсюда вывод: работаем с хорновскими дизъюнктами.
    Дизъюнктом Хорна называют выражение типа
    дизъюнкт Хорна
    откуда, используя правила эквивалентных преобразований, получаем дизъюнкцию всех отрицаний аi и b. Ограничение на предикаты(атомы) -правил заключается в том, что они, в отличии от предикатов RuleML, должны быть одноместными, двуместными. Таким образом, все N-арные отношения (где N > 2) должны быть представлены соответствующей форме, чтобы их было возможно реализовать средствами . Для приведения к этому виду предлагается использовать преобразование Ллойда-Топора.

    Синтаксис .

    Атомы в определены следующим образом.
    atom
    где
    C(i) – класс;
    D(v) – тип данных;
    R(i,j) – объектное свойство;
    U(i,v) – свойства – типы данных (определяет связь);
    p – встроенное отношение;
    i,j – переменные, конкретные экземпляры или значения данных;
    v1, …, vN – типы данных переменных или типы данных значений.

    Выражение в , т.е. -правило, состоит из головы и тела: голова – это консеквент продукционного правила и может состоять только из одного атома, а тело – это антецедент, который может состоять из нескольких атомов (по поводу ограничений на количество информации не встречалось).
    База знаний состоит из двух компонентов:

      1) БЗ SHOIN(D) и
      2) множества -правил.

    Так же разработчиками введено понятие «safety» – безопасность -правил. В правилах атомы могут ссылаться на экземпляры, на реальные данные, переменные экземпляров и переменные данных. Причем, область действия переменных ограничена конкретным правилом. Переменные, которые присутствуют в антецеденте, присутствуют и в консеквенте. В консеквенте не может появится новая переменна, отличная от тех, что были использованы в антецеденте.

    Семантика .

    Правило интерпретации -правил выглядит следующим образом:
    sem
    где
    I – интерпретация;
    R – множество ресурсов;
    LV R – множество конкретных значений;
    EC – отображение классов и типов данных на множества R и LV соответственно;
    ER – отображение свойств на бинарные отношения в R;
    L – отображение расклассифицированных конкретных объектов на элементы LV;
    S – отображение экземпляров на EC.
    Причем, область объектов интерпретации не пересекается с областью типов данных объектов интерпретации.

    Связь интерпретации со структурой атома -правила выглядит следующим образом:

    Атом

    Условие интерпретации

    table_1_1 table_1_2
    table_2_1 table_2_2
    table_3_1 table_3_2
    table_4_1 table_4_2
    table_5_1 table_5_2
    table_6_1 table_6_2
    table_7_11 table_7_2

    В -правиле антецедент удовлетворен, если в нем все атомы пусты (консеквент в этом случае принимает значение истины) или если все атомы удовлетворены (согласованы).
    В -правиле консеквент удовлетворен, если атом в нем не пуст или удовлетворен.
    -правило удовлетворяет интерпретации I, если интерпретация каждого атома в антецеденте удовлетворена и интерпретация консеквента удовлетворена.

    Пример №1 -правила. Определение «быстрого компьютера»
    ex1
    где, к примеру, FastComputer(?c) это C(i), hasCPU(?c; ?cpu) это R(i,j).

    Пример №2 -правила. Определение «дяди».
    uncle1
    где все отношения являются R(i,j).

    Тривиальные -правила можно переводить в DL с помощью метода свертки. А вот привести к DL -правило, в консеквенте которого две различные переменные, невозможно. Для совершения такого преобразования нужно будет сгенерировать новые правила, которые будут содержать в консеквенте по одной переменной (пример №2), что не есть целесообразным действием.

    Зачем нужен ?

    Какими именно устремлениями руководствовались разработчики технологии не известно, т.к. мемуаров они еще не написали (а жаль). Однако суть технологии и принципы ее работы дают возможность определить, что она необходима по следующим причинам:

      1) правила не содержат конкретных объектов, а только ссылаются на них, что дает возможность применять одно и то же правило к ряду групп объектов;
      2) правила могут быть добавлены к OWL-описанию, т.е. включены в онтологию;
      3) написание и «чтение» правил удобнее, если для этого существует специальный язык.

    Возможность работать с уже реализована во многих редакторах онтологий, в т.ч. и в Protege. Поддержка существует в Jess и Sesame.

    Пример №3. Описание определения «дяди» в Jess

    (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

    В целом, – это технология, которая помогает описать абстрактный механизм оперирования объектами предметной области, а так же закономерности предметной области. Основным достоинством является то, что он дает возможность выводить новые факты из существующих утверждений. Так же, плюсом технологии является то, что ее правила можно описывать с помощью таких языков, как CLIPS (что реализовано в Jess) или Prolog, что должно повысить эффективность описания и обработки, как минимум.

    Ссылки

      1.A Semantic Web Rule Language
      2. SWRL 0.6
      3. RuleML
      4. Protégé
      5. Jing Mei, Elena Paslaru Bontas «Reasoning Paradigms for -enabled Ontologies»
      6. Vahid Karimi « Rule Language (