Sparql-向上移动(最宽)

Sparql-向上移动(最宽),sparql,rdf,semantic-web,skos,Sparql,Rdf,Semantic Web,Skos,我有一个内部三元组数据集 我正在尝试为使用数据集的应用程序实现一个typeahead特性 我正在试图找出如何有条件地遍历到顶级概念 在这张图片中,如果我搜索梦工厂,它将是3层(商业组织->私人公司->梦工厂) 如果我做其他的事情,很明显,它将在图形的不同层上 我试图将“组织”或“人”作为最高级别 这是一个非常简单的查询 SELECT DISTINCT ?subjectPrefLabel ?a ?b ?o WHERE { ?su

我有一个内部三元组数据集

我正在尝试为使用数据集的应用程序实现一个typeahead特性

我正在试图找出如何有条件地遍历到顶级概念

在这张图片中,如果我搜索梦工厂,它将是3层(商业组织->私人公司->梦工厂)

如果我做其他的事情,很明显,它将在图形的不同层上

我试图将“组织”或“人”作为最高级别

这是一个非常简单的查询

        SELECT DISTINCT  ?subjectPrefLabel ?a ?b ?o
    WHERE
        { 
            ?subject skosxl:prefLabel/skosxl:literalForm ?subjectPrefLabel .
    ?subject skos:broader/skos:broader/skos:broader/skosxl:prefLabel/skosxl:literalForm ?a


    FILTER regex(?subjectPrefLabel, "Dreamworks", 'i')
        }
    ORDER BY ?subjectPrefLabel

然而,这显然是不可持续的,因为开发人员需要知道层次结构下有多少层,才能发布正确数量的
sko:brother

我是否可以有条件地发现层次结构的最高级别


由于这是一个内部本体,我不能共享任何数据,所以我知道这将很难处理,任何建议都是非常感谢的

使用kleene star运算符
*
过滤器组合时,如果没有更广泛的概念,则应仅返回顶级概念:

选择DISTINCT?subjectPrefLabel?a?b?o,其中{
?主题skosxl:prefLabel/skosxl:literalForm?主题prefLabel。
?主题skos:更广泛的*?概念。
?概念skosxl:prefLabel/skosxl:literalForm?a
筛选器不存在{?概念skos:更广泛的?概念SUP}
过滤正则表达式(?subjectPrefLabel,“梦工厂”,“i”)
}
订单依据?主题预标签