Я пытаюсь извлечь подмножество графа с мультииерархией.
Пример структуры:
root
/ \
SubWant subNotWant
/ \ \
childWant childWant gCWant
/ \
gCWant gCNotWant
/
gGCWant
поддерево subWant
- это то, что я хотел бы получить ( Предположим, что все отношения {'/', '\'} или broader/narrower
)
Мой текущий запрос:
CONSTRUCT
{
?children a skos:Concept ;
skos:broader ?parent ;
skos:prefLabel ?childPrefLiteral .
}
WHERE {
?children skos:broader+ <http://example.com#subWant> ;
skos:prefLabel ?childPrefLiteral .
filter(STRBEFORE(?childPrefLiteral, " ") NOT IN (<criteria to prune by>) )
?children skos:broader ?parent ;
# filter parent to only have transitive broader relation to desired concept
?parent skos:broader+ <http://example.com#subWant>
}
Этот запрос почти работает, за исключением того, что он не будет включать прямых дочерних элементов узел subWant
. Любые рекомендации, как элегантно выполнить sh это? Обратите внимание на то, что последняя тройка ?parent skos:broader <http://example.com#subWant>
необходима, поскольку узлы имеют несколько родителей (мультииерархия) - см. Узел gCWant
в образце графа.