Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с онтологиями в Protégé.docx
Скачиваний:
56
Добавлен:
19.06.2023
Размер:
63.92 Кб
Скачать

2.3.2 Отношения

hasMotherboard

Функциональное

Субъект: Computer

Объект: Motherboard

Не пересекается с: hasMotherboardHardware

hasMotherboardHardware

Обратно-функциональное

Обратно к: isComponentOfMotherboard

Субъект: Motherboard

Объект: Motherboard Hardware

Не пересекается с: hasMotherboard

isComponentOfMotherboard

Функциональное

Обратно к: hasMotherboardHardware

Субъект: Motherboard

Объект: Motherboard Hardware

Не пересекается с: hasMotherboard

2.3.3 Свойства

has capacity

Функциональное

Тип: xsd:unsignedInt

has disk capacity

Является подсвойством: has capacity

Субъект: Disk Drive

has RAM capacity

Является подсвойством: has capacity

Субъект: RAM

2.3.4 Экземпляры

Disk Drive Individual2

Тип: Disk Drive

has disk capacity 128000

Hardware1

Тип: Hardware

hasMotherboardHardware Hardware2

Motherboard Individual0

Тип: Motherboard

hasMotherboardHardware Disk Drive Individual0

hasMotherboardHardware RAM Individual0

hasMotherboardHardware CPU Individual0

hasMotherboardHardware Power Supply Individual0

hasMotherboardHardware GPU Individual0

PC Individual0

Тип: PC

hasMotherboard Motherboard Individual0

RAM Individual0

Тип: RAM

has RAM capacity 4000

2.3.5 Условия

2GB RAM

RAM and ((has_capacity value 2000) or (has_capacity value 2048))

4GB RAM

RAM and ((has_capacity value 4000) or (has_capacity value 4096))

8GB RAM

RAM and ((has_capacity value 8000) or (has_capacity value 8192))

2.3.6 Swrl-правила

Если x – это компьютерное железо, содержащее железо y, предназначенное для материнской платы, то x – это материнская плата, а y – железо, предназначенное для материнской платы:

Hardware(?x) ^ hasMotherboardHardware(?x, ?y) -> Motherboard_Hardware(?y) ^ Motherboard(?x)

2.4 Результирующая онтология

Класс computer:Computer теперь является классом room:Компьютер.

Добавлено отношение «пребывает в», которое связывает класс studying:Human с классом room:Помещение.

Создан класс «Компьютерный стол с компьютером с дискретной видеокартой» как подкласс класса «Компьютерный стол» из онтологии «Помещения» и условие для этого класса:

Компьютерный_стол and (имеет_компьютер some

(Компьютер and (hasMotherboard some

(Motherboard and (hasMotherboardHardware some GPU)))))

Создано два SWRL-правила:

Если два студента пребывают в одной лаборатории, то эти студенты одногруппники (онтологии studying и room):

Student(?x) ^ Student(?y) ^ Лаборатория(?z) ^ пребывает_в(?x, ?z) ^ пребывает_в(?y, ?z) -> sameGroupAs(?x, ?y)

Аналогично первому правилу, но относительно объекта Group. Прошлое правило создаёт новые отношения между студентами, а текущее между студентами и группой, следовательно, нужна дополнительная проверка на существование отношения между x и группой w):

Student(?x) ^ Student(?y) ^ Лаборатория(?z) ^ пребывает_в(?x, ?z) ^ пребывает_в(?y, ?z) ^ Group(?w) ^ contains(?w, ?x) -> contains(?w, ?y)

  1. Sparql-запросы

Перед запросом SELECT необходимо прописать следующие префиксы, позволяющие использовать все 4 онтологии и встроенные типы:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX this: <http://www.semanticweb.org/jerozgen/ontologies/2022/10/merged#> PREFIX studying: <http://www.semanticweb.org/milikovv/ontologies/2022/8/studying#> PREFIX computer: <http://www.semanticweb.org/jerozgen/ontologies/2022/8/computer#> PREFIX room: <http://www.semanticweb.org/jerozgen/ontologies/2022/10/room#>

Вывод всех людей, находящихся в заданном помещении (Лаборатория1):

SELECT ?x WHERE { ?x a ?y . ?y rdfs:subClassOf studying:Human . ?x this:пребывает_в this:Лаборатория1 }

Здесь x является объектом любого подкласса класса Human из онтологии Studying. Для определения, в каком помещении находится x, используется отношение «пребывает_в» из онтологии merged. Эта же онтология содержит объекты всех помещений. В данном примере в качестве объекта помещения взята «Лаборатория1».

Вывод количества оперативной памяти каждого компьютера в каждом помещении:

SELECT ?x ?c (sum(?f) as ?k) WHERE { ?x a ?a . ?a rdfs:subClassOf room:Помещение . ?b room:находится_в ?x . ?b room:имеет_компьютер ?c . ?c computer:hasMotherboard ?d . ?d computer:hasMotherboardHardware ?e . ?e computer:has_RAM_capacity ?f . } GROUP BY ?x ?c

Здесь x — экземпляр любого подкласса класса помещения из онтологии room, c – объект класса «Компьютер», k — количество памяти в компьютере c, b — рабочее место, d — материнская плата компьютера c, e – железо, находящееся на материнской плате d, e – количество памяти в одном объекте RAM. Запрос сначала находит количество памяти в каждом объекте RAM, существующем в базе знаний, а затем суммирует и группирует значения для каждого компьютера.