 
        
        Интеллектуальные информационные системы (ИИС) / Отчет по лр 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]))
