2013-05-07 41 views
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”。

这样的查询将如何?

+0

如果[答案](http://stackoverflow.com/ a/16418913/1281433)为你工作,你应该考虑[接受它](http://meta.stackexchange.com/q/5234/225437)。 – 2013-10-22 17:21:50

回答

2

你想要么FILTER NOT EXISTS or MINUS

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整理)