Использование одной тройки RDF между классами OWL вместо ограничения OWL someValuesFrom? - PullRequest
0 голосов
/ 17 октября 2018

У нас есть онтология OWL, которая содержит свойства, которые предназначены для использования исключительно в ограничениях OWL someValuesFrom (у нас нет уровня экземпляра), например, следующие (синтаксис RDF Turtle):

:isResponsibleFor a owl:ObjectProperty;
                  rdfs:domain :Role;
                  rdfs:range :Task.

:SystemAdministrator rdfs:subClassOf :Role;
                     rdfs:subClassOf
                     [ a owl:Restriction ;
                       owl:onProperty :isResponsibleFor ;
                       owl:someValuesFrom :ServerAdministration].

Хотя ограничения OWL могут быть хорошими в синтаксисе функционального стиля или в Protégé, они вызывают широкий спектр проблем для нашего набора инструментов на основе RDF, таких как:

  • Преобразование между различными форматами или загрузка и сохранениев инструментах на основе RDF делает вывод нечитаемым или трудным для обработки из-за неорганизованных операторов blanknode, это также влияет на управление версиями.
  • Визуализация на основе графиков показывает большое количество ненужных узлов, которые необходимо отфильтровать и преобразовать впрямые края.
  • Редактирование сбивает с толку, особенно для редакторов, которые не знают об этой проблеме.

Из-за этих проблем мы хотели бы смоделировать эти утверждения просто так:

:SystemAdministrator :isResponsibleFor :ServerAdministration.

Мы не используем рассуждения, поэтому с OW проблем нетL профили, ограничивающие выражения классов, но это все еще семантически неправильно.Также возможно, что кто-то на самом деле добавит слой экземпляра в будущем, поэтому мы хотели бы найти компромисс.Можно ли как-то смоделировать семантику ограничения в самом свойстве или его выводе?Это определение может быть грязным, так как оно должно быть определено только один раз, в то время как у нас есть несколько тысяч ограничений.

Например, может быть свойство: isResponsibleForSome:

:isResponsibleForSome a owl:ObjectProperty;
                  rdfs:domain [rdfs:subClassOf :Role];
                  rdfs:range [rdfs:subClassOf :Task].

И всякий раз, когдамежду двумя классами C и D есть оператор: «C: isResponsibleForSome D», это должно подразумевать, что:

C rdfs:subClassOf
                 [ a owl:Restriction ;
                   owl:onProperty :isResponsibleFor ;
                   owl:someValuesFrom D].

Однако здесь пустые узлы используются неправильно, поскольку они ссылаются на определенный подкласс и некто-нибудь.Можно ли правильно закодировать это значение в OWL?Если да, то как?

...