Советы от читателей форума Semantic Web User Group (Выпуск 1)

, , , | Shcherbak Sergey | 29.05.2011 | Комментариев нет


Ув. читатели, как вы уже наверняка заметили в хедере моего блога появилась флеш-панель с выводом тем последних дискуссий форума Semantic Web User Group. Это сделано для того, чтобы вы всегда могли получить самую свежую информацию о текущих дискуссиях на форуме.

Итак, развиваем семантические технологии вместе…

Нижеследующий материал в основном базируется на размышлениях Павла Клинова и пользователя Root Wheelkens.

1) Про интеграцию данных на основе OWL

(П. Клинов): Интеграция данных — это, наверное, одно из наиболее часто упоминаемых приложений не только OWL, но вообще семант. технологий. На мой взгляд для этого лучше подходят менее выразительные языки. В частности, при стандартизации OWL 2 для этой цели был сформулирован отдельный профиль — OWL 2 QL. Он основан на логике DL Lite (которая намного беднее той, что стоит за OWL 2 DL и, тем более, FOL), но зато у нее есть ключевое свойство: запросы могут (относительно) легко переписываться с учетом онтологии, чтобы результаты могли включать неявно заданные факты. При этом есть возможности вывода, которых нет, например в RDFS + есть гарантии хорошей вычислительной сложности. Подобное переписываение (query rewriting) позволяет, в частности, скрыть разнородные источники данных за общей онтологией (схемой), описав в ней как их схемы должны сопоставляться друг с другом. У Карстена Лутца (Carsten Lutz) есть ряд хороших статей на эту тему. Некоторые RDF DB постепенно начинают поддерживать SPARQL с лог. выводом в рамках OWL 2 QL.

Более выразительные языки (OWL 2 EL, OWL 2 DL), *на мой взгляд*, полезнее не столько для непосредственной интеграции данных, сколько для управления терминологиями в сложных областях (медицина, химия, биоинформатика). Здесь важно, чтобы люди и приложения, работающие над общими задачи, имели возможность утвердить и придерживаться общей семантики терминов. Для этого за посление лет 15 было создано немало крупных онтологий (SNOMED, Gene Ontology, Foundational Model of Anatomy, etc.). Точное описание семантики терминов требует выразительности.

Ну и напоследок замечу, что все рады бы использовать FOL, если бы не вычислительная полуразрешимость (что для вывода фактически эквивалентно неразрешимости). А Пролог — это не FOL, а (грубо говоря) определенное его подмножество, в чем-то богаче, в чем-то беднее чем DL. В контексте семант. технологий большую распространенность получила разновидность, Datalog, которую периодически пытаются использовать.

2) Если очень хочеться работать с SWRL прямо сейчас, подумайте зачем вам связываться с неразрешимым языком… если есть DL safe rules

(П. Клинов): в отличие от SWRL, DL safe rules применяются только к именованным объектам (т.е. тем, которые в ABox) и не могут выводить TBox-аксиомы. Т.е. своего рода closed-world reasoning. Подробнее можно прочитать в оригинальной статье Бориса Мотика, которая называется «Query Answering for OWL-DL with Rules». Pellet умеет с ними работать.

3) Что подразумевается под понятием неразрешимость?

(П. Клинов): Неразрешимость (вычислительная) некоторой формальной системы, в частности, логики, означает, что не существует алгоритма, который бы за конечное время давал ответ на вопрос, согласована ли система утверждений (логическая теория).

FOL — полуразрешима. Это означает, что если лог. теория (база знаний) несогласована, то есть метод (например, resolution), который определелит это за конечное время. В то же время, если она согласована, то это нельзя доказавать за конечное время (в общем случае). Из этого следует, что могут существовать утверждения, которые вытекают из теории, но не могут быть доказаны.

OWL 2 DL базируется на логике SROIQ, которая была очень тщательно спроектирована так, чтобы добиться максимальной выразительности, не потеряв разрешимость. Практически любое добавление новых фич в SROIQ приведет к неразрешимости (например, ограничения кардинальности на транзитивных свойствах, а-ля «все люди, которых более 2-х потомков (где потомок — транзитивное свойство)».).

Примером неразрешимого семант. языка является SWRL (язык правил).

Prolog разрешим, в частности, потому что базируется на Horn-фрагменте FOL.

4) Что такое объединение онтологий?
Объединение онтологий = объединение множеств аксиом. Импорт (owl:imports) именно это и делает — весь логический вывод будет делаться на основе замыкания (т.е. если А импортирует Б, а Б — С, то замыкание — это А + Б + С).

5) Как изменить синтаксис языка OWL генерирумого Протеже 4.1.0? (например, манчестерский синтаксис, OWL/RDF, OWL/XML)

(Root Wheelkens): В протеже выбираем вкладку «Windows -> Views -> Ontology Views -> И дальше выбираешь уже какой синтаксис нужен»

6) Что означает факт, что классы equivalent или disjoint? Приведите пожалуйста конкретные примеры, когда мы делаем disjoint class и equivalent class.

(П. Клинов): equivalent означает, что все экземпляры класса А являются экземплярами Б и наоборот. disjoint означает, что ни один экземпляр класса А не является экземпляром класса Б.

7) Насчет аксиом. Правильно ли можно считать, что когда мы задаем disjoint и equivalent классы, мы уже на них накладываем ограничения и это можно считать аксиомами. Если да, то для чего используется вкладка General class axioms? И как вообще в ней задавать аксиому (приведите, пожалуйста, небольшой пример)?

(П. Клинов): Правильно. Эквивалентность и взаимоисключаемость задаются аксиомами. GCI — это утверждения общего вида, не относящиеся к конкретному классу (например A or B subclassof C and D).

8)У меня в онтологии помимо связи is_a присутствуют семантические связи, как, например, Company engagedIn Filed. То есть компания занимается в сфере деятельности. Почему когда я визуализирую, у меня на графе отображаются только связи is_a, а таких семантических связей между классами не видно. Мб связано с тем необходим какой то модуль дополнительный, или protege их в принципе не показывает?

(П. Клинов): Потому что нет общего, не зависящего от приложения способа представления других отношений. В частности, непонятно как различать связи, накладываемые аксиомами A subclassof R some B и A subclassof R only B. И там и там свойство R, но семантика абсолютно разная.

9) О Data properties в Protege 4.

(П. Клинов): Data properties можно создавать на закладке Data Properties. Для каждого свойства указывается domain и range. Domain X для свойства P означает, что любой экземпляр, обладающий свойством P, должен принадлежать классу X. Для data properties (в отличие от object properties) в качестве range указывается тип данных (строки, даты, числа и т.д.), а не классы.

10) Логический вывод, что это такое?

(П. Клинов): «Вывод» (reasoning, inference, etc) — это процесс получения утверждений, которые явно не заданы в онтологии, но следуют из нее логически. Пример:
— Петя — счастливый отец
— «счастливый отец» — это человек, все дети которого поступили в ВУЗ
— Вася — сын Пети
Вывод: Вася поступил в ВУЗ
Из определения вывода, в частности, следуют 2 вещи:
— вытекаемое утверждение можно добавить в онтологию, никак не изменив семантику терминов
— добавление отрицания вытекаемого утверждения приведет к несогласованности (unsatisfiability) онтологии

11) Про Populous: онтологии из электронных таблиц

(П. Клинов): Populous. Это программка для создания онтологий путем редактирований электронных таблиц. Сделана была для того, чтобы облегчить создание онтологий для различных экспертов предметных областей (в основном биологов), которые не всегда способны осилить Protege (и OWL), но зато привыкли к Excel и тому подобному.

В общем-то программ для конвертации xls -> rdf достаточно много и ничего в этом особо сложного нет, но Populous отличается тем, что позволяет не просто добавлять объекты (ABox), а еще и генерировать достаточно сложные OWL-аксиомы. Т.е. выходит далеко за рамки RDF. Это работает благодаря OPPL — языку шаблонов для препроцессинга OWL. Т.е. грубо говоря, пишется шаблон, в котором указывается, как данные из ячеек таблиц должны конвертироваться в OWL (этим занимается человек, знакомый с OWL), а затем эксперт ПО просто заносит данные. Плюс есть еще немало возможностей валидации и т.д.

12) Как извлекать данные из онтологии?

(П. Клинов): лучший инструмент — это OWL API. Но это API для Java. Если онтология сериализована в XML (OWL/XML или RDF/XML), то можно извлечь все, что нужно через XPath/XQuery. Думаю, что из большинства скриптовых языков работать с ними можно.

PS. Понимаю, конец учебного года и многим уже не терпиться на отдых, куда-нибудь на море. Но кому-то из читателей-студентов еще сдавать зачет по онтологиям и связанным семантическим технологиям. Поэтому для вас этот материал будет особенно актуальным. Ну а потом уже на отдых или еще лучше в морской круиз.

Кстати, обращаю ваше внимание, что это заметка первая из цикла. За последний год на форуме накопилось там очень много знаний.

Хорошего вам отдыха на море!


Понравилась статья? Поделитесь с друзьями!


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Ответить с помощью ВКонтакте: