Московский государственный университет имени М.В.Ломоносова
Опубликован: 05.11.2008 | Доступ: свободный | Студентов: 1040 / 194 | Оценка: 4.32 / 4.15 | Длительность: 11:59:00
ISBN: 978-5-9963-0007-5
Специальности: Программист
Лекция 6:

Языки описания онтологий. Основные синтаксические структуры: классы, отношения, аксиомы

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >
Индивиды (экземпляры классов)

Индивиды определяются при помощи аксиом индивидов (т.н. фактов ). Рассмотрим два вида фактов:

  1. факты членства индивидов в классах и факты о значениях свойств индивидов;
  2. факты идентичности/различности индивидов.

Пример аксиом индивидов первого вида:

<Балет rdf:ID="ЛебединоеОзеро">
  <имеетКомпозитора rdf:resource="#Чайковский"/>
</Балет>

Данная аксиома постулирует сразу 2 факта: (1) существует некоторый индивид класса Балет, имеющий имя ЛебединоеОзеро ; (2) этот индивид связан свойством имеетКомпозитора с индивидом Чайковский (который определен где-то в другом месте). Первый факт говорит о членстве в классе, второй - о значении свойства индивида.

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

  • owl:sameAs постулирует, что две ссылки URI ссылаются на один и тот же индивид;
  • owl:differentFrom постулирует, что две ссылки URI ссылаются на разные индивиды;
  • owl:AllDifferent предоставляет средство для определения списка попарно различных индивидов.

На рис. 6.5 проиллюстрированы основные элементы OWL-онтологии.

Основные структурные единицы OWL-онтологии

Рис. 6.5. Основные структурные единицы OWL-онтологии

SPARQL

Вероятно, сами по себе языки представления онтологий не были бы так сильно востребованы, если бы не возникало необходимости автоматически обрабатывать онтологии, наполнять их содержимым и выполнять к ним запросы. Наиболее популярными среди языков запросов к RDF-хранилищам на сегодняшний день являются языки RDQL и SPARQL.

Рассмотрим несколько упрощенный синтаксис SPARQL-запроса:

SELECT 	<список_перем>
FROM 	<URI_онтологии>
WHERE 	{  <список_шаблонов>.
           FILTER <фильтр>
        }

Где: список_перем - список имен переменных; URI_онтологии - URI-ссылка на онтологию; список_шаблонов - список шаблонов; фильтр - ограничения на значения переменных.

Допустим, онтология содержит следующие RDF-триплеты:

(Foo1, category, "Total Members")
(Foo1, rdf:value, 199)
(Foo2, category, "Total Members")
(Foo2, rdf:value, 200)
(Foo2, category, "CATEGORY X")
(bar,  category, "CATEGORY X")
(bar,  rdf:value, 358)

Проследим за ходом выполнения запроса (имена переменных предваряются знаком " ?")

SELECT ?cat ?val
FROM   <URI_онтологии>
WHERE { ?x rdf:value ?val.
        ?x category ?cat. 
        FILTER (?val>=200)
      }

Семантика запроса: "Выдайте все объекты cat предиката category, субъект которого ( x ) является также субъектом предиката rdf:value со значением объекта val, не меньшим 200. Вместе со значениями cat выдайте соответствующие значения val ".

Ход выполнения запроса:

На место переменной x могут быть подставлены Foo1, Foo2 и bar (из исходной онтологии), причем Foo2 может быть подставлен дважды, поскольку имеет два свойства category.

При подстановке Foo1 значение переменной val не удовлетворяет ограничению в предложении FILTER SPARQL-запроса. Во всех остальных случаях все условия запроса выполнены.

Результат выполнения запроса - 3 пары значений (cat, val):

[
["Total Members", 200], 
["CATEGORY X", 200],
["CATEGORY X", 358]
]

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

  1. Для чего нужен RDFS?
  2. Что такое реификация?
  3. Чем отличается класс RDFS от класса OWL?
< Лекция 5 || Лекция 6: 12345 || Лекция 7 >
Kirill Annenkov
Kirill Annenkov
Украина
Андрей Федоров
Андрей Федоров
Россия