3

我在多语言词库中的查询如下所示:

select (COUNT(?label) as ?pCount)
where {?term <http://www.w3.org/2004/02/skos/core#prefLabel> ?label 
FILTER(langMatches(lang(?label), "DE"))}

我通过他们的德语翻译获得了大量的概念,这是我对这个查询的期望。
我现在正在寻找一个查询,它提供了没有任何德语翻译的所有概念,即所有没有带有“@de”的“prefLabel”的查询。

这样的查询会是什么样子?

4

1 回答 1

2

您想要FILTER NOT EXISTSMINUS

select ?term
where {
    ?term a <http://www.w3.org/2004/02/skos/core#Concept>
    MINUS {
        ?term <http://www.w3.org/2004/02/skos/core#prefLabel> ?label
        FILTER(langMatches(lang(?label), "DE"))
    }
}

任何一个都可以在这里工作(我用过MINUS,因为它更短)。

随着MINUS右侧(或者更确切地说,底部)块的匹配行从另一侧移除。在这种情况下,带有德语标签的术语将从所有概念列表中删除 ( ?term a <http://www.w3.org/2004/02/skos/core#Concept>)。

(如果您的概念没有明确键入,您可以?term <http://www.w3.org/2004/02/skos/core#prefLabel> ?someLabel改用,但您可能需要添加一个DISTINCT来整理)

于 2013-05-07T12:20:18.647 回答