Курсовая работа: Семантические базы данных

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Входными данными являются: онтология O, множество классов C и соответствующие им уровни безопасности SLC.

Выходными данными является уровень безопасности slСx класса сx .

Вначале в онтологии O свойствам P = {p1, ..., pn} задаются начальные уровни безопасности SLP ={slP1, ..., slPn}, где slP1, ..., slPn - соответствующие уровни безопасности свойств p1, ..., pn.

Уровни безопасности slPx свойства px ? P согласуются между собой следующим образом:

1. если уровень безопасности slPx свойства px не задан, то slPx = 0;

2. если свойство pх связано со свойством py одним из отношений owl:inverseOf, owl: equivalentProperty, owl:SymmetricProperty или owl:InverseFunctionalProperty, то slPx = MAX(slPx, slPy), где slPy - уровень безопасности свойства py ;

3. если свойство px является подсвойством свойства pz, который имеет уровень безопасности slPz, то slPx = MAX(slPx, slPz).

Входными данными являются онтология O, множество свойств P = {p1, ..., pn} и их соответствующие уровни безопасности SLP.

В семантических БД DBS имеется множество индивидов IDB = {i1, ..., ik} и множество их начальных уровней безопасности SLI ={slI1, ..., slIk}, где slI1, ..., slIк - уровни безопасности индивида i1, ..., ik соответственно.

Уровень безопасности slIx индивида ix ? iDB может быть определён следующим образом:

· Если начальный уровень безопасности slIx индивида ix не задан, то slIx = 0.

· Если индивид iх включается в класс cy, имеющий уровень безопасности slCy, и если slIx < slCy, то slIx = slCy .

Входными данными являются: С = {с 1, ..., сm} - множество классов, SLC = {slC1, ..., slCm} - множество уровней безопасности классов, I = {i1, ..., ik} - множество индивидов, SLI = {slI1, ..., slIк} - множество уровней безопасности индивидов.

Выходными данными является множество индивидов и их соответствующих уровней безопасности.

В семантических БД компоненты каждого триплета t = [s, p, o] (s - субъект, p - предикат, o - объект) могут иметь разные уровни: sls - уровень безопасности субъекта, slp - уровень безопасности предиката, и slo - уровень безопасности объекта. Тогда общий уровень безопасности всего триплета slt будет определяться как максимальное значение уровней безопасности его компонентов (sls, slp, slo):

slt = MAX {sls, slр, slo}, (1)

Пара безопасности триплета sc триплета t описывается следующим образом:

sc = {t, slt}. (2)

Каждый триплет семантических метаданных может быть определён как TМ = {(C | I), (B | A), (C | I | H)}. Следовательно, для любого триплета t = [s, p, o] ? M всегда могут быть определены функции f1, f2, f3, позволяющие определять соответствие каждого компонента триплета с одним из элементов онтологии следующим образом:

f1: s > s' ? (C | I); (3)

f2: p > p' ? (B | A); (4)

f3: o > o' ? (C | I | H). (5)

Из формул (3) - (5) может быть определена обратная функция f = (f1 -, f2 -, f3 -), отображающая набор троек [s' ? (C | I), p' ? (B | A), o' ? (C | I | H)] в триплет t = [r, p, v] ? M, которая обозначается следующим образом:

f: [s' ? (C | I), p' ? (B | A), o' ? (C | I | H)] > t = [s, p, o] ? M. (6)

Если набор троек [s' ? (C | I), p' ? (B | A), o' ? (C | I | H)] обозначить как pt = [s' ? (C | I), p' ? (B | A), o' ? (C | I | H)], тогда функция отображения может быть переписана следующим образом: f: pt > t = [s, p, o] ? M.

Определение 1. В онтологии O функция f: pt > t = [s, p, o] ? M позволяет связать три элемента pt = [s' · (C | I), p' ? (B | A), o' ? (C | I | H)] онтологии с одним триплетом t = [s, p, o], который содержится в метаданных.

Функция f определяет соответствующие классы, свойства, значения или индивиды для каждого триплета семантических метаданных.

Каждый элемент тройки pt = [s', p', o'] имеет согласованный уровень безопасности sls', slр', slo' (в результате решения задачи 1). Следовательно, pt имеет следующий согласованный уровень безопасности slpt = MAX(sls', slр', slo').

В результате отображения функции f: pt > t каждый триплет t будет иметь уровень безопасности slpt.

Определение 2. Пусть pt и t являются триплетами. Если существует модель отображения f: pt > t и pt имеет уровень безопасности slpt, то триплету t задаётся уровень безопасности slpt.

В семантических БД, если триплет t имеет начальный уровень безопасности sl't, то в результате отображения f согласованный уровень безопасности триплетов t определяется следующим образом:

slt = MAX (slpt, sl't). (7)

Тогда с помощью функции f множество пар всех триплетов TM ? M и их соответствующих уровней безопасности определяется следующим образом:

SCF ={TM, SLT} = {TM, MAX (slpti, sl'ti)}, (8)

где TM - множество всех триплетов метаданных, SLT = {slt1, ..., sltn} - множество уровней безопасности всех триплетов метаданных в результате отображения.

Может быть определено множество пар безопасности всех триплетов онтологии:

SСO = {TO, SLO} = {TO, (SLC | SLP)}, (9)

где ТО - множество всех триплетов онтологии O, а SLO ? множество согласованных уровней безопасности триплетов онтологии.

Вначале триплетам метаданных М задаются начальные уровни безопасности SLM = {slt1, ..., sltn}. Множество пар безопасности триплетов метаданных определяется следующим образом:

SСM = {TM, SLM} = {TM, {slt1, ..., sltn}}. (10)

Входными данными алгоритма являются: SLС, SLP, SLI - множества согласованных уровней безопасности множеств классов С, свойств P и индивидов I соответственно; TМ = {ti, ..., tn} - множество всех триплетов семантических метаданных; SLM = {slt1, ..., sltk} - множество начальных уровней безопасности триплетов семантических метаданных.

Выходными данными является покрытие безопасности S = {s1, ..., sk}, где sj= (ti, slj), slj - согласованный уровень безопасности триплета tj .

Любой пользователь U, имеющий уровень доступа slU, для просмотра данных, может отправлять SPARQL-запросы q к элементам или триплетам СБД.

В запросе q шаблон "WHERE" - это множество триплетов SP = {pt1, ..., ptn}, где pti = [s, p, o] ? Pt. Если компоненты s, p или o являются переменными, то их уровни безопасности равны 0. С учётом этого уровень доступа каждого запроса q может быть определён следующим образом:

slq = MAX (slpt1, ..., slptn), (11)

где slpti - уровень безопасности триплета pti ? SP. Из выражения 1 уровень безопасности триплета запроса SLq определяется, как:

slq = MAX (МАХ (slsi, slpi, sloi)), где i = 1, ..., n. (12)

Таким образом, пользователь U имеет право выполнения запроса q, если slU ? slq [3].

В таблице 1 показаны основные виды триплетов в шаблоне запроса и условия для выполнения запросов пользователей [7].

Запрос q может быть прямым или логическим запросом. В связи с этим данный запрос выполняется следующим образом:

1) Если q является логическим запросом:

· Запрос q совпадает с телом логического правила ri : (b1 ?...? bk) > a. Пользователь может выполнить запрос q, если slU > slri .

· В результате выполнения логического запроса даётся множество результатов логических выводов RL = {rL1, ..., rLk}. Могут быть определены их уровни безопасности SLT = {slt1, ..., sltn}.

· Можно определить множество несанкционированных результатов логических выводов R'L. На основе этого пользователь получит только результат A = RL \ R'L.

Таблица 1 - Основные условия для выполнения запросов пользователей

2) Если q является прямым запросом:

· В результате выполнения прямого запроса результат представляет собой множество триплетов T = {t1, ..., tn}.

· Выбираются уровни безопасности триплетов SLT = {slt1, ..., sltn} для множества T.

· Определяется множество T1 = {t1, ..., tk}, состоящее из элементов, у которых slt ? slU или sle ? slU [8].

· Пользователь будет получать только триплеты A = T1.

В зависимости от требования защищённости каждой организации, результаты выполнения прямых запросов могут различаться:

· Если q не является частью тела логического правила ri : (b1 ?...? bk) > a, то пользователь получит ответ T1 = {t1, ..., tk}.

· Если q является частью тела ((b1 ?...? bh) ? (b1 ?...? bk)) логического правила ri : (b1 ?...? bk) > a. Тогда, если часть результатов T'1 ? T1 является основным фактом и пользователь может использовать T'1 и результат выполнения другого прямого запроса q' = (b1 ?...? bk) \ (b1 ?...? bh) для получения несанкционированных результатов логических выводов a', то в этом случае пользователю запрещается видеть T'1. С учётом этого он получит только ответы A = T1 \ T'1.

2.1 Пример контроля результатов логических выводов в СБД

Пусть имеется семантическая БД, которая содержит множество элементов онтологии и триплетов метаданных со своими уровнями безопасности (таблицы 2,3), основные характеристики свойств онтологии (таблица 4), множество логических правил (таблица 5). Предположим, что пользователь U имеет уровень доступа slU = 2. Требуется контролировать прямой и логический запросы, которые выполняются пользователем U.

Таблица 2 - Уровни безопасности элементов в семантической БД

Таблица 3 - Связи между элементами БД

Таблица 4 - Характеристики отношений

Таблица 5 - Логические правила БД

Шаг 1: определение всех RDF-графов.

На основе заданной информации (таблицы 2,3) БД представляется в виде RDF-графа Q (рисунок 2).

Рисунок 2 - Исходный RDF-граф БД

Используются основные характеристики свойств (таблица 4) на основе RDF-графа Q для получения RDF-графа Ql (рисунок 3).

Рисунок 3 - RDF-граф

В связи с тем, что уровень доступа пользователя slU = 2, следовательно, он получает доступ только к триплетам, имеющим уровни безопасности не больше, чем 2.

На рисунке 4 показаны видимый граф Qt (рёбра обозначены линией) и невидимый Qh (рёбра обозначены линией) RDF-графы для пользователя U.

Логический Qls RDF-граф может быть получен путём использования логических правил (таблица 5) на основе видимого RDF-графа (рисунок 5).

Рисунок 4 - Видимый и невидимый RDF-графы

Рисунок 5 - Логический RDF-граф

Шаг 2: обнаружение несанкционированных результатов логических выводов Qt .

Несанкционированный логический граф может быть определён как пересечение логического RDF-графа и невидимого RDF-графа (рисунок 6). В результате этого основными несанкционированными результатами логических выводов пользователя являются

Qt = {A PH D, F PH E, F PGm B, F PGm C, E PGf B, E PGf С}.

Рисунок 6 - RDF-граф несанкционированных результатов логических выводов

Шаг 3: контроль результатов логических выводов.

Пользователь, имеющий уровень безопасности slU = 2, на любой запрос к CБД не имеет право на получение ответов, элементы которых принадлежат множеству Qt . А это значит, что данный пользователь не может видеть триплеты {A PH D, F PH E, F PGm B, F PGm C, E PGf B, E PGf C}.

Контроль результатов логических выводов, полученных путём использования логических правил.

Полученные значения уровней безопасности использовались для выполнения контроля результатов при выполнении прямого запроса пользователей к семантической БД. На рисунках 7 и 8 показаны результаты выполнения прямого запроса к СБД пользователями, имеющими разные уровни доступа sl1 = 2 и sl2 = 4.

Рисунок 7 - Результат выполнения прямого запроса пользователей, имеющих уровень доступа sl1 = 2

В результате выполнения запросов (рисунок 7) показано, что пользователи, имеющие уровень доступа sl1 = 2, получают только результаты, имеющие уровни безопасности не больше 2.

В результате выполнения запросов (рисунок 8) показано, что пользователи, имеющие уровень доступа sl2 = 4, получают только результаты, имеющие уровни безопасности не больше 4.

Таким образом, можно делать вывод о том, что алгоритмы контроля выполнения прямого запроса к семантическим БД гарантируют, что пользователи получают триплеты в соответствии с их уровнями доступа.

Рисунок 8 - Результат выполнения запроса пользователей, имеющих уровень доступа sl2= 4

Логические методы контроля состоят в проверке искусственно созданных контрольных соотношений, причем эти соотношения мало связаны с существом информации, которая подлежит пересылке, хранению или переработке. Логический контроль находит широкое применение в различных устройствах хранения и передачи данных, а также ЭВМ. Зачастую для реализации этого метода контроля в устройства вводятся дополнительные узлы: сумматоры, элементы сравнения и т. д.

Рассмотрим разновидности логического контроля, нашедшие применение в практике.

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

Контрольное суммирование реализуется достаточно просто, эффективно и широко используется на практике.

Чаще всего оно применяется в следующих случаях:

1) для контроля правильности хранения информации в различных видах памяти. При этом производится периодическое суммирование слов контролируемых массивов, и полученная контрольная сумма сравнивается с эталонной;

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

контрольная сумма, которая поразрядно сравнивается с эталоном, пересылаемым в последнюю очередь;