RDFS-плюс обоснование для rdfs: домен и диапазон в GraphDB

#owl #rdfs #graphdb #reasoning #rdfs

#owl #rdfs #graphdb #обоснование #rdfs

Вопрос:

Рассмотрим два репозитория GraphDB с разными наборами правил обоснования:

  • Репозиторий A с набором правил «RDFS (оптимизированный)»
  • Репозиторий B с набором правил «RDFS-Plus (оптимизированный)»

Я выполнил следующую вставку SPARQL в обоих этих репозиториях:

 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ex: <http://www.example.com#>
INSERT DATA { 
    ex:hasPet a owl:ObjectProperty;
        rdfs:domain ex:Human;
        rdfs:range ex:Pet.
    ex:someHuman ex:hasPet ex:somePet. 
}
 

В обоих репозиториях я ожидаю, что через rdfs:domain и rdfs:range должны быть выведены следующие утверждения класса:

  • ex:someHuman rdf:type ex:Human
  • ex:somePet rdf:type ex:Pet

rdfs:domain и rdfs:range являются свойствами RDFS, поэтому они должны быть выведены для репозитория A. И поскольку RDFS-Plus является расширением RDFS, я думал, что они также будут выведены в репозитории B.

Однако эти трипели выводятся только с помощью RDFS с набором правил (репозиторий A). Если я выполню следующий запрос SPARQL, я получу результат только в репозитории A и никакого результата в репозитории B.

 PREFIX ex: <http://www.example.com#>
SELECT ?pet WHERE { 
    ?pet a ex:Pet.
}
 

Может кто-нибудь сказать мне, почему два приведенных выше трипеля выводятся только с помощью набора правил RDFS, но не с помощью набора правил RDFS-Plus?

Комментарии:

1. Какая версия? 9.4?

2. RDFS-Plus в наборе правил нет необходимых правил для получения троек rdfs:domain . Вы можете посмотреть, какие правила используются в каждом из наборов правил, просмотрев файлы PIE по адресу <gdb-dist>/configs/rules

3. @StanislavKralin Да, версия 9.4.1.

4. @DamyanOgnyanov Хорошо, но это намеренно? Я ожидал, что RDFS-Plus будет содержать все правила RDFS и многое другое.

5. @DamyanOgnyanov это явно нелогично, учитывая, что RDFS Plus в Semantic Web, как известно, содержит все RDFS некоторые конструкции на основе OWL. И, более того, даже в документах GraphDB указано «Расширенная версия RDFS с поддержкой также симметричных, обратных и транзитивных свойств через словарь OWL: » — так почему это rdfs:domain правило было опущено? Для меня это либо «ошибка», либо вам следует переименовать набор правил.

Ответ №1:

Публикую мое решение в качестве ответа, чтобы кому-то, у кого возникнет эта проблема в будущем, не пришлось копаться в комментариях выше.

Как указал @DamyanOgnyanov в комментариях к моему вопросу, необходимые правила для вывода типов на основе rdfs:domain и rdfs:range не включены в RDFS-Plus и RDFS-Plus (оптимизированный) набор правил GraphDB. Однако они включены в набор правил RDFS, что противоречит интуиции, поскольку RDFS должна быть основой для RDFS-Plus.

Чтобы сделать набор правил RDFS-Plus надлежащим расширением набора правил RDFS и получить поддержку rdfs:domain и rdfs:range , я добавил следующие правила RDFS в RDFS-Plus. Файл набора правил можно найти по адресу <your-graphdb-folder>/configs/rules

     Id: rdfs2

      a b c [Constraint b != <rdf:type>]
      b <rdfs:domain> d
    ------------------------------------
      a <rdf:type> d


    Id: rdfs3

      a b c
      b <rdfs:range> d
    ------------------------------------
      c <rdf:type> d
 

Кроме того, я также добавил правила с идентификаторами rdfs6 , rdfs7 , rdfs12 , rdfs13 из RDFS в RDFS-Plus.

Я не добавлял правила rdfs5 , rdfs9 и rdfs11 . Правила rdfs5 и rdfs11 регулируются правилами транзитивных свойств rdfs9 и регулируются аксиомой и правилами about psys:transitiveOver .

Редактировать: GraphDB не воспринял эти изменения, когда я создал новый репозиторий с отредактированным набором правил RDFS-Plus. Мне пришлось выбрать «Загрузить пользовательский набор правил» и загрузить отредактированный мной набор правил (т. Е. Набор правил RDFS-Plus, который по-прежнему имеет имя по умолчанию).