1
blank node skolemizationを反復処理なしでSPARQLに実装できますか? skolemization用SPARQL更新操作のみ、空白ノードオブジェクトなしのトリプルにおける被験者として表示され、空白のノードから開始することができます反復なしのSPARQLでの空白ノードのスカレン化
@prefix : <http://example.com/> .
[ a :A ;
:p1 [
a :B
]
] .
:のような、その反復は、空白ノードのチェーンをskolemizeするために必要とされるように思える
DELETE {
?b1 ?outP ?outO .
?inS ?inP ?b1 .
}
INSERT {
?iri ?outP ?outO .
?inS ?inP ?iri .
}
WHERE {
{
SELECT ?b1 (uuid() AS ?iri)
WHERE {
{
SELECT DISTINCT ?b1
WHERE {
?b1 ?p1 [] .
FILTER isBlank(?b1)
FILTER NOT EXISTS {
?b1 ?p2 ?b2 .
FILTER isBlank(?b2)
}
}
}
}
}
?b1 ?outP ?outO .
OPTIONAL {
?inS ?inP ?b1 .
}
}
空白ノードがデータに見つからなくなるまでこの操作を繰り返すことができます。
ASK {
?bnode ?p [] .
FILTER isBlank(?bnode)
}
は、それが反復してimplemを回避することができます単一のSPARQL Updateオペレーションでブランクノードのスカレ
(また、このアプローチは全く「オーファン」空白ノード(唯一のオブジェクトとして表示され、すなわち空白ノード)が存在しない前提。)