Имам онтология с различни събития. Ето защо имам три класа: A, B, C и класа на помощник клас.
Искам причинителят да създаде нов човек катоподклас от С за всяка двойка индивиди a (rdf: typeOf A) и b (rdf: typeOf B) намерени. Тези нови физически лица трябва да съдържат информация за а и б.
В миналото използвах разузнавач на яна със собствен файл с правило, за да получи този резултат, но сега искам да преминем към стандартен разумник на OWL DL.
Първоначалната ми идея е да свържа едно und b като:
a onto:hasB b
И рекламата дава типа Temp с ограничението за Temp:
hasbB some B
Сега искам да създам нов човек от тип С с ограничение за Temp:
hasC some C
И над този нов индивид имам достъп до информацията на а и б.
Моите проблеми са:
- Как мога да разбера защо свързвате a и b?
- Не мисля, че създаването на С ще работи, тъй като това е ограничение за темп, което никога няма да бъде присвоено като тип поради това ограничение.
Или аз напълно греша с моя подход?
Редактиране:
За да изясня целта си с по-добро описание:
Имам онтология с различни събития.
Моята цел е да свържа определени индивиди (събития), които принадлежат заедно, като формира нов индивид (събитие), описващ тази връзка с помощта на един разумен.
Напр .:
- Четох събитие (индивидуално), което описва "охрана" (тип) в онтологията.
- Четох едно събитие (индивидуално), което описва "опелацията" (тип) в онтологията.
Тези хора не са свързани изобщо с товамомент. Сега искам един разумен човек да създаде ново събитие (индивидуално) с типа "PowerManipulation". Всъщност искам да намеря човек с типа "PowerManipulation", създаден за всяка двойка (която все още не е свързана) с хора от тип "PowerOutage" и "Alarm", които трябва да имат референции (свойства) които са причинили тяхното създаване ("Аларма" и "PowerOutage").
Онтология преди разсъжденията:
(alarm1 rdf:type "Alarm")
(out1 rdf:type "PowerOutage")
Това, което искам да изглежда онтологията след разсъжденията
(alarm1 rdf:type "Alarm")
(out1 rdf:type "PowerOutage")
(man1 rdf:type "PowerManipulation")
(man1 ont:hasRealtadInd alarm1)
(man1 ont:hasRealtedInd out1)
Първоначално използвах правилата на Йена и разсъдъка на Йена, за да изпълня тази задача. Но искам да премина към стандартен OWL DL разузнавач.
Възможно ли е тази задача да бъде изпълнена с основни ограничения? Или имам нужда от правила за SWRL или SPIN (вижте отговорите на Williams по-долу)?
Отговори:
0 за отговор № 1Можете да направите това с конструкторите на SPIN доста лесно и SPIN вложки.
http://www.w3.org/Submission/2011/SUBM-spin-modeling-20110222/#spin-rules-construct
http://www.w3.org/Submission/2011/SUBM-spin-modeling-20110222/#spin-rules-update
SPIN и OWL могат да живеят щастливо заедно. Разгледайте Groovy библиотеката, която има разширения за двете:
https://github.com/williamgreenly/lescot
Пример по-долу:
def model = new GroovyRdfModel()
model.add(""" some turtle data """)
model.add(""" some OWL rules """)
model.add(""" some SPIN rules """)
def inferredModelByOWLReasoning = model.owl()
def inferredModelBySPINRules = model.spin()