SPARQL-使用过滤条件提取图的子集
我正在尝试提取具有多层次结构的图的子集 示例结构:SPARQL-使用过滤条件提取图的子集,sparql,rdf,skos,Sparql,Rdf,Skos,我正在尝试提取具有多层次结构的图的子集 示例结构: root / \ SubWant subNotWant / \
root
/ \
SubWant subNotWant
/ \ \
childWant childWant gCWant
/ \
gCWant gCNotWant
/
gGCWant
subWant
子树是我想要得到的(假设所有{'/'、'\'}或更宽/更窄的
关系)
我目前的查询是:
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>
}
构造
{
?skos儿童:概念;
skos:更广泛的?父母;
skos:prefLabel?childPrefLiteral。
}
在哪里{
?儿童SKO:范围更广+;
skos:prefLabel?childPrefLiteral。
筛选器(STRBEFORE(?childPrefLiteral,“”)不在()中)
?儿童SKO:更广泛的?父母;
#筛选父项,使其仅与所需概念具有可传递的更广泛关系
?母SKO:更广泛+
}
除了不包括subWant
节点的直接子节点外,此查询几乎可以正常工作。关于如何优雅地完成这一点,有什么建议吗?请注意最后三个?父SKO的原因:由于节点有多个父节点(多层次),因此需要更广泛的——请参见示例图中的gCWant
节点。尝试更改
?parent skos:broader+ <http://example.com#subWant>
?母SKO:更广泛+
进入
?母SKO:更广泛*
“*”和“+”之间的区别在于“*”也匹配?父级是
我非常接近!这工作,因为我想它-非常感谢!
?parent skos:broader* <http://example.com#subWant>