#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, который по-прежнему имеет имя по умолчанию).