Основные принципы моделирования предметных областей с помощью семантических сетей

Страницы работы

Содержание работы

Министерство образования и науки Российской Федерации

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

Кафедра прикладной математики и информатики

Лабораторная работа №4

Факультет:                     ПМИ

Группа:                            ПМ-15

Студенты:                       Голубева М. В.

Кичаева Н. А.

Вариант:                          2

Преподаватели:             Ванюкевич О.Н.

Пономаренко В.М.

Новосибирск

2005

1.  Цель работы:

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

2.  Задание

1. Для предложенной предметной области выделить сущности,  базовые и специальные бинарные отношения.  Установить свойства отношений (транзитивность, симметричность, рефлексивность).

2. Связать сущности отношениями,  т.е. построить семантическую сеть.

3. Найти способ эквивалентного представления семантической сети в форме предложений на Прологе.

4. Написать интерпретатор  на  Прологе,  учитывающий  свойства транзитивности   базовых  отношений  типа  "родовая  связь",  "видовая связь", "часть-целое". Предусмотреть в интерпретаторе возможность реализации запросов по образцу через операции перехода по сети.

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

3.  Реализация

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

relation("является видом", "Мужчина", "Персона").

relation("является видом", "Женщина", "Персона").

relation("имеет год рождения", "Персона", "Год").

relation("является представителем", "Петров", "Мужчина").

relation("является представителем", "Николаева", "Женщина").

relation("является представителем", "1960", "Год").

relation("является представителем", "1961", "Год").

relation("имеет супруга", "Петров", "Николаева").

relation("имеет супруга", "Николаева", "Петров").

relation("имеет год рождения", "Петров", "1960").

relation("имеет год рождения", "Николаева", "1961").

relation("является представителем", "Иванов", "Мужчина").

relation("является представителем", "Иванова", "Женщина").

relation("является представителем", "1956", "Год").

relation("является представителем", "1959", "Год").

relation("имеет супруга", "Иванов", "Иванова").

relation("имеет супруга", "Иванова", "Иванов").

relation("имеет год рождения", "Иванов", "1956").

relation("имеет год рождения", "Иванова", "1959").

Составим сеть для  запросов  типа  «какая из супружеских пар не старше 1960 г.», вводя специальное отношение «не старше», «кто кого старше» и «в какой из супружеских пар муж старше жены», вводя специальное отношение «старше».

Текст программы

predicates

relation(STRING,STRING,STRING)

not_older(STRING,STRING,STRING).

greater(STRING,STRING).

hasband_greater(STRING,STRING).

clauses

not_older(Hasb,Wife,Year) :relation("is",Hasb,"Man"),           

relation("is",Wife,"Woman"),

relation("has wife",Hasb,Wife),

relation("has hasband",Wife,Hasb),

relation("not older",Hasb,Year),

relation("not older",Wife,Year).

greater(Person1,Person2):relation("is",Person1,X),

relation("kind",X,"Person"),        

relation("is",Person2,Y),

relation("kind",Y,"Person"),

relation("greater",Person1,Person2).

hasband_greater(Hasb,Wife):relation("is",Hasb,"Man"),           

relation("is",Wife,"Woman"),

relation("has wife",Hasb,Wife),

relation("has hasband",Wife,Hasb),

relation("greater",Hasb,Wife).

%network 

relation("kind", "Man", "Person").

relation("kind", "Woman", "Person").

relation("born", "Person", "Year").

relation("is", "Petrov", "Man").

relation("is", "Nikolaeva", "Woman").

relation("is", "Ivanov", "Man").

Информация о работе