我正在尝试提取具有多层次结构的图的子集。
示例结构:
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
节点。关于如何优雅地完成此任务的任何建议?请注意最后一个三元组的原因?parent skos:broader <http://example.com#subWant>
是必要的,因为节点有多个父节点(多层次结构) - 请参见gCWant
示例图中的节点。