Интеллектуальные информационные системы

ИНТЕЛЛЕКТУАЛЬНЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ

Рекомендовано

Методическим советом по качеству

образовательной деятельности ДВГУПС

в качестве учебного пособия

Хабаровск

Издательство ДВГУПС

УДК 004.89(075.8)

ББК З 973.1я73+З813я73

А 674

Рецензенты:

Кафедра информационных систем и технологий ХГУЭП

(заведующий кафедрой кандидат технических наук, доцент

О.И. Чуйко)

Заместитель генерального директора ООО «Мега Трейд»

Н.А. Авдеенко

Анисимов, В.В.

А 674 Интеллектуальные информационные системы : учеб. пособие / В.В. Анисимов, Р.А. Ешенко. – Хабаровск : Изд-во ДВГУПС, 2017. – 86 с. : ил.

Учебное пособие соответствует рабочим программам дисциплин «Интеллектуальные информационные системы» и «Интеллектуальные системы и технологии».

Содержит минимально необходимый теоретический материал, методику, примеры и задания для выполнения лабораторных работ, посвященных компьютерной реализации интеллектуальных функций. Может быть использовано при выполнении курсовых проектов.

Предназначено для студентов 3-го, 4-го курсов очной формы обучения бакалавров, специалистов и магистров, обучающихся по направлениям подготовки: 09.03.02 и 09.04.02 «Информационные системы и технологии», 10.03.01 и 10.04.01 «Информационная безопасность», и специальности 10.05.03 «Информационная безопасность автоматизированных систем».

УДК 004.89(075.8)

ББК З 973.1я73+З813я73

© ДВГУПС, 2017

ВВЕДЕНИЕ

Понятие «интеллект» имеет многочисленные определения и трактовки. В общем смысле интеллект – способность мыслить. В теории познания интеллект – способность к рациональному (объективному) познанию, реализуемому посредством приобретения, запоминания, целенаправленного преобразования и применения знаний. Эти качества широко используются человеком как в бытовых ситуациях, так в общественной и производственной деятельности. Они противопоставляются нерациональным (субъективным) свойствам психики – эмоциям, любви, воли и т. п.

Следует иметь в виду, что существуют и другие, чисто поведенческие трактовки интеллекта. Так, по А. Н. Колмогорову, любая материальная система, с которой можно достаточно долго обсуждать проблемы науки, литературы и искусства, обладает интеллектом. Другим примером поведенческой трактовки интеллекта может служить известный тест Алана Тьюринга. Одна из интерпретаций теста заключается в следующем. В разных комнатах находятся люди и машина. Они не могут видеть друг друга, но имеют возможность обмениваться информацией. Если в процессе диалога между участниками игры людям не удается установить, кто из участников – машина, то такую машину можно считать обладающей интеллектом.

Несмотря на то, что понятие «интеллект» отождествляется с человеком, очевидно его наличие и у других живых организмов. Более того, еще в древние времена предпринимались неоднократные попытки создания механических агрегатов и искусственных биологических существ (гомункулов), наделенных интеллектуальными функциями человека. С появлением ЭВМ идея их реализации посредством программных средств или программно-аппаратных комплексов вспыхнула с новой силой. В 1956 г. на семинаре в Дартмутском колледже (США) Джоном Маккарти был предложен термин «искусственный интеллект». Как и интеллект, это понятие имеет многочисленные интерпретации, так как может рассматриваться в различных контекстах. Оно может рассматриваться как наука, свойство (способность) вычислительной машины к разумному поведению, набор технологий, программно-аппаратная реализация и т. п.

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

· творческие задачи– сочинение музыки, написание литературных произведений, создание картин, перевод текстов и т.д.;

· логические задачи– задачи, требующие установления истинности некоторого утверждения или решения проблемной ситуации посредством логических умозаключений (логического вывода);

· некоторые виды оптимизационных задач, не имеющих на текущий момент эффективных (за полиномиальное время) алгоритмов их решения.Оптимизационная задача – задача нахождения экстремума (минимума или максимума) целевой функции;

· распознавание образов;

· игры;

· другие задачи.

Основные исследования в области искусственного интеллекта проводятся по автоматизации следующих интеллектуальных функций [2]: представление и манипулирование знаниями, восприятие, общение, обучение и поведение.

От способа представления знаний (модели) зависит возможность качественной реализации остальных интеллектуальных функций. В первых шести лабораторных работах основное внимание уделяется представлению знаний – рассматриваются логическая (на примере логики предикатов первого порядка) и онтологическая (на примере Web Ontology Language – языка описания онтологий для всемирной паутины) модели применительно к решению логических задач. В остальных работах акцент делается на манипулировании знаниями при решении оптимизационных задач и распознавании образов. В лабораторных работах по генетическим алгоритмам и искусственным нейронным сетям существенная роль отводится автоматизации функции обучения.

Основы Пролога

Наиболее известным языком логического программирования, реализующим модифицированную логику предикатов первого порядка, является Пролог (Prolog – PROgramming LOGig, логическое программирование). В нем отсутствует возможность использования кванторов, а составные формулы записываются в виде фраз Хорна.

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

B :- A1, ... , An.

B – заголовок или голова предложения, A1, ..., An – тело. В предложении ключевой логической операцией является перевернутая импликация
(B :- A эквивалентно B A). Символ «:-» означает «следует из», символ «,» – конъюнкция (логическое И, Ù).

При необходимости применения дизъюнкции (логическое ИЛИ, Ú) используется символ «;», действующий до следующей дизъюнкции, окончания правила или закрывающей круглой скобки.

Таблица 1

Примеры использования дизъюнкции в Прологе

Логика предикатов Пролог
(A1 Ù ... Ù An) Ú (B1 Ù ... Ù Bm) ® C C :- A1, ... , An; B1, ... , Bm.
A Ù (B Ú C) ® D D :- A, (B ; C).

Предложения в Прологе бывают трех видов:

· факт – предложение, у которого нет тела. В терминах логики предикатов, факт – это и есть предикат. Например, факт, что Наташа является мамой Даши, может быть записан в виде[2]:

mama('Наташа', 'Даша').

· правило – предложение, истинность заголовка которого в виде предиката зависит от истинности одной или нескольких формул, указанных в теле. Например, бабушка человека – мама его мамы или мама его папы. Соответствующие правила будут иметь вид:

grandmama(X, Y):-

mama(X, Z), mama(Z, Y).

grandmama(X, Y):-

mama(X, Z), papa(Z, Y).

или

grandmama(X, Y):-

mama(X, Z), mama(Z, Y);

mama(X, Z), papa(Z, Y).

или

grandmama(X, Y):-

mama(X, Z), (mama(Z, Y); papa(Z, Y)).

· вопрос (запрос, цель) – предложение, состоящее только из тела. Автоматическая система логического вывода Пролога рассматривает вопрос как цель, к которой надо стремиться. Если цель будет достигнута, Пролог выдает положительный ответ (true), иначе – отрицательный (false). Обычно в интерпретаторах Пролога вопросы задаются в отдельном командном окне и перед каждым новым вопросом ставится «?-». Например, вопросы с ответами «Наташа является мамой Даши?» и «Кто является мамой Даши?» выглядят:

?- mama('Наташа', 'Даша').

true.

и

?- mama(X, 'Даша').

X='Наташа'.

Предложения, записанные с использованием перевернутой импликации, называются фразами Хорна. Разновидности предложений Пролога, записанные в виде фраз Хорна (B A), можно интерпретировать следующим образом:

· факт: B true;

· правило: B A;

· вопрос: true A.

Во всех предложениях можно использовать переменные. Считается, что переменные в теле одного правила неявно связаны квантором всеобщности.

Переменные могут быть свободными или связанными.

Свободная переменная – переменная, которая еще не получила значения. Она не равняется ни нулю, ни пробелу; у нее вообще нет никакого значения. Такие переменные называют также неконкретизированными.

Переменная, которая получила какое-то значение, называется связанной. Такой переменной не может быть присвоено новое значение, т. е., по сути, переменная становится константой.

Областью действия переменной в Прологе является одно предложение. В разных предложениях может использоваться одно и то же имя переменной для обозначения разных сущностей. Исключением из правила определения области действия является анонимная переменная, которая обозначается символом подчеркивания «_». Анонимная переменная предписывает интерпретатору (компилятору) проигнорировать значение аргумента (терма). Если в правиле несколько анонимных переменных, то все они отличаются друг от друга, несмотря на то, что записаны с использованием одного и того же символа «_». Анонимные переменные могут записываться только в качестве терма предиката. Использовать их в выражениях (например, арифметических) нельзя. Пример использования анонимной переменной в вопросе «Есть ли у Даши мама?»:

?- mama(_, 'Даша').

true.

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

Для поиска ответа на вопрос (доказательства целевого утверждения)
в Прологе используется метод перебора с возвратами[3] (поиск в глубину).
В то же время, за счет структуры и порядка формул можно добиться реализации поиска в ширину.

Рекомендации по выполнению работы

Для перехода в режим редактирования и исполнения программ необходимо нажать на кнопку «Program» (см. рис. 3).

В левой панели осуществляется редактирование программы, содержащей факты и правила.

В правой нижней панели выполняется набор вопросов и запуск их на исполнение с помощью кнопки «Run!».

Панель вопросов
Панель ответов
Панель редактирования программ
интеллектуальные информационные системы - student2.ru

Рис. 4. Режим редактирования и исполнения программ

В правой верхней панели интерпретатор SWI-Prolog выдает ответы на вопросы. В случае если на вопрос может быть получено более одного ответа, с помощью кнопок «Next», «10», «100» и «1,000» можно вывести на панель дополнительные ответы.

Необходимый теоретический материал для создания программы изложен в подразд. 1.2–1.3.

Задание на выполнение работы

Разработать программу «Родственные связи», отвечающую следующим требованиям.

А. Программа должна содержать общие для всех заданий факты и правила:

· женщина;

· мужчина;

· мать;

· отец;

· родитель;

· супруги.

Б. По индивидуальному заданию добавить в программу правила (от 3 до 5) для определения следующих типов родственников:

1) брат;

2) сестра;

3) ребенок;

4) бабушка;

5) дедушка;

6) внук;

7) внучка;

8) прадедушка;

9) прабабушка;

10) правнук;

11) правнучка;

12) зять (муж дочери, сестры, золовки);

13) невестка (жена сына для его матери, жена брата);

14) свекор (отец мужа);

15) свекровь (мать мужа);

16) тесть (отец жены);

17) теща (мать жены);

18) сноха (жена сына для его отца);

19) сват (отец одного из супругов для родителей другого супруга);

20) сватья (мать одного из супругов для родителей другого супруга);

21) свояк (муж сестры жены);

22) свояченица (сестра жены);

23) свояки (лица, женатые на двух сестрах);

24) деверь (родной брат мужа для жены);

25) золовка (сестра мужа);

26) шурин (брат жены);

27) дядя (брат отца или матери по отношению к детям, племянникам, кроме того, дядей является муж тетки);

28) тетка (сестра отца или матери по отношению к детям, племянникам, кроме того, теткой является жена дяди);

29) племянник (ребенок брата или сестры);

30) внучатый племянник (внук брата или сестры);

31) внучатая племянница (внучка брата или сестры);

32) двоюродный дедушка (дядя отца или матери);

33) двоюродная бабушка (тетка отца или матери);

34) двоюродный брат – кузен (сын родного дяди или тети);

35) двоюродная сестра – кузина (дочь родного дяди или тети);

36) двоюродный дядя (двоюродный брат отца и матери);

37) двоюродная тетка (двоюродная сестра отца и матери);

38) мачеха (неродная мать ребенка);

39) отчим (неродной отец ребенка);

40) падчерица (неродная дочь по отношению к одному из супругов);

41) пасынок (неродной сын по отношению к одному из супругов);

42) сводный брат (сын неродного родителя (мачехи, отчима) по отношению к детям родного);

43) сводная сестра (дочь неродного родителя (мачехи, отчима) по отношению к детям родного);

44) стрый – стрий (дядя по отцу (брат отца)).

45) уй – вуй (дядя по матери (брат матери)).

В.При необходимости добавить в программу недостающие факты и правила, требуемые для работы правил из п. Б).

Г.Отчет должен содержать:

· титульный лист;

· описание задания;

· текст программы;

· вопросы с ответами, иллюстрирующие корректность работы программы;

· вывод.

Рекомендации по выполнению работы

Рекурсия (в программировании) – алгоритмический метод, заключающийся в возможности обращения правила (функции, процедуры) к самому себе один или более раз.

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

1) нерекурсивное правило, определяющее его вид в момент прекращения рекурсии;

2) рекурсивное правило. Первая подцель, вырабатывает новые значения аргументов, а вторая – вызов самого правила с новыми значениями аргументов.

интеллектуальные информационные системы - student2.ru

Рис. 5. Использование рекурсивных правил

В программе на рис. 5 приведены примеры двух предикатов с рекурсивными правилами:

· predok – предикат, позволяющий определить родственную связь «предок-потомок» через поколения. Первое (нерекурсивное) правило предиката predok предписывает Прологу завершить процедуру поиска предка (потомка), если первый терм является непосредственным родителем ребенка, указанного вторым термом. В противном случае срабатывает второе (рекурсивное) правило, предписывающее в процессе поиска связи между предполагаемыми предком и потомком добавить промежуточное поколение. На первый вопрос «Является ли Вася предком Коли?» получен положительный ответ, так как Вася является непосредственным родителем Коли. На второй вопрос «Является ли Вася предком Светы?» получен положительный ответ, так как Вася является дедушкой Светы. На третий вопрос «Кто является предком Леши?» получены три ответа: Света (мама), Вася (дедушка) и Коля (прадедушка);

· factorial – предикат, определяющий значение факториала для заданного числа. Первое (нерекурсивное) правило предиката factorial определяет для числа «1» значение факториала, равное «1». В противном случае от числа N, указанного в качестве первого терма, необходимо отнять единицу [N1 is N – 1], найти значение факториала F1 для нового числа N1 [factorial(N1, F1)], определить факториал для исходного числа N [F is F1 * N] и установить значение F в качестве второго терма.

При необходимости вычислений в программе следует учитывать разницу и особенности применения операций «=» и «is». Первая операция не приводит к вычислению (преобразованию) выражения, записанного справа от операции (вопрос 1 на рис. 6), а вторая – приводит (вопрос 2 на рис. 6).
В случае использования свободной переменной операции приводят к присваиванию исходного (преобразованного) выражения, записанного справа от операции (см. вопросы 1 и 2 на рис. 6). В случае использования связанной переменной выполняется сравнение левой и правой части. Так, на вопрос 3 (рис. 6) вначале свободной переменной X присваивается выражение «5+1», а затем для уже связанной переменной X выполняется сравнение с выражением «4+2» («5+1» = «4+2» ® false). На вопрос 4 (рис. 6) вначале свободной переменной X присваивается «6» (результат выражения «5+1»), а затем для уже связанной переменной X выполняется сравнение с «6» (результатом выражения «4+2») .

интеллектуальные информационные системы - student2.ru

Рис. 6. Использование операций «=» и «is»

Задание на выполнение работы

Разработать программу расчета функции с использованием рекурсивных правил, отвечающую следующим требованиям.

A.Программа должна запрашивать у пользователя:

· N – количество членов ряда, учитываемых при расчете приближенного значения функции;

· X – значение переменной (если в формуле есть X).

Б. Выдавать результаты работы на экран:

· приближенное значение функции, рассчитанное с помощью ряда;

· точное значение функции, рассчитанное с помощью встроенных функций Пролога.

В.По индивидуальному заданию добавить в программу правила для определения приближенного значения функции с помощью ряда:

1) интеллектуальные информационные системы - student2.ru
2) интеллектуальные информационные системы - student2.ru
3) интеллектуальные информационные системы - student2.ru
4) интеллектуальные информационные системы - student2.ru
5) интеллектуальные информационные системы - student2.ru
6) интеллектуальные информационные системы - student2.ru
7) интеллектуальные информационные системы - student2.ru интеллектуальные информационные системы - student2.ru
8) интеллектуальные информационные системы - student2.ru
9) интеллектуальные информационные системы - student2.ru
10) интеллектуальные информационные системы - student2.ru
11) интеллектуальные информационные системы - student2.ru
12) интеллектуальные информационные системы - student2.ru
13) интеллектуальные информационные системы - student2.ru
14) интеллектуальные информационные системы - student2.ru
15) интеллектуальные информационные системы - student2.ru
16) интеллектуальные информационные системы - student2.ru
17) интеллектуальные информационные системы - student2.ru
18) интеллектуальные информационные системы - student2.ru
19) интеллектуальные информационные системы - student2.ru
20) интеллектуальные информационные системы - student2.ru
21) интеллектуальные информационные системы - student2.ru
22) интеллектуальные информационные системы - student2.ru
23) интеллектуальные информационные системы - student2.ru
24) интеллектуальные информационные системы - student2.ru
25) интеллектуальные информационные системы - student2.ru
26) интеллектуальные информационные системы - student2.ru
27) интеллектуальные информационные системы - student2.ru

Г.Отчет должен содержать:

· титульный лист;

· описание задания;

· текст программы;

· вопросы с ответами, иллюстрирующие корректность работы программы;

· вывод.

Рекомендации по выполнению работы

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

Списки в Прологе заключаются в квадратные скобки, например [1, 2, 8, 123] или ['Пн', 'Вт', 'Четверг']. Список [ ], не содержащий ни одного элемента, называется пустым. Каждый непустой список состоит из двух частей: головы и хвоста. Головой является первый элемент списка, хвостом – все остальное.

Таблица 3

Списки и их составные части

Список Голова Хвост
[1, 2, 8, 123] [2, 8, 123]
['Пн', 'Вт', 'Четверг'] 'Пн' ['Вт', 'Четверг']
[1.25] 1.25 []
[] не определена не определен

В программе голова отделяется от хвоста символом «|».

Часто используемыми операциями при работе со списками являются:

· добавление элемента в список;

· проверка наличия элемента в списке;

· объединение списков;

· удаление элемента из списка;

· задание обратного порядка следования элементов списка;

· разделение списка на два.

Программный код и примеры вопросов, содержащие предикаты для работы со списками, показаны на рис.7.

Для операции добавления элемента в список не требуется отдельного правила, если этот элемент добавляется в начало списка (см. вопрос 1 на рис. 7). Для остальных операций требуется определение отдельных предикатов, в т. ч. содержащих рекурсивные правила.

интеллектуальные информационные системы - student2.ru

Рис. 7. Предикаты обработки списков

Задание на выполнение работы

Разработать программу с использованием списков, отвечающую следующим требованиям.

A.По индивидуальному заданию добавить в программу правила для решения задачи.

1. Даны два списка целых чисел A1, A2, ..., An и B1, B2, ..., Bn. Объединить эти списки в один, исключить все повторения чисел и упорядочить их по возрастанию.

2. В списке целых чисел S1, S2, ..., Sn исключить все последовательности указанного вида, например [1, 11, 24, 5].

3. В списке символов S1, S2, ..., Sn найти первое и последнее вхождения указанного символа и исключить все символы между ними.

4. В списке символов S1, S2, ..., Sn найти длину наибольшей последовательности, построенной повторением одного и того же символа.

5. В списке символов S1, S2, ..., Sn каждую указанную последовательность символов заменить на другую указанную последовательность.

6. В списке символов S1, S2, ..., Sn найти самое короткое слово, если разделителем между словами является один или несколько пробелов и удалить его.

7. В списке символов S1, S2, ..., Sn найти самое длинное слово, если разделителем между словами является один или несколько пробелов и удалить его.

8. В списке символов S1, S2, ..., Sn найти все вхождения указанного слова, если разделителем между словами является один или несколько пробелов.

9. В списке символов S1, S2, ..., Sn найти число слов с одинаковыми первой и последней буквами, если разделителем между словами является один или несколько пробелов. Определить самое длинное такое слово.

10. В списке символов S1, S2, ..., Sn найти среднюю длину слов, если разделителем между словами является один или несколько пробелов. Определить все слова, имеющие эту длину.

11. Преобразовать список целых чисел A1, A2, ..., An следующим образом: исключить нули, слева записать все положительные числа, справа - все отрицательные.

12. Преобразовать список целых чисел A1, A2, ..., An следующим образом: исключить нули, слева записать все четные числа, справа – все нечетные.

13. Преобразовать список целых чисел A1, A2, ..., An следующим образом: исключить нули, слева записать все простые числа, справа – все составные.

14. В списке целых чисел A1, A2, ..., An определить максимально длинную последовательность чисел, расположенных в возрастающем порядке.

15. В списке целых чисел A1, A2, ..., An определить максимально длинную последовательность чисел, расположенных в убывающем порядке.

16. Список целых чисел A1, A2, ..., An оставить без изменений, если он упорядочен по возрастанию или убыванию. В противном случае: каждый четный элемент списка утроить, каждый элемент, стоящий на нечетном месте и кратный четырем, удалить.

Б.Отчет должен содержать:

· титульный лист;

· описание задания;

· текст программы;

· вопросы с ответами, иллюстрирующие корректность работы программы;

· вывод.

Контрольные вопросы

1. Дайте определение понятий: «терм», «предикат», «формула».

2. Назовите кванторы переменных и особенности их применения.

3. Назовите язык программирования, реализующий логику предикатов первого порядка.

4. Перечислите и дайте характеристику разновидностей предложений в Прологе.

5. Какие символы используются в Прологе для обозначения логи­чес­ких операций «И», «ИЛИ» и «импликации»?

6. Что такое «фраза Хорна»?

7. Дайте определение понятий: «свободная переменная», «связанная пе­ре­менная», «анонимная переменная».

8. Какой метод используется в Прологе для поиска решения (дока­за­тельства цели)?

9. Что понимается под рекурсией в программировании?

10. Что понимается под «головой» и «хвостом» списка?

ОНТОЛОГИИ

URI (IRI)

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

В общем случае структура URI (IRI) выглядит следующим образом:

URI = [схема ":"] ["//"] иерархическая-часть ["?" запрос] ["#" фрагмент]

Схема указывает на используемый сетевой протокол (http, ftp, file, mailto) или раздел (пространство имен) онтологии (xml, rdf, rdfs, owl).

Иерархическая часть содержит путь к ресурсу в виде сетевого адреса (www.gosuslugi.ru, www.co-ode.org/ontologies/pizza/pizza.owl, 127.0.1.01:80) или идентификатор ресурса в заданном пространстве имен (C:/Windows/explorer.exe, [email protected], Class, Thing). При онтологическом представлении знаний обычно указывает на расположения файла с онтологией (www.co-ode.org/ontologies/pizza/pizza.owl) или предопределенное ключевое слово используемой онтологической спецификации (Class, Thing).

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

Фрагмент позволяет осуществить косвенную идентификацию ресурса. Совместно со схемой и иерархической частью представляет полный идентификатор сущности (например, понятия или его экземпляра в конкретной онтологии). Пример полного идентификатора понятия (класса) Food в прикладной онтологии pizza.owl

http://www.co-ode.org/ontologies/pizza/pizza.owl#Food

В семантической паутине используются четыре стандартных пространства имен.

Таблица 4

RDF, RDFS и OWL

RDF и OWL – языки представления информации (знаний), которые могут использоваться для описания онтологий как в семантической паутине, так и в различных прикладных информационных системах. RDFS является надстройкой над RDF и определяет его базовые конструкции (ресурс, класс, подкласс, тип данных, домен и т. п.). Если проводить аналогию с базами данных, то RDFS позволяет задать структуру БД, а RDF наполнить ее содержимым. OWL полностью включает в себя RDF и расширяет его возможности. В прикладных OWL-онтологиях значительная часть описания выполнена с помощью конструкций RDF и RDFS.

Как было отмечено выше, в качестве синтаксических конструкций для описания RDF- и OWL-онтологий используются различные способы. Наиболее распространенным является XML-описание в связи с широким распространением и поддержкой XML в большинстве современных языков программирования. В то же время оно является наиболее громоздким и трудночитаемым для человека. Более компактным и читабельным является формат JSON-LD. JSON стремительно набирает популярность и уже сейчас составляет серьезную конкуренцию XML. Другие способы описаний онтологий (Turtle, N-Triples, N-Quads и TriG), несмотря на компактность и читабельность, значительно проигрывают в популярности и поддержке со стороны разработчиков программного обеспечения.

Базовым элементом языка RDF является тройка (триплет, аксиома), которая состоит из субъекта, предиката и объекта.

Рис. 9. RDF-тройка «субъект – предикат – объект»

Предикат (свойство) представляет собой бинарное отношение между субъектом и объектом. В зависимости от контекста одна и та же сущность онтологии может выступать в любом из перечисленных качеств. Т.е. в одной тройке сущность может быть субъектом, в другой – предикатом, а в третьей – объектом.

Первые два элемента RDF-тройки (субъект и предикат) обязательно идентифицируются при помощи URI. Объект может быть как сущностью, идентифицируемой при помощи URI, так и RDF-литералом (строкой, числом, датой и т. п.).

Примеры определения RDF-троек для онтологии с пространством имен learning (нотация Turtle):

· определение класса:

learning:человек rdf:type rdfs:Class ;

· определение подкласса:

learning:студент rdfs:subClassOf learning:человек ;

· определение свойств:

learning:имя rdf:type owl:DatatypeProperty ,

learning:фамилия rdf:type owl:DatatypeProperty ;

· создание экземпляра подкласса (индивида):

learning:студент1 rdf:type learning:студент ;

· связывание свойств с индивидами и указание их значений:

learning:студент1 learning:имя "Вася" ;

learning:фамилия "Иванов" .

В последнем примере использовано объединение RDF-троек для случая совпадения субъектов.

Несмотря на очевидные аналогии между RDF и объектно-ориентированным программированием (ООП), между ними имеется одно принципиальное различие. В ООП свойство (атрибут) определяется внутри класса и является его неотъемлемой составляющей. В RDF свойства определяются независимо от классов и могут связываться с ними с помощью RDF-троек в произвольном, но не лишенном смысла порядке. Так, одно и то же свойство («Возраст») может быть связано с различными классами или их экземплярами («Человек», «Автомобиль», «Семья»). Более того, экземпляры одного и того же класса могут обладать разными наборами свойств. Это предоставляет более гибкие возможности при определении классов по сравнению с ООП, но при этом может привести к «размыванию» самого понятия «класс».

В RDF/RDFS определены базовые классы, которые при создании прикладной онтологии выступают в качестве фундамента для определения классов и экземпляров предметной области. При описании RDF-троек базовые классы указываются в качестве объекта, т.е. в третьей позиции. В табл. 5 приводится список классов RDF/RDFS (http://www.w3.org/TR/rdf-schema).

Таблица 5

Классы RDF/RDFS

Класс Описание
rdfs:Resource Класс-ресурс, включает «всё»
rdfs:Literal Класс литеральных значений (например, текстовых строк или чисел)
rdf:langString Класс строковых литералов, интерпретация которых зависит от выбранного языка или системы кодирования
rdf:HTML Класс HTML-литералов
rdf:XMLLiteral Класс XML-литералов

Окончание табл. 5

Класс Описание
rdfs:Class Класс классов
rdf:Property Класс RDF-свойств
rdfs:Datatype Класс типов данных RDF
rdf:Statement Класс утверждений RDF
rdf:Bag Класс контейнеров с неупорядоченными элементами
rdf:Seq Класс контейнеров с упорядоченными элементами
rdf:Alt Класс контейнеров с элементами-альтернативами
rdfs:Container Класс RDF-контейнеров
rdfs:ContainerMembership Класс свойств «членства» в контейнерах: rdf:_1, rdf:_2, ..., все они являются подсвойствами свойства rdfs:member
rdf:List Класс RDF-списков

В том же документе определены базовые свойства, которые выступают в качестве предикатов RDF-троек (табл. 6).

Таблица 6

Свойства RDF/RDFS

Свойство Описание
rdf:type Субъект является экземпляром класса
rdfs:subClassOf Субъект является подклассом класса
rdfs:subPropertyOf Субъект является подсвойством свойства
rdfs:domain Домен свойства субъекта
rdfs:range Диапазон свойства субъекта
rdfs:label Человекочитаемое название субъекта
rdfs:comment Текстовое описание ресурса
rdfs:member Член ресурса субъекта
rdf:first Первый элемент списка
rdf:rest Оставшийся за первым элементом «хвост» списка
rdfs:seeAlso Дополнительная информация о субъекте
rdfs:isDefinedBy Определение ресурса субъекта
rdf:value Свойство, используемое для структурированных значений
rdf:subject Субъект RDF-утверждения
rdf:predicate Предикат RDF-утверждения
rdf:object Объект RDF-утверждения

OWL является дальнейшим развитием RDF/RDFS. Спецификация OWL определяет абсолютно новый синтаксис записи онтологий – функционально-ориентированный. При этом остается возможность записи онтологий в RDF-стиле. На рис. 10 приведены связи и взаимозаменяемость (двунаправленной стрелкой) между классами OWL и RDF/RDFS (http://www.w3.org/TR/owl2-rdf-based-semantics).

L t1UKDXHTtVBSKC5JzEtJzMnPS7VVqkwtVrK34+UCAAAA//8DAFBLAwQUAAYACAAAACEAYidITsQA AADcAAAADwAAAGRycy9kb3ducmV2LnhtbESPzW7CMBCE70i8g7VIvYFTDginGIQqqNoL4qcPsI23 SUS8jmyTpG9fIyFxHM3MN5rVZrCN6MiH2rGG11kGgrhwpuZSw/dlP12CCBHZYOOYNPxRgM16PFph blzPJ+rOsRQJwiFHDVWMbS5lKCqyGGauJU7er/MWY5K+lMZjn+C2kfMsW0iLNaeFClt6r6i4nm9W w4/36qB2qjfHbXbdL5z8mH91Wr9Mhu0biEhDfIYf7U+jYakU3M+kIyDX/wAAAP//AwBQSwECLQAU AAYACAAAACEA8PeKu/0AAADiAQAAEwAAAAAAAAAAAAAAAAAAAAAAW0NvbnRlbnRfVHlwZXNdLnht bFBLAQItABQABgAIAAAAIQAx3V9h0gAAAI8BAAALAAAAAAAAAAAAAAAAAC4BAABfcmVscy8ucmVs c1BLAQItABQABgAIAAAAIQAzLwWeQQAAADkAAAAQAAAAAAAAAAAAAAAAACkCAABkcnMvc2hhcGV4 bWwueG1sUEsBAi0AFAAGAAgAAAAhAGInSE7EAAAA3AAAAA8AAAAAAAAAAAAAAAAAmAIAAGRycy9k b3ducmV2LnhtbFBLBQYAAAAABAAEAPUAAACJAwAAAAA= " fillcolor="white [3201]" strokecolor="black [3200]" strokeweight="1pt">

rdfs : Literal
owl : Thing
owl : Ontology
rdfs : Resource
owl : ObjectProperty
owl : DataTypeProperty
owl : OntologyProperty
owl : AnnotationProperty
owl : Datatype
rdfs : Property
rdfs : Class
owl : Class

Рис. 10. Часть иерархии OWL в RDF-ориентированной семантике

Совокупность RDF-троек позволяет описать онтологию для конкретной предметной области. Ее можно визуализировать в виде ориентированного RDF-графа, если субъекты и объекты отобразить в виде узлов, а предикаты – в виде дуг. На рис. 11 представлен фрагмент такого RDF-графа для обучающей онтологии http://www.owl-ontologies.com/travel.owl.

интеллектуальные информационные системы - student2.ru

Рис. 11. RDF-граф

2.3. Лабораторная работа № 4
Построение онтологической модели в Protégé.
Создание классов

Цель ра

Наши рекомендации