我正在尝试提取具有多层次结构的图的子集。
示例结构:
root
/ \
SubWant subNotWant
/ \ \
childWant childWant gCWant
/ \
gCWant gCNotWant
/
gGCWantsubWant子树是我想要得到的(假设所有{'/','\'}或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节点的直接子节点之外,这个查询几乎可以正常工作。对于如何优雅地实现这一点,有什么建议吗?注意,最后一个三重节点的原因是必要的,因为节点有多个父节点(多层次)-请参见示例图中的gCWant ?parent skos:broader <http://example.com#subWant>。
发布于 2020-05-09 00:22:27
试着改变
?parent skos:broader+ <http://example.com#subWant>转到
?parent skos:broader* <http://example.com#subWant>"*“和"+”之间的区别在于,"*“也匹配?parent为<http://example.com#subWant>的结果。
https://stackoverflow.com/questions/61682703
复制相似问题