УДК 004.8; 004.4'2
МЕТОД ТРЁХСТОРОННЕГО СЛИЯНИЯ ОНТОЛОГИЙ НАЯЗЫКЕ OWL 2
И.А. Заикин
Томский политехнический университет E-mail: [email protected]
Предложен алгоритм трёхстороннего слияния онтологий при многопользовательском редактировании путём попарного сравнения онтологий, основанный на выявлении совпадающих и конфликтующих изменений. Разработана программная реализация алгоритма.
Ключевые слова:
Онтология, OWL 2, трёхстороннее слияние, версия, изменение, утверждение.
Key words:
Ontology, OWL 2, three-way merge, version, change, statement.
Онтология - это формальное описание определённой предметной области на стандартизированном языке, понятном как людям, так и вычислительным машинам. В настоящее время наиболее распространённым из таких языков является язык OWL 2 [1]. С каждым годом возрастает как количество разработанных онтологий, так и их сложность. Разработка сложных онтологий требует участия специалистов по языку онтологий, специалистов в предметной области, а также специалистов по управлению качеством. Совместная разработка сложных онтологий почти невозможна без инструментальных средств поддержки групповой работы, в частности без систем управления версиями, которые дают возможность сохранять журнал изменений, в случае необходимости отменять нежелательные изменения, сравнивать версии, объединять изменения разных членов команды и облегчают разрешение конфликтов. Одним из важнейших компонентов таких систем является программа для слияния изменений, выполненных различными пользователями. На рис. 1 показаны входные и выходные данные программы трёхстороннего слияния. Символом v0 обозначена исходная версия онтологии, v1 - версия, изменённая первым пользователем, v2 - версия, изменённая вторым пользователем, v3 - итоговая версия, содержащая изменения обоих пользователей.
Рис. 1. Схема трёхстороннего слияния версий
Для выполнения слияния изменений в файлах традиционно используется попарное их сравнение и последующий поиск совпадающих, несовпа-
дающих и конфликтующих изменений. В данной работе этот подход применяется к онтологиям на языке OWL 2 (рис. 2). В то время как обычные программы для слияния изменений в текстовых файлах опираются на предположение, что порядок строк в тексте имеет значение, язык OWL 2 не накладывает ограничений на порядок следования аксиом. К тому же, одна и та же онтология может быть сохранена в различных форматах, что не позволяет использовать для слияния изменений в онтологиях обычные программы слияния изменений в текстах.
Язык OWL 2 имеет две семантики: 1) исторически сложившуюся, основанную на RDF, где основными понятиями являются ресурсы и отношения между ними, а сложные конструкции представлены с использованием так называемых «пустых узлов» и 2) прямую семантику, где основными понятиями являются сущность и аксиома. Сравнение RDF-графов - вычислительно сложный процесс [2], а при наличии большого количества пустых узлов невозможно однозначно идентифицировать изменённые триплеты [3]. В данной работе используется метод структурного сравнения онтологий на основе прямой семантики OWL 2. Использование прямой семантики языка OWL 2 даёт возможность не задумываться о пустых узлах, а выполнять сравнение поаксиомно, используя операции над множествами. Предложенный подход также учитывает атрибуты онтологий, не входящие в логическую составляющую, об изменении которых, тем не менее, важно знать при разработке онтологий. Благодаря этому можно, например, выполнять слияние онтологий в различных форматах представления без потери информацию об изменении формата.
Постановка задачи
Под онтологией в данной работе понимается совокупность
<E,A,I,N,r0,rvJ>, где E - конечное неупорядоченное множество сущностей (классов, типов данных, индивидов и свойств); A - конечное неупорядоченное множе-
ство аксиом (некоторых логических утверждений о сущностях); I - конечное неупорядоченное множество ссылок на другие онтологии (импортов); N - конечное неупорядоченное множество пар вида (p,n), где p - префикс пространства имён (короткая строка, используемая для сокращения имён сущностей), а n - интернационализированный идентификатор (IRI) пространства имён; r0 - интернационализированный идентификатор онтологии; rv - интернационализированный идентификатор версии онтологии; f - формат хранения онтологии, может принимать одно из следующих значений: «RDF/XML», «Turtle», «OWL/XML», «OWL Functional Syntax», «OWL Manchester Syntax».
Пусть v0 - исходная версия онтологии, v1 - версия, изменённая первым пользователем, v2 - версия, изменённая вторым пользователем, C1 - конечное неупорядоченное множество изменений, внесённых в v0 первым пользователем, С2 - конечное неупорядоченное множество изменений, внесённых в v0 вторым пользователем. Эти изменения можно классифицировать следующим образом:
• Совпадающие изменения Cm=C1nC2;
• Конфликтующие изменения пользователя 1:
CC1;
• Остальные изменения пользователя 1:
CO1=(C\Cm)\CC1;
• Конфликтующие изменения пользователя 2:
CC2;
• Остальные изменения пользователя 2:
CO2 ( CA Cm)\ CC2.
Задача трёхстороннего слияния онтологий v0, v1 и v2 состоит в получении онтологии v3, основанной на v0 и содержащей изменения Cm, CO1, CO2 и часть изменений CC1 и CC2, не приводящих к конфликту.
Метод трёхстороннего слияния онтологий
Для выполнения трёхстороннего слияния онтологий с учётом атрибутов, не входящих в логическую составляющую, целесообразно представить онтологию как конечное неупорядоченное множество утверждений S следующих типов:
• OntologyFormatStatement - утверждение, определяющее формат онтологии («RDF/XML», «Turtle», «OWL/XML», «OWL Functional Syntax», «OWL Manchester Syntax»);
• NamespacePrefixStatement - утверждение о префиксе пространства имён, содержащее строку префикса и строку пространства имён;
• ImportStatement - утверждение, определяющее ссылку на импортируемую онтологию;
• OntologylRIStatement - утверждение, определяющее идентификатор онтологии;
• VersionlRIStatement - утверждение, определяющее идентификатор версии онтологии;
• AxiomStatement - утверждение, описывающее аксиому на языке OWL 2.
Обозначим такое преобразование как т:
Si=r(v )
а обратное преобразование - как г1: v=T-1(S).
В этом случае сравнение онтологий сводится к простому сравнению конечных неупорядоченных множеств утверждений S=t(v). Обозначим функцию, вычисляющую изменения между двумя множествами утверждений S0 и S, как <5(£0Д). Каждое изменение состоит из утверждения и операции («+» или «-»), применённой к нему. Введём дополнительные обозначения:
y(o,s) - изменение, представляющее операцию о над утверждением s; co(c) - операция, соответствующая изменению c: co(y(o,s))=o; g(c) - утверждение, соответствующее изменению c: g(y(o,s))=s.
Изменения между S0 и S можно вычислить следующим образом:
S0\S}'u{y(«+»,s) jseSW. Определим сигнатуру cr(s) утверждения s как конечное неупорядоченное множество сущностей, на которые ссылается утверждение s. Сигнатура множества утверждений рассчитывается как объединение сигнатур отдельных утверждений: a({s1,s2,^,sn})=a(s1)ua(s2)u_ua(sn). Сигнатура изменения равна сигнатуре соответствующего утверждения:
o(T(o,s))=o(s).
Сигнатура множества изменений рассчитывается как объединение сигнатур отдельных изменений:
a({c1,c2,...,cn})=a(c1)u0(s2)u...ua(cn).
Конфликтующие изменения пользователя 1 можно найти по следующей формуле: CC1={cGC1\aic)na(C2\Cm)*0}.
Согласно этой формуле, конфликтующими изменениями пользователя 1 считаются изменения, сигнатура которых пересекается с сигнатурой изменений пользователя 2, т. е. изменения, затрагивающие те же сущности, что и изменения пользователя 2. Аналогично конфликтующие изменения пользователя 2
CQ={ceC2\ aic)na(CACm)*0}.
Конфликтующие изменения не могут быть разрешены автоматически, поэтому в большинстве случаев при выполнении трёхстороннего слияния требуется участие пользователя. Обычно выполняет слияние пользователь, вносящий изменения последним. От него требуется выбрать из конфликтующих изменений Оди^те, которые необходимо сохранить. Обозначим эти изменения как CS. Функцию, применяющую множество изменений C к множеству утверждений S, обозначим как e(S,C). Тогда итоговая версия онтологии, содержащая изменения обоих пользователей,
v3=r-1(e(r(v0), CO1U CO2U Cs)).
Программная реализация
На рис. 3 показана диаграмма классов программы. Для работы с онтологиями OWL 2 использова-
лась библиотека OWL API [4]. Класс OWLOntology из этой библиотеки содержит объектное представление онтологии <E,A,I,N,ro,rvf>. Конструктор класса ComparableOntology принимает в качестве аргумента экземпляр v класса OWLOntology и строит из него множество утверждений Si=r(v), которое можно получить, вызвав метод getStatements().
Алгоритм сравнения
Конструктор ChangeSet (s1, s2) выполняет сравнение множеств утверждений по следующему алгоритму.
Входные данные:
• S1 - исходное множество утверждений;
• S2 - изменённое множество утверждений. Выходные данные:
• C - множество изменений.
1. S-^S1\S2
2. S+^S2\S1
3. Для каждого seS~
4. C^CU{j<«-»,s)}
5. Для каждого seS+
6. CVCU{y(«+»,s)}
Алгоритм классификации изменений
Классификацию изменений выполняет конструктор класса ConflictFinder.
Входные данные:
• base=r(v0) - множество утверждений исходной версии онтологии;
• remote=r(v1) - множество утверждений онтологии, изменённой другими пользователями;
• local=r(v2) - множество утверждений онтологии, изменённой локальным пользователем.
«enumeration»
Op
ADD
REMOVE
statementsByType
HashSet<URI>|
conflictsLoca.
conflictsRemote
ChangeSet
-getIntersectionWith(in cs : ChangeSet) getAddedItem() : Set<Statement> getRemovedItems() : Set<Statement> getAdditions() : Set<Change> getRemovals() : Set<Change>
ChangeSet(in s1 : Set<Statement>, in s2 : Set<Statement>) ChangeSet(in cs : Set<Change>)
T-
otherLocal
otherRemote
Signature(in s : Statement) Signature(in c : Change) Signature(in cs : ChangeSet)
| OWL API:: OWLOntology
ComparableOntology
ComparableOntology(in v : OWLOntology) applyChanges(in cs : ChangeSet) : ComparableOntology buildOntology()
getStatements() : Set<Statement>
ConflictFinder
common : ChangeSet
conflictsRemote : ChangeSet
conflictsLocal : ChangeSet
otherRemote : ChangeSet
otherLocal : ChangeSet
ConflictFinder(in base : ComparableOntology, in remote : ComparableOntology, in local : ComparableOntology)
isConflict() : bool
getConflictsCount() : int
Рис. 3. Основные классы программы
common
Выходные данные:
• common= Cm - совпадающие изменения;
• conflictsRemote= CC1 - конфликтующие изменения других пользователей;
• otherRemote= CO1 - oстальные изменения других пользователей;
• conflictsLocal= CC2 - конфликтующие изменения локального пользователя;
• otherLocal= CO2 - остальные изменения локального пользователя.
1. remoteChanges^8(base, remote)
2. localChanges^5(base, local)
3. common-^remoteChangesnlocalChanges
4. remoteChanges^remoteChanges\common
5. localChanges^localChanges\common
6. remoteChangesSig-^o-(remoteChanges)
7. localChangesSig^c(localChanges)
8. conflictsRemote-^0
9. conflictsLocal-^0
10. otherRemote^remoteChanges
11. otherLocal^localChanges
12. Для каждого c eremoteChanges
13. Если localChangesSignc(c)^0
14. conflictsRemote-^conflictsRemoteu {c}
15. otherRemote^otherRemote\{ c}
16. Для каждого celocalChanges
17. Если remoteChangesSigno(c)0
18. conflictsLocal^conflictsLocalu {c}
19. otherLocal^otherLocal\{c}
Алгоритм применения изменений
Алгоритм применения изменений прост благодаря тому, что онтология, включая её атрибуты, представлена в виде множества утверждений. Алгоритм реализован в методе applyChanges() класса ComparableOntology.
Входные данные:
• statements - множество утверждений;
• changes - множество изменений.
Выходные данные:
• statements - множество утверждений.
1. Для каждого c e changes
2. Если ®(c)=«+»
3. statements^statementsu{^(c)}
4. Иначе
5. statements^statements\{^(c)}
Тест производительности
Обозначим т(у!,у,)=|5(т(уі),т(уі))|/(|т(уі)|+|т(у,)|).
Для проверки производительности метода были сгенерированы тройки онтологий (у0,уьу2) со следующими характеристиками:
Ст= СС1= СС2=0;
сш=сь С02=С2;
|т^^о)|=|т(уі)|=|т(у2)|; т(у0,у1)=т(у0,у2)=т(у1,у2)=0,02.
Первые три характеристики обусловлены тем фактом, что выполнить слияние в автоматическом режиме возможно лишь при отсутствии конфликтов, которые потребовалось бы разрешать вручную при их наличии.
На рис. 4 показан график зависимости времени ? слияния от количества утверждений N в онтологиях на вычислительной машине с процессором AMD А6-3410МХ с тактовой частотой 1,6 ГГц и оперативной памятью типа DDR3 объёмом 8 Гб с пропускной способностью 667 МГц. Видно, что при больших значениях |ф)| время слияния растёт экспоненциально. Однако при очень больших значениях |ф)| объём оперативной памяти, требуемый для размещения четырёх версий онтологии, превышает доступный объём физической оперативной памяти, что приводит к использованию дискового пространства, вследствие чего время слияния значительно увеличивается.
Рис. 4. График зависимости времени слияния от количества утверждений
Графический пользовательский интерфейс
Для разрешения конфликтов необходимо предоставить пользователю возможность выбирать изменения, которые он желает внести в итоговую версию онтологии. На рис. 5 показан графический пользовательский интерфейс программы слияния.
ч owl2merge File View Tools
Common changes: 2|Conflicting changes: 6|Other changes: 2|Result|
+ EquivalentClasses: | I + EquivalentClasses:
pizza:Countny pizza:Country
ObjectIntersectionOf: ObjectIntersectionOf:
pizza:DomainConcept 1 pizza:DomainConcept
ObjectOneOf: ObjectOneOf:
□ pizza:America □ pizza:America
pizza:China pizza:England
pizza:England pizza:France
pizza : France pizza:Germany
pizza:Germany pizza:Italy
pizza:Italy pizza:Russia
+ Differentlndividuals:
pizza:America
pizza:China + ClassAssertion:
□ pizza:England □ pizza:Country
pizza:France pizza:Russia
pizza:Germany
pizza:Italy
Рис. 5. Вкладка «Конфликтующие изменения» главного окна программы трёхстороннего слияния онтологий
Главное окно программы состоит из четырёх вкладок, отображающих совпадающие изменения, конфликтующие изменения, остальные изменения и результат - изменения, выбранные для внесения в итоговую версию онтологии. По умолчанию выбраны все совпадающие и другие неконфликтующие изменения, а конфликты предлагается разрешить пользователю.
Заключение
На основе проведённых исследований можно сделать следующие выводы:
1. Предложенный метод позволяет выполнять трёхстороннее слияние онтологий с учётом изменений формата онтологии, префиксов пространств имён, импортов и идентификаторов онтологии за приемлемое время.
2. Недостатком программной реализации является отсутствие возможности группировки изменений по сущностям, а также добавления новых изменений (не внесённых ни одним из пользователей). В дальнейшем предполагается усовершенствование программной реализации.
СПИСОК ЛИТЕРАТУРЫ
1. Motik B., Patel P.F., Parsia B. OWL 2 Web Ontology Language structural specification and functional style syntax // World Wide Web Consortium. 2009. URL: http://www.w3.org/TR/owl2-syntax/ (дата обращения: 23.10.2012).
2. Carroll J. Matching RDF Graphs. 2001. URL: http://www.hpl.hp. com/techreports/2001/HPL-2001-293.pdf (дата обращения: 23.10.2012).
3. DeltaView // ESW Wiki. 2007. URL: http://esw.w3.org/DeltaView (дата обращения: 23.10.2012).
4. Horridge M., Bechhofer S. The OWL API: A Java API for Working with OWL 2 Ontologies // OWL Experiences and Directions: Procs. of the VI Intern. Workshop. - Chantilly, 2009. - V. 529. - P. 53-62.
Поступила 31.10.2012 г.
УДК 004.02:004.82
СЕМАНТИЧЕСКОЕ АННОТИРОВАНИЕ ДОКУМЕНТОВ В ЭЛЕКТРОННЫХ БИБЛИОТЕКАХ
Ле Хоай, А.Ф. Тузовский
Томский политехнический университет E-mail: [email protected]
Рассматривается задача выполнения аннотирования документов в электронных библиотеках, использующих семантические технологии. Описываются причины и преимущества использования таких аннотаций. Предложен новый метод выполнения полуавтоматического аннотирования, и показаны результаты тестирования его программной реализации.
Ключевые слова:
Аннотирование документов, семантические технологии, семантическая аннотация, электронная библиотека организации, методы аннотирования.
Key words:
Document annotation, semantic technology, semantic annotation, enterprise digital library, annotation method.
Введение
В настоящее время большинство электронных ресурсов, в особенности веб-страницы, создается только для их использования людьми. Форматы их описания практически не включают формальных описаний знаний, содержащихся в этих документах. Формальное описание основного смысла документа в удобном для программной обработки формате является целью использования активно разрабатываемых в последнее десятилетие семантических технологий, таких как RDF, RDFS, OWL и SPARQL.
Электронные библиотеки представляют собой специализированные информационные системы, которые выполняют управление коллекциями электронных ресурсов (например, таких как текстовые документы, изображения, мультимедиа
файлы) с целью повышения эффективности использования содержащихся в них знаний некоторыми сообществами пользователей. Под семантическими электронными библиотеками (СЭБ) понимаются электронные библиотеки, использующие семантические технологии для организации всех процессов своей работы, таких как описание ресурсов, ведение каталогов, описание профилей пользователей, поиск и рекомендация ресурсов пользователям и т. п. Одной из важных функций семантических электронных библиотек является предоставление возможности аннотирования публикуемых ресурсов. В данной статье рассматривается проблема реализации такого подхода за счет перехода от человеко-читаемых к програм-мно-обрабатываемым описаниям электронных ресурсов.