Интеллектуальные информационные системы (ИИС) / Отчет по лр 4 ИИС
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра экономической информатики
Отчет по лабораторной работе №4
по дисциплине
«Интеллектуальные информационные системы»
Выполнили:
Ипина А.А., Панкратов А.О.
Группа:
ФБИ-12
Проверили:
Авдеенко Т.В., Бакаев М.А.
Новосибирск 2015
Цель работы
Освоить принципы проектирования онтологий и их разработки с использованием инструментальных средств. Понять содержание гибридной модели представления знаний, сочетающей фреймы и правила вывода. Получить навыки разработки интеллектуальной системы на основе гибридной модели.
-
Определение предметной области:
Для того что бы определить предметную область не обходимо определить:
-
Для чего нам нужна онтология?
-
Кто будет пользоваться данной онтологией?
-
На какие вопросы должна отвечать онтология?
Данная онтология предназначена для турагентств, чтобы составить туры, и хранить в себе информацию о странах, городах и отелях мира.
Предметная область онтологии: представление стран, городов, отелей и туров.
Примеры вопросов, на которые система может дать ответы:
-
В каких городах есть отели сети Хилтон?
-
Какая валюта во Вьетнаме?
-
Какие страны относятся к странам Европейского континента?
-
Является ли Сидней столицей Австралии?
-
Какая средняя температура в Китае?
-
В отеле Swiss Village Resort есть бассейн?
-
И т.д.
Ключевые термины при создании данной онтологии: страна, континент, виза, город, столица, язык, валюта, тур, отель, стоимость, средняя температура зимой, средняя температура летом, дата вылета, дата прилета.
Существует несколько возможных подходов для разработки иерархии классов:
1) процесс нисходящей разработки, который начинается с определения самых общих понятий предметной области с последующей конкретизацией понятий;
2) процесс восходящей разработки, который начинается с определения самых конкретных классов (листьев иерархии), с последующей группировкой этих классов в более общие понятия;
3) процесс комбинированной разработки – сочетание нисходящего и восходящего подходов: сначала мы определяем более заметные понятия, а затем соответствующим образом обобщаем и ограничиваем их.
В нашем случае был использован подход нисходящей разработки.
В таблице 1 представлены созданные классы и их слоты. Слоты со * означают, что они обязательны к заполнению.
Наименования классов пишем с заглавной буквы, а слоты с маленькой. В качестве разделителя использован прочерк «_».
Классы «Tur», «Hotel» , «City» являются по умолчанию “конкретными классами” (на их основе можно создавать экземпляры).
Класс «Country» не может сам по себе иметь экземпляров без более детального определения, у него есть подклассы, поэтому для этого класса в свойстве Role и выбираем “Abstract”. Подклассами класса «Country», являются классы «Country_of_African», «Country_of_American», «Country_of_Australian», «Country_of_Azian», «Country_of_Europe», они находятся на одном уровне иерархии, для них уже устанавливаем в свойстве Role - “ Concrete ”. Подклассы содержат в себе не только свои слоты, но и слоты класса.
Таблица 1 – Классы и их слоты
Класс |
Слот |
Описание |
Country |
language |
|
midle_t_summer |
|
|
middle_t_winter |
|
|
name_country* |
|
|
name_of_capital* |
|
|
valuta |
|
|
viza |
|
|
Country_of_African |
continent_af* |
Континент, значение по умолчанию Африка |
Country_of_American |
continent_a* |
Континент, значение по умолчанию Америка |
Country_of_Australian |
continent_au* |
Континент, значение по умолчанию Австралия |
Country_of_Azian |
continent_az* |
Континент, значение по умолчанию Азия |
Country_of_Europe |
continent_e* |
Континент, значение по умолчанию Европа |
Tur |
about_hotel |
В какой отель |
|
all_inclusive |
Все включено |
|
arrival_date* |
Дата возвращения |
|
cost |
Стоимость |
|
days |
Количество дней |
|
departure_date* |
Дата вылета |
|
hot |
Горячая путевка (да/нет) |
|
place* |
Место (куда) |
Hotel |
in_city |
В каких городах расположен отель |
|
name_hotel* |
Название отеля |
|
number_rooms |
Количество номеров |
|
restouran |
Наличие ресторана |
|
swimmig_pool |
Наличие бассейна |
|
star* |
Количество звезд |
City |
capital |
Столица (да/нет) |
|
name_city* |
Имя города |
|
the_country |
Страна |
|
touristic |
Туристический (да/нет) |
Ниже представлена реализация в Protégé:
Класс «City» и его слоты:
Класс «Country» и его слоты:
Класс «Country_of_Africa» и его слоты( остальные подклассы класса «Country» реализованы так же):
Класс «Hotel» и его слоты:
Класс «Tur» и его слоты:
Далее представлено создание экземпляров.
Создание экземпляра Тур:
Создание экземпляра Город:
Создание экземпляра класса Европейская страна:
Создание экземпляра класса Отель:
Ниже представлены схемы визуализации с помощью plugin «Jambalaya»:
Взаимосвязь классов:
Иерархия классов:
Иерархия классов с экземплярами:
Иерархия классов и экзампляров с отображением связей:
Описание программы на CLIPS:
Описание классов:
(defclass %3ACLIPS_TOP_LEVEL_SLOT_CLASS "Fake class to save top-level slot information"
(is-a USER)
(role abstract)
(single-slot capital
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot midle_t_summer
(type FLOAT)
(range 10.0 40.0)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot continent_af
(type STRING)
(default "Africa")
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot language
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot arrival_date
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot departure_date
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot name_country
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(multislot in_citys
(type INSTANCE)
;+ (allowed-classes City)
(create-accessor read-write))
(single-slot star
(type SYMBOL)
(allowed-values 2 3 4 5)
;+ (cardinality 1 1)
(create-accessor read-write))
(multislot about_hotel
(type INSTANCE)
;+ (allowed-classes Hotel)
(create-accessor read-write))
(single-slot midle_t_winter
(type FLOAT)
(range -35.0 35.0)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot continent_a
(type STRING)
(default "America")
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot continent_e
(type STRING)
(default "Europe")
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot all_inclusive
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot days
(type FLOAT)
(range 7.0 90.0)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot viza
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot name_of_capital
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write))
(multislot place
(type INSTANCE)
;+ (allowed-classes City)
(cardinality 1 ?VARIABLE)
(create-accessor read-write))
(single-slot number_rooms
(type FLOAT)
(range 1.0 %3FVARIABLE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot valuta
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot restouran
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot name_hotel
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot name_city
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot the_country
(type INSTANCE)
;+ (allowed-classes Country)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot cost
(type FLOAT)
(range 0.0 %3FVARIABLE)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot LR4var4_Class13
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot LR4var4_Class14
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot touristic
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot continent_au
(type STRING)
(default "Australia")
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot continent_az
(type STRING)
(default "Azia")
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot swimming_pool
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot hot
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write)))
(defclass Country
(is-a USER)
(role abstract)
(single-slot language
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot valuta
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot viza
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot name_of_capital
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot midle_t_winter
(type FLOAT)
(range -35.0 35.0)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot midle_t_summer
(type FLOAT)
(range 10.0 40.0)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot name_country
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write)))
(defclass Country_of_American
(is-a Country)
(role concrete)
(single-slot continent_a
(type STRING)
(default "America")
;+ (cardinality 1 1)
(create-accessor read-write)))
(defclass Country_of_African
(is-a Country)
(role concrete)
(single-slot continent_af
(type STRING)
(default "Africa")
;+ (cardinality 1 1)
(create-accessor read-write)))
(defclass Country_of_Azian
(is-a Country)
(role concrete)
(single-slot continent_az
(type STRING)
(default "Azia")
;+ (cardinality 1 1)
(create-accessor read-write)))
(defclass Country_of_Australian
(is-a Country)
(role concrete)
(single-slot continent_au
(type STRING)
(default "Australia")
;+ (cardinality 1 1)
(create-accessor read-write)))
(defclass Country_of_Europe
(is-a Country)
(role concrete)
(single-slot continent_e
(type STRING)
(default "Europe")
;+ (cardinality 1 1)
(create-accessor read-write)))
(defclass City
(is-a USER)
(role concrete)
(single-slot touristic
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot capital
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot name_city
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot the_country
(type INSTANCE)
;+ (allowed-classes Country)
;+ (cardinality 0 1)
(create-accessor read-write)))
(defclass Hotel
(is-a USER)
(role concrete)
(single-slot number_rooms
(type FLOAT)
(range 1.0 %3FVARIABLE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot restouran
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(multislot in_citys
(type INSTANCE)
;+ (allowed-classes City)
(create-accessor read-write))
(single-slot name_hotel
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot star
(type SYMBOL)
(allowed-values 2 3 4 5)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot swimming_pool
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write)))
(defclass Tur
(is-a USER)
(role concrete)
(single-slot all_inclusive
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot days
(type FLOAT)
(range 7.0 90.0)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot arrival_date
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(multislot about_hotel
(type INSTANCE)
;+ (allowed-classes Hotel)
(create-accessor read-write))
(multislot place
(type INSTANCE)
;+ (allowed-classes City)
(cardinality 1 ?VARIABLE)
(create-accessor read-write))
(single-slot departure_date
(type STRING)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot cost
(type FLOAT)
(range 0.0 %3FVARIABLE)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot hot
(type SYMBOL)
(allowed-values FALSE TRUE)
;+ (cardinality 0 1)
(create-accessor read-write)))
Заполнение экземпляров на языке Clips:
([LR4var4_Class0] of Hotel
(in_citys [LR4var4_Class10005])
(name_hotel "Swiss Vilage Resot")
(number_rooms 400.0)
(restouran TRUE)
(star 4)
(swimming_pool TRUE))
([LR4var4_Class10001] of Tur
(about_hotel [LR4var4_Class10004])
(all_inclusive TRUE)
(arrival_date "31 January 2015")
(cost 55000.0)
(days 21.0)
(departure_date "10 January 2015")
(hot TRUE)
(place [LR4var4_Class10002]))
([LR4var4_Class10002] of City
(capital TRUE)
(name_city "Paris")
(the_country [LR4var4_Class10003])
(touristic TRUE))
([LR4var4_Class10003] of Country_of_Europe
(continent_e "Europe")
(language "french")
(midle_t_summer 20.0)
(midle_t_winter 5.0)
(name_country "France")
(name_of_capital "Paris")
(valuta "euro")
(viza TRUE))
([LR4var4_Class10004] of Hotel
(in_citys
[LR4var4_Class10002]
[LR4var4_Class10015]
[LR4var4_Class10007])
(name_hotel "Palace Grand resort")
(number_rooms 350.0)
(restouran TRUE)
(star 4))
([LR4var4_Class10005] of City
(name_city "Muine")
(the_country [LR4var4_Class10006])
(touristic TRUE))
([LR4var4_Class10006] of Country_of_Azian
(continent_az "Azia")
(language "Vietnamese")
(midle_t_summer 33.0)
(midle_t_winter 27.0)
(name_country "Vietnam")
(name_of_capital "Hoshimin")
(valuta "Vietnamese dong"))
([LR4var4_Class10007] of City
(capital TRUE)
(name_city "Pekin")
(the_country [LR4var4_Class10008])
(touristic TRUE))
([LR4var4_Class10008] of Country_of_Azian
(continent_az "Azia")
(language "chines")
(midle_t_summer 25.0)
(midle_t_winter -10.0)
(name_country "China")
(name_of_capital "Pekin")
(valuta "uan")
(viza TRUE))
([LR4var4_Class10009] of City
(capital FALSE)
(name_city "Los_Angeles")
(the_country [LR4var4_Class10010])
(touristic TRUE))
([LR4var4_Class10010] of Country_of_American
(continent_a "America")
(language "english")
(midle_t_summer 25.0)
(midle_t_winter -5.0)
(name_country "USA")
(name_of_capital "Washington")
(valuta "dollar")
(viza TRUE))
([LR4var4_Class10011] of City
(name_city "Sidney")
(the_country [LR4var4_Class10012])
(touristic TRUE))
([LR4var4_Class10012] of Country_of_Australian
(continent_au "Australia")
(language "Australian_english")
(midle_t_summer 20.0)
(midle_t_winter 15.0)
(name_country "Australia")
(name_of_capital "Canberra")
(valuta "Australian_dollar")
(viza TRUE))
([LR4var4_Class10013] of City
(capital FALSE)
(name_city "Venice")
(the_country [LR4var4_Class10014])
(touristic TRUE))
([LR4var4_Class10014] of Country_of_Europe
(continent_e "Europe")
(language "italian")
(midle_t_summer 20.0)
(midle_t_winter 7.0)
(name_country "Italy")
(name_of_capital "Rome")
(valuta "euro")
(viza TRUE))
([LR4var4_Class10015] of City
(name_city "Dubai")
(the_country [LR4var4_Class10016])
(touristic TRUE))
([LR4var4_Class10016] of Country_of_African
(continent_af "Africa")
(language "arabic")
(midle_t_summer 25.0)
(midle_t_winter 20.0)
(name_country "UAE")
(name_of_capital "Abu-dabi")
(valuta "dirham")
(viza TRUE))
([LR4var4_Class10017] of Hotel
(in_citys
[LR4var4_Class10009]
[LR4var4_Class10002]
[LR4var4_Class10013]
[LR4var4_Class10011])
(name_hotel "Hilton")
(number_rooms 500.0)
(restouran TRUE)
(star 3))
([LR4var4_Class10020] of Tur
(about_hotel [LR4var4_Class10017])
(arrival_date "13 February 2015")
(cost 78000.0)
(days 12.0)
(departure_date "1 February 2015")
(place [LR4var4_Class10011]))