Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
46
Добавлен:
04.01.2020
Размер:
1.06 Mб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра экономической информатики

Отчет по лабораторной работе №4

по дисциплине

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

Выполнили:

Ипина А.А., Панкратов А.О.

Группа:

ФБИ-12

Проверили:

Авдеенко Т.В., Бакаев М.А.

Новосибирск 2015

Цель работы

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

  1. Определение предметной области:

Для того что бы определить предметную область не обходимо определить:

  • Для чего нам нужна онтология?

  • Кто будет пользоваться данной онтологией?

  • На какие вопросы должна отвечать онтология?

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

Предметная область онтологии: представление стран, городов, отелей и туров.

Примеры вопросов, на которые система может дать ответы:

  • В каких городах есть отели сети Хилтон?

  • Какая валюта во Вьетнаме?

  • Какие страны относятся к странам Европейского континента?

  • Является ли Сидней столицей Австралии?

  • Какая средняя температура в Китае?

  • В отеле 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]))