=Paper= {{Paper |id=Vol-2022/paper33 |storemode=property |title= Спецификация и реализация разномодельных правил интеграции данных (Specification and Implementation of Multimodel Data Integration Rules) |pdfUrl=https://ceur-ws.org/Vol-2022/paper33.pdf |volume=Vol-2022 |authors=Sergey Stupnikov |dblpUrl=https://dblp.org/rec/conf/rcdl/Stupnikov17a }} == Спецификация и реализация разномодельных правил интеграции данных (Specification and Implementation of Multimodel Data Integration Rules) == https://ceur-ws.org/Vol-2022/paper33.pdf
   Спецификация и реализация разномодельных правил
                 интеграции данных

                                       © С. А. Ступников
                          Институт проблем информатики ФИЦ ИУ РАН,
                                             Москва
                                      sstupnikov@ipiran.ru
         Аннотация. В работе рассматривается подход к спецификации правил интеграции данных с
    использованием рекомендации W3C - логического диалекта RIF-BLD. Это позволяет использовать в
    одном правиле сущности из разных коллекций, представленных в разных моделях данных.
    Логическая семантика RIF-BLD также позволяет однозначным образом интерпретировать
    спецификации рассматриваемых правил интеграции. Предложен подход к реализации правил RIF-
    BLD в языке HIL: это позволяет компилировать правила интеграции в программы вычислительной
    модели MapReduce и исполнять их в распределенных инфраструктурах, основанных на Hadoop.
         Ключевые слова: интеграция данных, модели данных, логические правила, реализация
    правил


        Specification and Implementation of Multimodel Data
                           Integration Rules

                                        © Sergey Stupnikov
  Institute of Informatics Problems, Federal Research Center “Computer Science and Control” of
                                 the Russian Academy of Sciences,
                                              Moscow
                                       sstupnikov@ipiran.ru
          Abstract. The paper considers an approach for specification of data integration rules using RIF-BLD
    logic dialect that is a recommendation of W3C. This allows us to reference entities defined in different
    collections represented using different data models in the same rule. Logical semantics of RIF-BLD
    provides also unambiguous interpretation of data integration rules. The paper proposes an approach for
    implementation of RIF-BLD rules using HIL language. Thus data integration rules are compiled into
    MapReduce programs and can be executed over Hadoop-based distributed infrastructures.
          Keywords: data integration, data models, logic rules, rule implementation

                                                               Ввиду роста неоднородности источников
 1 Введение                                                 данных, их количества и объемов данных,
                                                            актуальными остаются вопросы разработки методов
    Хранилища данных в настоящее время являются             спецификации и реализации интеграции данных в
 одной из основных составляющих инфраструктур               масштабируемых инфраструктурах распределенного
 поддержки систем бизнес-аналитики. Данные                  хранения и обработки данных, подобных Apache
 извлекаются      из     различных     коллекций,           Hadoop [1].
 преобразуются к схеме хранилища, интегрируются и
                                                               Традиционные промышленные решения по
 загружаются в хранилище. Над хранилищем
                                                            интеграции данных и разработке хранилищ
 выстраивается слой приложений, осуществляющих
                                                            (например, IBM InfoSphere Information Server [2])
 анализ данных (например, при помощи методов
                                                            предлагают визуальные средства проектирования
 математической статистики, машинного обучения и
                                                            потоков работ интеграции данных, оперирующие,
 др.) и выдающих результат пользователю в
                                                            преимущественно, понятиями и операциями
 необходимой форме.
                                                            реляционной модели и порождающие программы
                                                            трансформации и интеграции данных на языке SQL.
Труды    XIX  Международной     конференции                 Отдельно    выделяются    визуальные    средства
«Аналитика и управление данными в областях с                сопоставления схем исходных коллекций данных и
интенсивным      использованием     данных»                 схемы хранилища (целевой схемы), например,
(DAMDID/RCDL’2017), Москва, Россия, 10-13
октября 2017


                                                      197
InfoSphere       FastTrack      [2],      позволяющие           интеграции неоднородных коллекций данных по
автоматически порождать части потоков работ                     Арктической зоне в хранилище информации,
интеграции данных. Для обеспечения интеграции                   нацеленной на поддержку поисково-спасательных
данных, представленных в различных моделях                      операций. Были выбраны неоднородные коллекции
данных, такие средства предоставляют отдельные                  данных, подлежащие интеграции [16] и разработана
компоненты,        позволяющие        преобразовывать           единая схема хранилища [20]. В данной статье в
исходные данные к реляционной модели (например,                 качестве примеров рассматриваются коллекции,
компонент преобразования XML в IBM InfoSphere                   представленные в реляционной модели, XML,
DataStage [3]).                                                 документной модели MongoDB, графовой модели
    Параллельно        промышленным          решениям,          Neo4j.    Схема   хранилища     представлена   в
проводятся исследования методов формальной                      реляционной модели. В дальнейшем предполагается
спецификации        правил     интеграции       данных.         использование результатов работы в различных
Классическим примером работы в данном                           проектах, предусматривающих интеграцию данных.
направлении является подход обмена данными [9].                    Структура статьи выглядит следующим образом.
Подход позволяет описывать интеграцию данных                    В разделах 2-4 иллюстрируются подход к
реляционной модели с использованием логических                  спецификации     правил    интеграции    данных,
правил, которым сообщается формальная семантика                 представленных в различных моделях (раздел 2 –
в логике предикатов первого порядка.                            XML и реляционная модель, раздел 3 – документная
    В данной статье рассматривается подход к                    модель, раздел 4 – графовая модель) с
спецификации правил интеграции данных с                         использованием диалекта RIF-BLD и подход к
использованием рекомендации W3C - логического                   реализации правил в языке HIL. В разделе 5
диалекта RIF-BLD [6]. RIF-BLD является диалектом                обобщаются применяемые принципы спецификации
каркаса логических диалектов RIF-FLD формата                    и реализации правил интеграции.
обмена правилами RIF [5], нацеленного на
унификацию синтаксиса и семантики языков                        2 Спецификация и реализация правил
логических правил. RIF-BLD включает достаточно                  интеграции данных XML и реляционной
широкий спектр возможностей спецификации, в                     модели с разрешением конфликтов
частности, позиционные термы и термы с
именованными аргументами (обобщающие понятие                       В данном разделе рассматриваются два примера
терма в логике первого порядка), фреймовые термы                правил     интеграции    данных,  оперирующих
(выражающие утверждения о структуре объектов),                  сущностями XML и реляционной модели.
классификационные термы, термы равенства,                          В первом примере рассматривается правило
внешние термы (использующиеся для ссылок на                     преобразования данных из XML к реляционной
сущности, рассматриваемые как «черные ящики» в                  схеме хранилища (целевой схеме) с разрешением
пределах       спецификации).        Это      позволяет         структурных конфликтов, конфликтов имен и
использовать в одном правиле сущностей из разных                значений.
коллекций, представленных в разных моделях                         Во втором примере рассматривается правило
данных. Рассматриваются правила, в голове                       преобразования данных из соединения двух
которых могут присутствовать лишь предикаты,                    коллекций, одна из которых представлена в XML,
соответствующие сущностям целевой схемы, а в                    другая – в реляционной модели.
теле – предикаты, соответствующие сущностям
исходных схем.
                                                                2.1 Интеграция данных о маршрутах объектов
    Логическая семантика RIF-BLD позволяет
однозначным           образом        интерпретировать              В левом столбце таблицы 1 приведен пример
спецификации рассматриваемых правил интеграции                  данных в формате XML о маршруте объекта,
и допускает их реализацию с использованием                      полученных из системы мониторинга, учета и
различных языков – от декларативных (например,                  классификации судов КИИС «МоРе» [18]. Маршрут
SQL) до императивных (например, Java). В данной                 (элемент ISSKOI_Track) состоит из маршрутных
работе рассматривается подход к реализации                      точек (ISSKOI_TrackPoint). В каждой точке заданы
логических правил RIF-BLD в языке высокого                      значения координат (pos), времени (Time) и высоты
уровня HIL [10][7], разработанного компанией IBM,               (BarAltitude). Данные о других маршрутах имеют ту
и поставляемого в составе Hadoop-решения                        же структуру элементов и отличатся значениями
BigInsights 3.0 [11], а также как часть InfoSphere Big          элементов и атрибутов.
Match for Hadoop [12]. Распределенное исполнение                   В правом столбце таблицы приведены элементы
программ на HIL в среде Hadoop достигается путем                целевой схемы, соответствующие исходным
их компиляции в программы на Java, которые, в                   данным. Так, элемент ISSKOI_Track соответствует
свою очередь, исполняются с использованием                      отношению целевой схемы Track, вложенный
средств поддержки в Hadoop вычислительной                       элемент Id соответствует первичному ключу (PK)
модели MapReduce [14].                                          Track.trackId, вложенный элемент TrackName –
   Подходы к спецификации и реализации правил                   атрибуту Track.name. Элемент ISSKOI_TrackPoint
интеграции       иллюстрируются        на     примерах          соответствует     отношению      целевой    схемы




                                                          198
TrackPoint, атрибут элемента id соответствует                    Forall      в    правиле      обозначает      квантор
первичному ключу TrackPoint.pointId, вложенные                всеобщности, знак «:-» обозначает импликацию –
элементы Time и BarAltitude – атрибутам                       логическое следование формулы-головы правила из
TrackPoint.time и TrackPoint.height соответственно,           формулы-тела правила, операция AND обозначает
вложенный        элемент     pos       –    атрибутам         конъюнкцию. Идентификаторы вида ?X обозначают
TrackPoint.logtitude и TrackPoint.latitude.                   переменные.
                                                                 В правиле используется три вида предикатов. В
Таблица 1 Данные о маршруте объекта                и          голове правила используются предикаты с
соответствующие элементы целевой схемы                        именованными аргументами [6] Track и TrackPoint,
Пример данных в исходной модели          Элементы             соответствующие отношениям целевой схемы.
            (XML)                         целевой                В теле правила используются предикаты
                                           схемы              членства          [6]        (например,         предикат
                                       (реляционная           ?Track#ISSKOI_Track, обращающийся в истину,
                                          модель)             когда переменная ?Track принимает значение
                         Track(                 произвольного         элемента     ISSKOI_Track)       и
 56473                         PK trackId,           фреймовые предикаты [6], отражающие структуру
 copter-1        name)
                                          XML-элементов исходных данных. Так, предикат
  ?pos] обращается в истину на таких
    id="uuid-2b7ca14">                  PK pointId,           парах значений переменных ?Point и ?pos, что
                              FK path,              элемент – значение переменной ?Point имеет
              time,
     33.8957 246.37          height,               вложенный элемент pos и его значение есть ?pos.
                            latitude,             Конъюнкция предикатов в теле правила полностью
                             longitude)            задает структуру вложенных элементов и атрибутов
   
                                                              произвольного элемента ISSKOI_Track.
   533.89                                           Связь значений атрибутов отношений в голове
                                                правила и значений элементов и атрибутов в теле
   108.1
   2                                         правила задается при помощи переменных, таким
                                                 образом      разрешаются       конфликты       имен    и
                                                структурные конфликты.

                                                                 Конфликты значений могут быть разрешены при
                                                              помощи        функций       (например,     get_latitude),
   В рассмотренном примере, как и в других                    представляемых в RIF-FLD как внешние термы
примерах, приведенных ниже, приведена лишь                    (External). Их семантика в рамках RIF-FLD
часть элементов, составляющих исходные данные и               напрямую не определяется и уточняется при
целевую схему.                                                реализации       (например,      семантика      функции
   Очевидно, что при спецификации правила                     get_latitude состоит в том, чтобы вернуть первое
интеграции данных о маршрутах необходимо                      число, входящее в исходную строку).
разрешить конфликты имен (например, элемент                      Рассмотренное правило имеет естественную
BarAltitude и атрибут height имеют одинаковую                 логическую семантику: для всех наборов значений
семантику, но разные имена), структурные                      подкванторных переменных, обращающих в истину
конфликты и конфликты значений (элемент pos,                  все предикаты тела правила на исходной коллекции,
содержащий широту и долготу, соответствует двум               отношения хранилища должны содержать кортежи,
отдельным атрибутам logtitude, latitude).                     соответствующие предикатам головы правила с тем
   С      использованием     диалекта     RIF-BLD             же     набором        значений     переменных.       Для
необходимое правило интеграции описывается                    рассмотренного примера хранилище должно
следующим образом:                                            содержать кортежи Track(trackId: 56473, name:
                                                              “copter-1”), TrackPoint(pointId: “uuid-2b7ca14”,
Forall ?Track ?Id ?TrackName ?TrackPoints                     path: 56473, time: “2016-12-12T13:33:11”, height:
?TrackPoint ?Position ?Time ?Height ?Point ?pos
( AND( Track(trackId->?Id name->?TrackName)
                                                              533.89, latitude: 33.8957, longitude: 246.37).
  TrackPoint(pointId->?pid path->?Id                             Вышеописанное           правило      может       быть
   time->?Time height->?Height                                реализовано в языке HIL следующей программой:
   latitude->External(get_latitude(?pos))
   longitude->External(get_longitude(?pos)) ))                declare ISSKOI_Track: ?;
:-                                                            declare Track: ?;
AND(?Track#ISSKOI_Track                                       declare TrackPoint: ?;
    ?Track[Id->?Id TrackName->?TrackName
          TrackPoints->?TrackPoint]                           declare get_latitude:
  ?TPoint#ISSKOI_TrackPoint                                     function string to double;
  ?TPoint[id->?pid Position->?Position                        declare get_longitude:
    Time->?Time BarAltitude->?Height]                           function string to double;
  ?Position#Position ?Position[Point->?Point]
  ?Point#Point ?Point[pos->?pos]))                            @jaql{
                                                              get_latitude = fn($s) convert(substring(
                                                                $s, 0, strPos($s, ' ')-1), schema double);




                                                        199
get_longitude = fn($s) convert(substring(                    найдены данные об одних и тех же судах (судно
  $s, strPos($s, ' ')+1, strLen($s)),
  schema double);
                                                             идентифицируется по названию и позывному).
}                                                            Кроме того, коллекции содержат различные
                                                             взаимодополняющие данные о судах.
insert into Track
select [ trackId: t."Id",name: t."TrackName"]
from ISSKOI_Track t;                                         Таблица 2 Данные о судах и соответствующие
                                                             элементы целевой схемы
insert into TrackPoint
select [ path: t."Id", time: p."Time",                       Пример данных в исходных моделях     Элементы
  height: tpt."BarAltitude",                                       (XML, реляционная)              целевой
  hSpeed: tpt."HSpeed", vSpeed: tpt."VSpeed",                                                       схемы
  course: tpt."Course",
  latitute: get_latitude(pt."pos"),                                                             (реляционная
  longitude: get_longitude(pt."pos") ]                                                             модель)
from ISSKOI_Track t, t."TrackPoints" tpt,                                        SARUnit(
  tpt."Position" ps, ps."Point" pt;                           64694571                  beginDuty,
                                                              мвс Ростов Великий    endDuty,
    В программе объявляются (declare) исходная                UBZG5         vehicle)
сущность (внешний элемент ISSKOI_Track) и                     
целевые сущности, соответствующие отношениям                   2017-01-08            Vessel(
                                                                                     PK
(Track, TrackPoint). Знак «?» в объявлении означает,           2017-01-09      vehicleId,
что структура сущностей не задана при                                                     name,
определении, а выводится из программы.                                           call,
                                                                                                 country,
    Объявляются функции разрешения конфликтов                [{                                  FK owner,
(get_latitude, get_longitude) и их сигнатуры.                 "Platforma_nazvanie":              imoNumber)
Реализация        функций         производится     с            "мвс Ростов Велкий",
                                                               "Strana_naimenovanie":           LegalEntity(
использованием языка Jaql [4] (директива @jaql) и                "Россия",                       PK
его функций работы со строками substring, strPos.              "Organizaciya_nazvanie":           entityId,
                                                                 "ФГУП Балтийское БАСУ –
    Для целевых отношений Track, TrackPoint                        Сахалинский филиал",
                                                                                                 name)
определяются операторы insert, порождающие                     "Pozyvnoj": "UBZG5",
кортежи этих отношений. В секции from операторов               "nomer_IMO": "9586796"
insert объявляются исходные сущности, каждому                }]
предикату членства в теле правила RIF-BLD
(например, ?Track#ISSKOI_Track) соответствует                   В правом столбце таблицы приведены элементы
объявление с точностью до имени переменной                   целевой схемы, соответствующие исходным
(например, ISSKOI_Track t).                                  данным. Данные, соответствующие судну, как
    Атрибуты целевых отношений и выражения                   транспортному    средству,   сосредоточены    в
порождения их значений определяются в секции                 отношении Vessel; как спасательной единице – в
select в соответствии с предикатами в голове                 отношении SARUnit; как юридической сущности - в
правила и фреймовыми предикатами в теле правила.             отношении LegalEntity.
Например, предикату головы Track(trackId->?Id) и                С    использованием     диалекта    RIF-BLD
фреймовому предикату тела ?Track[Id->?Id]                    необходимое правило интеграции описывается
соответствует определение trackId: t."Id" в секции           следующим образом:
select оператора insert into Track.                          Forall ?Id ?name ?call ?beginDuty ?endDuty
    Заметим, что язык HIL оперирует данными в                  ?country ?ownerName ?imoNumber
                                                             ( Exists ?owner (
формате JSON [13], поэтому для применения                      AND( SARUnit(beginDuty->?beginDuty
рассмотренного правила на языке HIL для                              endDuty->?endDuty vehicle->?Id )
преобразования данных о маршрутах в целевую                      Vessel(vehicleId->?Id
схему необходимо преобразовать исходные XML-                       name->External(normalize(?nazv))
                                                                   call->?call Country->?country
документы в JSON при помощи встроенной                             owner->?owner imoNumber->?imoNumber) )
функции xmlToJson языка Jaql [4]. Полученные на                  LegalEntity(entityId->?owner
выходе HIL-программы JSON-документы затем                          name->?ownerName) ))
                                                             :-
загружаются в реляционное хранилище над Hadoop               AND( ?ERRTableShips#ERRTableShips
(например, Hive [15]).                                         ?ERRTableShips[Id->?Id Name->?name
                                                                 Callsing->?call Dates->?Dates]
2.2 Интеграция данных о судах                                  ?Dates#Dates
                                                               ?Dates[StartDate->?beginDuty
   В левом столбце таблицы 2 приведен пример                          EndDate->?endDuty]
                                                               Ship("Platforma_nazvanie"->?nazv
данных о судах в формате XML, полученный из                     "Pozyvnoj"->?call
системы «Поиск-Море» (ERRTableShips) [19]; а                    "Strana_naimenovanie"->?country
также пример данных о судах в реляционной                       "Organizaciya_nazvanie"->?ownerName
модели, полученный из системы ЕСИМО [17]                        "nomer_IMO"->?imoNumber)
                                                               External(compareShipName(?name, ?nazv)) ))
(данные получены в формате CSV и преобразованы
в JSON). В обеих исходных коллекциях могут быть



                                                       200
    Аналогично примеру, описанному в предыдущем                   s."Platforma_nazvanie" and
подразделе, в голове правила конъюнкцией                      sl.Callsing_Name.Callsing = s."Pozyvnoj";

соединяются        предикаты,     соответствующие              Соединение сущностей исходных коллекций
отношениям       целевой   схемы.   Кроме     того,         производится       с    использованием      оператора
конъюнкция в голове правила заключена под                   разрешения сущностей create link. В секции from
квантор существования (Exists) по переменной                оператора указываются соединяемые коллекции
?owner 1, значение которой (не определенное в               (ERRTableShips, Ship), в секции select – составные
исходных данных) является первичным ключом                  ключи                                 (Callsing_Name,
entityId в кортеже отношения LegalEntity и внешним          Pozyvnoj_Platforma_nazvanie),              однозначно
ключом в кортеже отношения Vessel.                          идентифицирующие исходные сущности, правило
    В теле правила конъюнкцией соединяется                  сопоставления       сущностей    rule1    (совпадение
предикат Ship, соответствующий отношению из                 позывных и соответствие имен с точностью до
системы ЕСИМО, предикаты членства и фреймовые               функции compareShipName).
предикаты, соответствующие структуре XML-                      Как и в примере, описанном в предыдущем
документов из системы «Поиск-Море».                         подразделе, для каждого отношения целевой схемы
    Отдельной особенностью правила является то,             в программе определен оператор insert. Особенность
что при соединении сущностей из исходных                    данной программы состоит в том, что целевые
коллекций происходит проверка на соответствие               отношения пополняются на основании только тех
имен судов с некоторой точностью (возможны                  сущностей, которые связаны оператором create link.
варианты записей и ошибки) при помощи функции                  Квантор        всеобщности       реализуется     с
compareShipName.                                            использованием функции get_id, порождающей
                                                            уникальный идентификатор, и, тем самым,
   Вышеописанное      правило    может    быть              означивающей подкванторную переменную ?owner.
реализовано в языке HIL следующей программой                Значение         порожденного         идентификатора
(объявления сущностей и функций опущены):                   присваивается             первичному            ключу
                                                            LegalEntity.entityId и внешнему ключу Vessel.owner.
create link ShipLink as
select [
 Callsing_Name:                                             3 Спецификация и реализация правил
                                                            интеграции данных документной модели
 [Callsing: es.Callsing, Name: es.Name],
 "Pozyvnoj_Platforma_nazvanie":
 ["Pozyvnoj": s."Pozyvnoj",
 "Platforma_nazvanie": s."Platforma_nazvanie"]]                В данном разделе рассматривается пример
from ERRTableShips es, Ship s                               правила   интеграции     данных,   оперирующего
match using                                                 сущностями документной модели. Исходная
 rule1: es.Callsing = s."Pozyvnoj" and
   compareShipName(es.Name,
                                                            коллекция содержит сообщения о происшествиях в
     s."Platforma_nazvanie");                               Арктической зоне из социальных сетей и сущности
                                                            (персоны, суда, географические локации и т.д.),
insert into SARUnit                                         извлеченные средствами анализа текстов из
select [ vehicle: s.Id,
         beginDuty: d.StartDate,                            сообщений [8]. Данные хранятся в документной
         endDuty: d.EndDate                                 СУБД MongoDB и экспортируются для дальнейшей
       ]                                                    интеграции в файлах в формате JSON.
from ShipLink sl, ERRTableShips s, s.Dates d
where sl.Callsing_Name.Name = s.Name and                       В левом столбце таблицы 3 приведен пример
  sl.Callsing_Name.Callsing = s.Callsing;                   данных о сообщении (Messages) и данных о
                                                            сущностях, извлеченных из сообщения (Entites).
insert into Vessel
select [ vehicleId: s.Id,
                                                            Связь сообщений и сущностей, извлеченных из них,
 name: normalize(s."Platforma_nazvanie"),                   устанавливается на основании значения составного
 call: s."Pozyvnoj",                                        ключа id. В правом столбце таблицы приведены
 country: s."Strana_naimenovanie",                          элементы    целевой    схемы,    соответствующие
 owner: get_id(s."Organizaciya_nazvanie"),
 imoNumber: s."nomer_IMO"]                                  исходным данным.
from ShipLink sl, Ship s
where sl.Callsing_Name.Callsing = s."Pozyvnoj"              Таблица     3   Данные     о   сообщениях           и
  and sl.Callsing_Name.Name =                               соответствующие элементы целевой схемы
         s."Platforma_nazvanie";
                                                              Пример данных в исходной             Элементы
insert into LegalEntity
select [                                                        модели (документная)            целевой схемы
 entityId: get_id(s."Organizaciya_nazvanie"),                                                    (реляционная
 name: s."Organizaciya_nazvanie"]                                                                   модель)
from ShipLink sl, Ship s                                    {"Messages": [{                   Document(
where sl.Callsing_Name.Name =                                "id": {"coll_id": "8002",         documentId,
                                                             "res_id": {                       collection,
                                                             "site_id": "9b290c9f3bda",        source,
1
 Строго говоря, квантор всеобщности в голове                 "doc_id": "3649a5559a62"}},       content,
правила выходит за границы диалекта RIF-BLD,                "annotation": "Chinese             time,
однако входит в каркас RIF-FLD.                             seismic vessel aimed for           language,




                                                      201
Russian #Barents Sea oil at      author)                     token: e."s_token",
logistics port #Kirkenes",                                   tag: e."s_tag",
"metafields": {                 ExtractedEntity(             begin: e."s_begin",
  "mf203": "2016-4-30",          entityId,                   end: e."s_end"]
  "mf205": "eng",                document,                 from Entities ext, ext."id" eid,
  "mf200": "iceblogger"}         token,                         eid."res_id" eres, ext.entities e;
}]}                              tag,
                                 begin                        Для обоих отношений целевой          схемы      в
{"Entities": [{                  end)                      программе определен оператор insert.
 "id": {"coll_id": "8002",
 "res_id": {
 "site_id": "9b290c9f3bda",                                4 Спецификация и реализация правил
 "doc_id": "3649a5559a62"}},
"entities": [
                                                           интеграции данных графовой модели
{ "s_token": "Barents Sea",                                   В данном разделе рассматривается пример
  "s_tag": "I-ALOC",
  "s_end": 53,                                             правила    интеграции    данных,   оперирующего
  "s_begin": 42},                                          сущностями графовой модели. Исходная коллекция
{ "s_token": "Kirkenes",                                   содержит данные о спасательных операциях, данные
  "s_tag": "I-ALOC",
  "s_end": 85,
                                                           хранятся в графовой СУБД Neo4j и экспортируются
  "s_begin": 77}                                           для дальнейшей интеграции в файлах в формате
]}] }                                                      JSON.
                                                              В левом столбце таблицы 4 приведен пример
   С использованием диалекта RIF-BLD правило               данных о спасательных операциях. Данные
интеграции данных о сообщениях описывается                 содержат три вида вершин (Nodes): спасательная
следующим образом:                                         операция (SarOperation), координационный центр
Forall ?m ?ext ?doc ?coll ?src ?cont                       (CoordCenter), координатор операции (Coordinator);
   ?time ?lang ?auth ?mid ?mres ?mf ?eid ?eres             и два вида ребер (Relationships): rCoordCenter
( Exists ?ent( AND(
                                                           (ребра,   связывающие     операцию    и   центр),
 Document(documentId->?doc collection->?coll
  source->?src content->?cont time->?time                  rCoordinator (ребра, связывающие операцию и ее
  language->?lang author->?auth)                           координатора).
 ExtractedEntity(entityId->?ent document->?doc
  token->?tok tag->?tag begin->?beg
  end->?end) ))                                            Таблица 4 Данные о спасательных операциях и
:-                                                         соответствующие элементы целевой схемы
AND( ?m#Messages ?ext#Entities
 ?m[id->?mid annotation->?cont metafields->?mf]              Пример данных в исходной            Элементы
 ?mid[coll_id->?coll res_id->?mres]                             модели (графовая)             целевой схемы
 ?mres[site_id->?src doc_id->?doc]                                                             (реляционная
 ?mf[mf203->?time mf205->?lang mf200->?auth]
 ?ext[id->?eid entities->?ents]                                                                   модель)
 ?eid[coll_id->?coll res_id->?eres]                        {"Nodes":                         SAROperation(
 ?eres[site_id->?src doc_id->?doc]                         [{"id":"12",                       PK
 ?ext#?ents                                                "labels":["SarOperation"],          operationId,
 ?ext[s_token->?tok s_tag->?tag                            "properties":{                     FK
       s_begin->?beg s_end->?end] ))                         "OperationID":"5824",             coordCenter,
                                                             "OperationDate":                 FK
   Аналогично      примерам,     приведенным     в             "2016-09-15T00:00:00",          coordinator,
предыдущем       разделе,   в    голове    правила           "OperationName":                 country,
                                                               "Arctic Sunrise Sinking",      creationTime,
конъюнкцией          соединяются        предикаты,           "countrycode":"643"} },          name)
соответствующие отношениям целевой схемы. В                {"id":"13",
теле правила при помощи предикатов членства и              "labels":["CoordCenter"],         CoordinationCen
фреймовых      предикатов    отражена    структура         "properties":{
                                                           "CoordCenterID":"mrcc667340",
                                                                                             ter(
                                                                                              PK centerId,
документов, соответствующих сообщениям и                   "Name":"MRCC Dikson"}              name)
извлеченным сущностям. Правило может быть                  },
реализовано в языке HIL следующей программой:              {"id":"14",                       Person(
                                                           "labels":["Coordinator"],          PK personId,
                                                           "properties":{                     name)
insert into Document                                          "Name": "Schurov V. A.",
select [ documentId: mres."doc_id",                           "CoordinatorID": "5773"}
  collection: mid."coll_id",                               }]}
  source: mres."site_id",
  content: m."annotation",                                 { "Relationships":
  time: mf."mf203",                                        [{"id":"4",
  language: mf."mf205",                                     "type":"rCoordCenter",
  author: mf."mf200"]                                       "startNode":"12",
from Message m, m."id" mid, mid."res_id" mres,              "endNode":"13"},
     m."metafields" mf;                                    {"id":"9",
                                                           "type":"rCoordinator",
insert into ExtractedEntity                                "startNode":"12",
select [ entityId: get_id(strcat(                          "endNode":"14"}] }
             eres."site_id", eres."doc_id")),
  document: eres."doc_id",




                                                     202
   В правом столбце таблицы приведены элементы                creationTime: prp."OperationDate",
целевой схемы, соответствующие исходным                       name: prp."OperationName",
                                                              country: prp."countrycode",
данным.                                                       coordCenter: prp1."CoordCenterID",
   С использованием диалекта RIF-BLD интеграция               coordinator: prp2."CoordinatorID"]
                                                            from Nodes n, n."properties" prp,
данных о спасательных операциях описывается                   n."labels" lbl,
совокупностью следующих правил:                               Relationships r1, Relationships r2,
Forall ?pid ?name ?lbl ?prp(                                  Nodes n1, Nodes n2
Person(personId->?pid name->?name) :-                       where
AND( ?n#Nodes                                                 array_includes(lbl, "SarOperation") and
  ?n[labels->?lbl properties->?prp]                           n."id" = r1."startNode" and
  "Coordinator"#?lbl                                          r1."type" = "rCoordCenter" and
  ?prp[CoordinatorID->pid Name->?name]))                      n1."id" = r1."endNode" and
                                                              n."id" = r2."startNode" and
Forall ?cid ?name ?lbl ?prp(                                  r2."type" = "rCoordinator" and
CoordinationCenter(centerId->?cid                             n2."id" = r2."endNode";
  name->?name) :-
AND( ?n#Nodes                                                  Каждое из правил представляется отдельным
  ?n[labels->?lbl properties->?prp]                         оператором insert. Предикаты проверки типа
  "CoordCenter"#?lbl                                        вершины         (например,     "Coordinator"#?lbl)
  ?prp[CoordCenterID->cid Name->?name]))                    реализуются       с   использованием     функции
Forall (                                                    array_includes:
SAROperation(operationId->?opid                             @jaql{ array_includes = fn(a, e)
  creationTime->?time name->?name                            if (not exists(a->filter $ == e)) false
  country->?country coordCenter->?cntr                       else true; }
  coordinator->?coord)
:-
AND( ?n#Nodes ?n[id->?id]                                   5 Общие принципы спецификации
  ?n[properties->?prp labels->?lbl]
  ?r1#Relatioships ?r2#Relatioships
                                                            правил     интеграции    данных  с
  ?n1#Nodes ?n1[id->?id1]                                   использованием     RIF-BLD   и  их
  ?n2#Nodes ?n2[id->?id2]
  "SarOperation"#lbl
                                                            реализации в языке HIL
  ?r1[type->"rCoordCenter"                                     Основные принципы спецификации правил
     startNode->?id endNode->?id1]
  ?r2[type->"rCoordinator"                                  интеграции данных с использованием RIF-BLD,
     startNode->?id endNode->?id2]                          примененные в данной работе, можно обобщить
))                                                          следующим образом:
   Каждому     отношению         целевой      схемы         •   правила интеграции имеют вид импликации,
соответствует свой тип вершин, например,                        посылка которой называется телом, а
отношению SAROperation соответствуют вершины с                  заключение – головой;
меткой "SarOperation" (атрибут labels). Поэтому для         •   голова и тело правил представляют собой
каждого отношения удобно определить свое                        формулы, связывающие предикаты операциями
порождающее           правило.           Предикаты,             конъюнкции или дизъюнкции;
соответствующие отношениям целевой схемы,                   •   в теле правила допускаются предикаты,
составляют головы правил. В телах правил при                    соответствующие сущностям только исходных
помощи предикатов членства и фреймовых                          схем, в голове – только целевой схеме;
предикатов    отражены      структуры       данных,         •   для       описания       свойств      кортежей,
соответствующие вершинам и ребрам графа.                        принадлежащих       отношениям     реляционной
   Правила могут быть реализованы в языке HIL                   модели, в правилах используются предикаты с
следующей программой:                                           именованными аргументами [5];
insert into Person                                          •   для описания свойств структур данных
select [                                                        произвольной степени вложенности (при
  personId: prp."CoordinatorID",                                помощи которых представляются данные
  name: prp."Name"]
from Nodes n, n."properties" prp,                               различных нереляционных моделей – XML,
     n."labels" lbl                                             документной, графовой и т.д.) используются
where                                                           фреймовые предикаты и предикаты членства
  array_includes(lbl, "Coordinator");
                                                                [5];
insert into CoordinationCenter                              •   связь значений атрибутов сущностей исходных
select [                                                        и целевой схем осуществляется при помощи
  centerId: prp."CoordCenterID",                                переменных;
  name: prp."Name"]
from Nodes n, n."properties" prp                            •   свободные переменные, использующиеся в теле
     n."labels" lbl                                             правила, связываются внешним квантором
where                                                           всеобщности;
  array_includes(lbl, "CoordCenter");
                                                            •   свободные переменные в голове правила, не
insert into SAROperation                                        встречающиеся в теле (фактически, они
select [                                                        соответствуют данным, не определенным явно в
  operationId: prp."OperationID",




                                                      203
    исходных коллекциях), связываются квантором                  целевых отношений.
    существования;
•   нетривиальные предикаты-условия (отличные              6 Заключение
    от   равенства)  и    функции    разрешения
    конфликтов определяются как внешние термы                 В    работе     рассматривается    подход    к
    [5].                                                   спецификации правил интеграции данных с
                                                           использованием рекомендации W3C - логического
                                                           диалекта RIF-BLD. Широкий спектр возможностей
   Основные   принципы   реализации  правил                спецификации RIF-BLD позволяет использовать в
интеграции данных на RIF-BLD в языке HIL,                  одном правиле сущности из разных коллекций,
примененные в данной работе, можно обобщить                представленных в разных моделях данных.
следующим образом:                                         Рассматриваются правила, в голове которых могут
•  сущности исходных и целевой схем, функции               присутствовать лишь предикаты, соответствующие
   разрешения конфликтов и нетривиальные                   сущностям целевой схемы, а в теле – предикаты,
   предикаты-условия объявляются при помощи                соответствующие сущностям исходных схем.
   директивы declare; для функций определяется             Логическая    семантика     RIF-BLD     позволяет
   их сигнатура;                                           однозначным        образом       интерпретировать
• функции реализуются на языке Jaql в отдельных            спецификации рассматриваемых правил интеграции
   секциях программы, либо на языке Java во                и допускает их реализацию с использованием
   внешних файлах;                                         различных     языков.     В     данной     работе
• для каждой сущности (отношения) в голове                 рассматривается подход к реализации логических
   правила создается отдельный оператор insert,            правил RIF-BLD в языке высокого уровня HIL,
   порождающий кортежи этих отношений:                     разработанного компанией IBM. Путем компиляции
  o в секции from объявляются исходные                     программ на HIL в программы вычислительной
     сущности,      каждому       предикату      с         модели MapReduce достигается распределенное
     именованными переменными или предикату                исполнение правил интеграции в среде Hadoop.
     членства в теле правила соответствует                    К дальнейшим направлениям работы можно
     объявление    с    точностью     до    имени          отнести вопросы интерпретации и реализации
     переменной;                                           логических программ на RIF-BLD, в телах правил
  o в секции select указываются атрибуты                   которых допускаются предикаты целевой схемы.
     целевых отношений (в соответствии с их                Это требует адаптации, в частности, процедуры
     названиями в предикатах головы правила) и             погони [9]. Другим направлением является
     выражения     порождения      их    значений;         реализация     автоматического     преобразования
     выражения формируются в соответствии с                спецификаций       RIF-BLD      в     программы,
     термами в предикатах головы правила либо с            компилируемые и исполняемые на распределенных
     термами во фреймовых предикатах тела                  вычислительных инфраструктурах (например, на
     правила;                                              языке HIL).
  o в секции where указываются предикаты,
     отражающие способы соединения исходных
                                                           Поддержка. Работа выполнена при поддержке
     сущностей (формируемые на основании
                                                           Министерства образования и науки Российской
     совпадения имен переменных во фреймовых
                                                           Федерации (уникальный идентификатор проекта
     предикатах      тела)    и      их     отбора
                                                           RFMEFI60717X0176).
     (соответствующие предикатам, налагающим
     условия на данные отдельных исходных
     коллекций в теле правила);                            Литература
• если     соединение      сущностей     исходных           [1] Apache          Hadoop          Project.      2016.
   коллекций в теле правила осуществляется с                    http://hadoop.apache.org/
   использованием нетривиальных предикатов и                [2] Ballard, C., Alon, T., Dronavalli, N., Jennings, S.,
   функций (отличных от равенства атрибутов),                   Lee, M., Toratani, S. IBM InfoSphere Information
   предварительное      соединение      сущностей               Server           Deployment           Architectures.
   производится с использованием оператора                      ibm.com/redbooks (2012)
   разрешения сущностей create link:
                                                            [3] Bar-Or, A., Choudhary, S. Transform XML using
  o в секции from указываются соединяемые
                                                                the DataStage XML stage. IBM developerWorks
     коллекции;
                                                                (2011)
  o в секции select указываются составные
     ключи,    однозначно     идентифицирующие              [4] Beyer, K.S., Ercegovac, V., Gemulla, R., Balmin,
     исходные сущности;                                         A., Eltabakh, M., Kanne, C.-C., Ozcan, F.,
  o в секции match указываются правила                          Shekita, E.J.: Jaql: A Scripting Language for Large
     сопоставления сущностей;                                   Scale Semistructured Data Analysis. In: 37th
  o коллекция пар сопоставленных сущностей                      International conference on very large data bases
     затем используется в качестве входной в                    VLDB, pp. 1272-1283. Curran Associates, New
     операторах insert, порождающих кортежи                     York (2011)




                                                     204
 [5] Boley, H., Kifer, M. (eds.): RIF Framework for              [12] InfoSphere Big Match for Hadoop. Technical
     Logic Dialects. W3C Recommendation, 2nd edn.                    Overview. - https://goo.gl/0TMqvw
     (February 5, 2013)                                          [13] Introducing JSON. - http://www.json.org/
 [6] Boley, H., Kifer, M. (eds.): RIF Basic Logic                [14] Miner, D. MapReduce Design Patterns: Building
     Dialect. W3C Recommendation, 2nd edn.                            Effective Algorithms and Analytics for Hadoop
     (February 5, 2013)                                               and Other Systems. O'Reilly Media (2012)
 [7] Burdick, D., Hernández, M. A., Ho, H., Koutrika,            [15] The Apache Hive data warehouse software. -
     G., Krishnamurthy, R., Popa, L., Stanoi, I.R.,                   http://hive.apache.org/
     Vaithyanathan, S., Das, S.: Extracting, Linking             [16] Брюхов, Д. О., Скворцов, Н. А., Ступников, С.
     and Integrating Data from Public Sources: A                      А.                Методы             интеграции
     Financial Case Study. IEEE Data Eng. Bull.,                      разноструктурированных           данных      по
     34(3):60–67 (2011)                                               Арктической зоне для извлечения информации,
 [8] Devyatkin, D., Shelmanov, A. Text Processing                     нацеленной        на     поддержку    поисково-
     Framework for Emergency Event Detection in the                   спасательных операций. Системы высокой
     Arctic Zone. In: Kalinichenko L., Kuznetsov S.,                  доступности. Т. 13, № 2. М.: Радиотехника
     Manolopoulos Y. (eds) Data Analytics and                         (2017) Принято к публикации.
     Management in Data Intensive Domains.                       [17] Единая государственная система информации
     DAMDID/RCDL 2016. Communications in                              об обстановке в мировом океане. -
     Computer and Information Science, vol 706, pp.                   http://portal.esimo.ru/portal
     74-88. Springer (2017)
                                                                 [18] Комплексная                     интегрированная
 [9] Fagin, R., Kolaitis, P., Miller, R., Popa, L.: Data              информационная          система    «МоРе».    -
     exchange: semantics and query answering.                         http://www.marsat.ru/ciis-more
     Theoretical Computer Science, 336(1):89–124
                                                                 [19] Программный комплекс «Поиск-Море». -
     (2005)
                                                                      http://map.geopallada.ru/
[10] Hernandez, M., Koutrika, G., Krishnamurthy, R.,
                                                                 [20] Скворцов, Н. А., Брюхов, Д. О. Разработка
     Popa, L., Wisnesky, R.: HIL: A high-level
                                                                      схемы хранилища информации для поддержки
     scripting language for entity integration. In: 16th
                                                                      поисковых действий в Арктической зоне.
     Conference (International) on Extending Database
                                                                      Системы высокой доступности. Т. 13, № 2. М.:
     Technology Proceedings EDBT 2013, pp. 549–560
                                                                      Радиотехника (2017). Принято к публикации.
     (2013)
[11] IBM InfoSphere BigInsights Version 3.0
     Information Center. https://goo.gl/lZpEQd




                                                           205