SPARQL - 从大量选项中采样一种语言标记

时间:2015-11-30 22:25:15

标签: sparql

从每种语言中选择一种语言标记的最简单方法是什么。

例如,我的三元组看起来像这样:

102777157-n, wordnet-ontology:translation : "sac"@fra
102777157-n, wordnet-ontology:translation : "bossa"@cat
102777157-n, wordnet-ontology:translation : "taske"@dan
102777157-n, wordnet-ontology:translation : "käsilaukku"@fin
102777157-n, wordnet-ontology:translation : "kukkaro"@fin
102777157-n, wordnet-ontology:translation : "laukku"@fin
102777157-n, wordnet-ontology:translation : "lompakko"@fin
102777157-n, wordnet-ontology:translation : "porte-monnaie"@fra
102777157-n, wordnet-ontology:translation : "sac à main"@fra
102777157-n, wordnet-ontology:translation : "beg tangan"@ind
102777157-n, wordnet-ontology:translation : "dompet"@ind
102777157-n, wordnet-ontology:translation : "kantung"@ind
102777157-n, wordnet-ontology:translation : "karung"@ind
102777157-n, wordnet-ontology:translation : "tas tangan"@ind
102777157-n, wordnet-ontology:translation : "borsa"@ita
102777157-n, wordnet-ontology:translation : "borsetta"@ita
102777157-n, wordnet-ontology:translation : "borsetto"@ita
102777157-n, wordnet-ontology:translation : "ハンドバック"@jpn
102777157-n, wordnet-ontology:translation : "ハンドバッグ"@jpn
102777157-n, wordnet-ontology:translation : "bolsa"@por
102777157-n, wordnet-ontology:translation : "carteira"@por
102777157-n, wordnet-ontology:translation : "bolso"@spa
102777157-n, wordnet-ontology:translation : "กระเป๋า"@tha
102777157-n, wordnet-ontology:translation : "กระเป๋าถือ"@tha
102777157-n, wordnet-ontology:translation : "กระเป๋าถือสตรี"@tha
102777157-n, wordnet-ontology:translation : "dompet"@zsm
102777157-n, wordnet-ontology:translation : "kantung"@zsm

在我的结果集中,我想要使用每种语言的一种语言标记。

1 个答案:

答案 0 :(得分:3)

如果我理解你想要的问题:

102777157-n, wordnet-ontology:translation : "sac"@fra
# or "porte-monnaie"@fra, "sac à main"@fra

102777157-n, wordnet-ontology:translation : "bossa"@cat

102777157-n, wordnet-ontology:translation : "taske"@dan

102777157-n, wordnet-ontology:translation : "käsilaukku"@fin
# or "kukkaro"@fin, "laukku"@fin", lompakko"@fin

...

从基础开始:

prefix wordnet-ontology: <...>

select ?word ?translation
{
    ?word wordnet-ontology:translation ?translation
}

我们想要每个单词一行,语言对,即

prefix wordnet-ontology: <...>

select ?word ?translation
{
    ?word wordnet-ontology:translation ?translation
}
group by ?word ?language

但这不起作用,因为:

  1. 我们没有语言
  2. 我们正在选择未归类的变量?translation
  3. 要解决1,我们使用lang()函数:BIND(lang(?translation) as ?language)

    至于2,因为我们不关心我们得到哪种翻译,我们可以使用样本选择其中任何一种:(SAMPLE(?translation) as ?onetranslation)

    prefix wordnet-ontology: <...>
    
    select ?word (SAMPLE(?translation) as ?onetranslation)
    {
        ?word wordnet-ontology:translation ?translation
        BIND(lang(?translation) as ?language)
    }
    group by ?word ?language
    

    由于我们甚至不想要这种语言,我们可以进一步简化:

    prefix wordnet-ontology: <...>
    
    select ?word (SAMPLE(?translation) as ?onetranslation)
    {
        ?word wordnet-ontology:translation ?translation
    }
    group by ?word lang(?translation)