首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPARQL -使用过滤条件提取图的子集

SPARQL -使用过滤条件提取图的子集
EN

Stack Overflow用户
提问于 2020-05-08 23:36:31
回答 1查看 142关注 0票数 1

我正在尝试提取具有多层次结构的图的子集。

示例结构:

代码语言:javascript
复制
                                         root
                                   /                     \ 
                               SubWant                   subNotWant
                             /         \                           \
                     childWant        childWant                   gCWant
                        /                 \
                       gCWant       gCNotWant
                      /
                   gGCWant

subWant子树是我想要得到的(假设所有{'/','\'}或broader/narrower关系)

我当前的查询是:

代码语言:javascript
复制
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>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 00:22:27

试着改变

代码语言:javascript
复制
?parent skos:broader+ <http://example.com#subWant>

转到

代码语言:javascript
复制
?parent skos:broader* <http://example.com#subWant>

"*“和"+”之间的区别在于,"*“也匹配?parent<http://example.com#subWant>的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61682703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档