Хотя вывод не поддерживается повсеместно в конечных точках SPARQL, большинство выводов, поддерживаемых профилями RDFS, RSFS + и OWL 2 RL, поддерживаются самим SPARQL. Например, запрос для экземпляров :A
с помощью своей subClassOf следования может поддерживаться с SPARQL путями собственности:
SELECT ?inst
WHERE {
?cls rdfs:subClassOf* :A .
?inst a ?cls .
}
Первый тройной шаблон получает все подклассы :A
, в том числе :A
(используйте +
вместо *
если вы просто хотите подклассов :A
), а вторая тройка находит все экземпляры всех этих классов.
Чтобы узнать, как большая часть OWL 2 может быть реализована с помощью SPARQL, см. Reasoning in OWL 2 RL and RDF Graphs using Rules. За некоторыми исключениями все они могут быть реализованы в SPARQL (и на самом деле вам, вероятно, не понадобятся некоторые из них, такие как eq-ref
(что хорошо для вычислительного LOL, которого могут издеваться логики)).
Существует мало случаев использования, помимо тяжелых проблем классификации, которые не могут быть решены с помощью подмножества правил OWL 2 RL.
Итак, в конце концов, рекомендуется понять, какие вложения необходимы вам. Скорее всего, OWL полностью передумает, и вы можете жить с несколькими шаблонами SPARQL. И тогда вы можете поразить конечные точки SPARQL, не беспокоясь о том, поддерживаются ли конкретные профили вывода.
Существует ряд выводов, которые вы можете сделать только в SPARQL. Например, чтобы пройти иерархию классов, вы можете выполнить '? Subclass rdfs: subClassOf *?superclass', чтобы получить результат 'A subclassOf C', который вы упомянули. –
Ну, 1. Есть ли место, где вы ссылаетесь на меня, чтобы проверить полный список включенных SPARQL-выводов? –
2. Не мог ли этот вывод быть включен на уровне конечной точки SPARQL? т.е. записывать только типичные запросы SPARQL, в то время как конечная точка отвечает за вывод? –