Sparql - 遍历顶部(最广泛)

时间:2017-05-30 12:59:44

标签: sparql rdf semantic-web skos

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

我正在尝试使用数据集为应用程序实现预先输入功能。

我试图找出如何条件遍历 Top Concept

enter image description here

在这张照片中,如果我搜索梦工厂,那将是3层(商业机构 - >私人公司 - >梦工厂)。

如果我做其他事情,显然它会在图的不同层。

我试图将值“组织”或“人物”作为顶级。

这个非常简单的查询有效。

skos:broader

enter image description here

然而,显然这是不可持续的,因为开发人员需要知道层次结构中有多少级别才能发出正确数量的{{1}}。

无论如何,我可以有条件地发现层次结构的最高级别吗?

由于这是一个内部本体论,我无法共享任何数据,所以我知道它很难处理,任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

使用kleene星运算符*FILTER组合,没有更广泛的概念应仅返回顶级概念:

SELECT DISTINCT  ?subjectPrefLabel ?a ?b ?o WHERE { 
    ?subject skosxl:prefLabel/skosxl:literalForm ?subjectPrefLabel .
    ?subject skos:broader* ?concept. 
    ?concept skosxl:prefLabel/skosxl:literalForm ?a
    FILTER NOT EXISTS { ?concept skos:broader ?supConcept } 
    FILTER regex(?subjectPrefLabel, "Dreamworks", 'i')
}
ORDER BY ?subjectPrefLabel