Правильный способ описания предполагаемого свойства с помощью OWL и RDF

Я пытаюсь написать правило вывода с помощью OWL.

Учитывая следующее:

  • Документ классифицируется как имеющий категорию - скажем, «Договорное право».
  • Существует родительская категория «Право» с подкатегорией «Договорное право».
  • Хочу сделать вывод, что документ тоже относится к категории «Закон».

Заявления:

@prefix : <http://example.com/> .
@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#> .

:Document rdf:type owl:Class .
:Category rdf:type owl:Class .

:documentHasCategory rdf:type owl:ObjectProperty ;
                rdfs:domain :Document ;
                rdfs:range :Category .

:hasSubCategory rdf:type owl:ObjectProperty ;
                rdfs:domain :Category ;
                rdfs:range :Category .

:category1 rdf:type :Category ;
      rdfs:label "Law" ;
      :hasSubCategory :category2 .

:category2 rdf:type :Category ;
      rdfs:label "Contract Law".

:doc1 rdf:type :Document ;
     :documentHasCategory :category2 .

Как мне написать вывод, чтобы добавить в документ категорию «Закон»? Я пытался:

:inferredCategory rdf:type owl:ObjectProperty ;
                 rdfs:domain :Document ;
                 rdfs:range :Category ;
                 owl:propertyChainAxiom ( :documentHasCategory :hasSubCategory ) .

Но я не вижу никаких предполагаемых утверждений (я использую GraphDB).

owl:propertyChainAxiom правильный ли подход к этому? Я неправильно понял синтаксис черепахи?


person user888734    schedule 06.06.2018    source источник
comment
Смоделируйте эти категории как классы OWL или просмотрите stackoverflow.com/q/48015890/7879193 (вы должны выбрать OWL-RL GraphDB набор правил для вашего репозитория).   -  person Stanislav Kralin    schedule 07.06.2018
comment
Извините, я не совсем понимаю, что вы подразумеваете под моделированием этих категорий как классов OWL. Не правда ли?   -  person user888734    schedule 07.06.2018
comment
Я имею в виду, как классы документов, doc1 a :Document, :Category1.   -  person Stanislav Kralin    schedule 07.06.2018
comment
Вы должны меня простить, я все еще не понимаю. Отличается ли это их определением с помощью операторов rdf: type? Пожалуйста, будьте максимально откровенны - спасибо!   -  person user888734    schedule 07.06.2018


Ответы (1)


Я не уважал направление предиката hasSubCategory, поэтому на самом деле ничто не соответствует правилу propertyChain.

Такое определение вывода работает нормально:

:hasParentCategory rdf:type owl:ObjectProperty ;
    owl:inverseOf :hasChildCategory .

:documentHasInferredCategory rdf:type owl:ObjectProperty ;
                rdfs:domain :Document ;
                rdfs:range :Category ;
                owl:propertyChainAxiom ( :documentHasCategory :hasParentCategory ) .
person user888734    schedule 09.06.2018