Члены дочернего класса не классифицируются как члены суперкласса в тесте LUBM

Я пытаюсь запустить тест LUBM, но у меня возникли проблемы с классификацией после рассуждений.

Файлы, которые я использую:

Основная онтология

Выход генератора LUBM 1.7

Проблема в том, что члены GraduateStudent а также UndergraduateStudent не классифицируются как члены суперкласса Student,

Я пробовал Pellet, Отшельник и Факты на Protege 5.0, и все они провалились. Следовательно, также не удалось выполнить эталонный запрос SPARQL № 10.

#-- Query10
#-- This query differs from Query 6, 7, 8 and 9 in that it only requires the
#-- (implicit) subClassOf relationship between GraduateStudent and Student, i.e., 
#-- subClassOf rela-tionship between UndergraduateStudent and Student does not add
#-- to the results.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ub: <http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#>

SELECT ?X WHERE {
  ?X rdf:type ub:Student . 
  ?X ub:takesCourse <http://www.Department0.University0.edu/GraduateCourse0>
}

Вы можете найти скриншот моей классификации Protegé здесь (извините, у меня недостаточно репутации, чтобы напрямую публиковать фотографии).

Скриншот

В Protege 4.3 классификация работает с Pellet и Hermit, но SPARQL-запрос все равно не выполняется.

Я уже изменил настройки рассуждения, чтобы показать все предполагаемые знания, поэтому это не потому, что они просто скрыты.

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

РЕДАКТИРОВАТЬ: мне удалось запустить тест. Я вручную скопировал XML-код ABox (тот, который я получил от генератора) внутри TBox. Таким образом, классификация работает на Protege 4 и через API. Также SPARQL-запросы работают с использованием оснастки SPARQL, как предлагается здесь. Классификация по-прежнему не работает над Protege 5. Мне любопытно узнать, что вызвало это.

1 ответ

Один только генератор выдает данные, достаточные для ответа на подмножество запросов (запросы 1-3 и 14). Чтобы система SPARQL отвечала на все запросы, ей необходимо применить логический вывод. Как это происходит, это конкретная деталь реализации. Также для многих систем логический вывод отключен по умолчанию и должен быть включен.

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

Возможно, что SPARQL-запросы в Protege не учитывают предполагаемые знания, но я никогда не использовал Protege, поэтому не могу комментировать этот конкретный инструмент.

Другие вопросы по тегам