Члены дочернего класса не классифицируются как члены суперкласса в тесте LUBM
Я пытаюсь запустить тест LUBM, но у меня возникли проблемы с классификацией после рассуждений.
Файлы, которые я использую:
Проблема в том, что члены 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, поэтому не могу комментировать этот конкретный инструмент.