Чтобы проверить мой график RDF по моим формам проверки SHACL V, я хочу вывести некоторые тройки, чтобы мои формы были простыми. В частности, одно из правил, которое мне нужно реализовать, (в псевдокоде):
(?s, rdf:type, :X) <-- (?s, rdfs:subClassOf, :Y)
Я пробовал несколько реализаций, заканчивая этим тройным правилом (и его вариантами) :
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix : <http://example.com/ex#> .
:s
a sh:NodeShape ;
sh:targetClass rdfs:Resource ;
sh:rule [
a sh:TripleRule ;
sh:subject sh:this ;
sh:predicate rdf:type ;
sh:object :X ;
sh:condition [ sh:property [ sh:path rdfs:subClassOf ;
sh:hasValue :Y ] ]
] .
Однако правило не выводит :A rdf:type :X .
для графа данных
:A rdfs:subClassOf :Y .
(Выполнение для https://github.com/TopQuadrant/shacl). Эту проблему можно решить с помощью правила SPARQL, поэтому мой вопрос заключается в том, есть ли возможность сделать это также с помощью правила Triple. Спасибо за подсказки!