从sparql中的绑定变量中提取具有不同语言的标签

从sparql中的绑定变量中提取具有不同语言的标签,sparql,rdf,Sparql,Rdf,正如标题所示,我更喜欢英文和德文标签。我试图提取每个标签的语言,并绑定到一个(新创建的)变量 SELECT ?copyC ?enLabel ?defaultLabel WHERE { ?targetC skos:prefLabel ?prefUri . ?prefUri skosxl:literalForm ?b # handle languages - english and german bind(if(langMatches(lang(?b),"en"),?b,

正如标题所示,我更喜欢英文和德文标签。我试图提取每个标签的语言,并绑定到一个(新创建的)变量

SELECT ?copyC ?enLabel ?defaultLabel
WHERE {
?targetC skos:prefLabel ?prefUri .
?prefUri skosxl:literalForm ?b
  # handle languages - english and german
  bind(if(langMatches(lang(?b),"en"),?b,?_) as ?enLabel)
  bind(if(langMatches(lang(?b),"de"),?b, ?_) as ?defaultLabel)
  ####
   .
  # create some uris
  BIND(IRI(CONCAT("http://example.com/", REPLACE(STR(?enLabel), "\\W", "", "i") )) AS ?copyC ) .
  BIND(IRI(CONCAT("http://example.com/", REPLACE(STR(?enLabel), "\\W", "", "i"),"_prefLabel_en" )) AS ?enLabelc ) .
    BIND(IRI(CONCAT("http://example.com/", REPLACE(STR(?defaultLabel), "\\W", "", "i"),"_prefLabel_de" )) AS ?defaultLabelc ) .  
  ####
}
玩具示例模型:

@prefix skos: <http://www.w3.org/2004/02/skos/core#> . 
@prefix skosxl: <http://www.w3.org/2008/05/skos-xl#> .  <http://example_copy.com/thing1> a skos:Concept ;     
    skosxl:prefLabel <http://example_copy.com/some_german_label>, <http://example>  <http://example_copy.com/some_german_label> a skosxl:Label ;     
    skosxl:literalForm "some german label"@de .  <http://example_copy.com/some_english_label> a skosxl:Label ;     
    skosxl:literalForm "some english label"@en .
    
@前缀skos:。
@前缀skosxl:。a skos:概念;
skosxl:prefLabel,一个skosxl:Label;
skosxl:literalForm“一些德国标签”@de。skosxl:标签;
skosxl:literalForm“一些英文标签”@en。
结果:

?c                                ?enLabel                                         ?defaultLabel
1 <http://example.com/thing1> <http:/example.com/some_english_label>                                                                        
2                                                              <http:/example.com/some_german_label>
?c?enLabel?默认标签
1.
2.
以上查询如下:


englishLabelc与绑定的copyC变量正确关联,但defaultLabelc未正确关联。我的愿望是,英文和德文标签将正确地关联uri绑定到?copyC。我假设在如何“绑定”copyC变量时存在范围问题,但我不确定如何进行故障排除。如果我简单地使用?b变量来创建?copyC,将创建两个概念-一个用于英语标签,另一个用于德语标签,这正是我想要的。有人能帮我解决这个问题吗?

我有点困惑,但我认为当前的查询不会导致当前显示的结果。我的意思是,结果显示URI而不是标签。我遗漏了什么吗?总的来说,整个玩具的例子是错误的。前缀等与查询不匹配。我修复了它,查询
prefix skosxl:prefix skos:SELECT?c enLabel?defaultLabel其中{c skos:prefLabel?prefUri?prefUri skosxl:literalForm?b#handle languages-english和derman bind(if(langMatches(lang(?b),“en”),?b,?u)as?enLabel)bind(if(langMatches(langMatches(lang(?b),“de”),?b),?u)as?defaultLabel)})
按预期工作数据:
@前缀skos:@前缀skosxl:。a skos:概念;skos:prefLabel,一个skosxl:Label;skosxl:literalForm“一些德国标签”@de。skosxl:标签;skosxl:literalForm“some english label”@en.
Hi,感谢并为这个不可靠的玩具示例感到抱歉。我在上面做了编辑。我还意识到,当我尝试将这些标签附加到我新创建的变量?copyC(如上面的编辑所示)时,问题就特别出现了。如果您能看一看并让我知道您的想法,我们将不胜感激。您使用
?enLabel
的绑定创建
?copyC
-但对于带有德国标签的绑定集,这显然不存在。我的意思是,SPARQL评估三重模式并找到两个与图形模式匹配的绑定,对吗?因此,对于一个绑定,没有这样的英文标签,因此,
?enLabel
没有绑定,因此不会生成IRIs。你明白我的意思吗?我有点困惑,但我认为当前的查询不会导致当前显示的结果。我的意思是,结果显示URI而不是标签。我遗漏了什么吗?总的来说,整个玩具的例子是错误的。前缀等与查询不匹配。我修复了它,查询
prefix skosxl:prefix skos:SELECT?c enLabel?defaultLabel其中{c skos:prefLabel?prefUri?prefUri skosxl:literalForm?b#handle languages-english和derman bind(if(langMatches(lang(?b),“en”),?b,?u)as?enLabel)bind(if(langMatches(langMatches(lang(?b),“de”),?b),?u)as?defaultLabel)})
按预期工作数据:
@前缀skos:@前缀skosxl:。a skos:概念;skos:prefLabel,一个skosxl:Label;skosxl:literalForm“一些德国标签”@de。skosxl:标签;skosxl:literalForm“some english label”@en.
Hi,感谢并为这个不可靠的玩具示例感到抱歉。我在上面做了编辑。我还意识到,当我尝试将这些标签附加到我新创建的变量?copyC(如上面的编辑所示)时,问题就特别出现了。如果您能看一看并让我知道您的想法,我们将不胜感激。您使用
?enLabel
的绑定创建
?copyC
-但对于带有德国标签的绑定集,这显然不存在。我的意思是,SPARQL评估三重模式并找到两个与图形模式匹配的绑定,对吗?因此,对于一个绑定,没有这样的英文标签,因此,
?enLabel
没有绑定,因此不会生成IRIs。你明白我的意思吗?