Как настроить пользовательское правило в Graphdb
Я пытаюсь сделать таможенные правила в Graphdb. У меня есть онтология Person, в которой есть классы "Parent" и "Child", а также свойство объекта "hasChild" и "hasGrandChild". Есть три узла с такими отношениями:
: Али: hasChild: Аслам
: Aslam: hasChild: Ахмед
Теперь я хочу сделать вывод, что ":Ali:hasGrandChild:Ahmed" в Graphdb. Встроенный набор правил, вроде оптимизированного для совы, не работает. Я пытался использовать файл.pie для создания пользовательских правил, но новые правила не работают
2 ответа
GraphDB дает вам гибкость в разработке ваших собственных правил, если вы хотите выразить семантику, не являющуюся частью стандартов OWL или RDFS. В этом примере вы пытаетесь определить, что свойство hasGranChild
это цепочка из двух hasChild
свойства. Это возможно с аксиомой цепочки свойств OWL.
Я предлагаю использовать стандартную часть семантики OWL в наборах правил OWL 2 RL и OWL 2 QL в GraphDB. Вот пример:
@prefix : <http://www.example.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
:hasParent a owl:ObjectProperty .
:hasGrandChild owl:propertyChainAxiom
( :hasChild :hasChild ) .
:Ahmed :hasChild :Ali .
:Ali :hasParent :Aslam .
Пожалуйста, не забудьте изменить набор правил по умолчанию на OWL 2 RL или OWL 2 QL во время создания репозитория.
Я создал файл набора правил под названием "CustomRule.pie". Он состоит из трех основных частей: "Префиксы", "Аксиомы" и "Правила".
В Prefices я вставил наш префикс онтологии, например:
Человек: http://www.semanticweb.org/hamza/ontologies/2017/6/Person.owl#
Затем в Аксиомах мы должны написать все три предмета, Предиката, Объекта, которые мы вставили в нашу онтологию. Подобно:
<'Person: Ahmed'> <'Person: hasChild'> <'Person: Ali'>
<'Person: Ali'> <'Person: hasChild'> <'Person: Aslam'>
// Ingore запятые
Наконец, в разделе "Правила" мы можем написать правила подключения. Он проверяет все аксиомы, доступные в разделе Аксиомы для реализации правил. подобно
Id: обычай
a <'Person: hasChild'> b
b <'Person: hasChild'> c
------------------------------------