微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Wikidata SPARQL 按语言过滤字段值

如何解决Wikidata SPARQL 按语言过滤字段值

所以我有这个获取美元信息的 SparQL 查询

SELECT 
?currency ?page_title ?currencyLabel ?currencyIso4217 
(GROUP_CONCAT(distinct ?shortName; separator = ',') as ?shortNames)  
    {  
        ?currency wdt:P498 ?currencyIso4217 .  
        OPTIONAL {?currency wdt:P1813 ?shortName} .    
        ?article schema:about ?currency ; schema:isPartOf <https://en.wikipedia.org/>; schema:name ?page_title    
            SERVICE wikibase:label { bd:serviceParam wikibase:language 'nl' }  
            {
                BIND(wd:Q4917 AS ?currency).  
                OPTIONAL { 
                     SERVICE wikibase:label 
                             { 
                               ?shortName rdfs:label ?shortNameLabel . 
                               bd:serviceParam wikibase:language 'nl'  
                             }  
                         } 
             } 
      }  
group by ?currency ?currencyLabel ?currencyIso4217 ?page_title

Try it here

输出

enter image description here

现在,当我查看美元的 WikiData 页面,然后到“简称”部分时,我看到了:

Wikidata image

它们在括号之间都有一个语言属性。现在我的问题是:我想要在查询中只包含短名称的“英文”版本并过滤掉所有其他语言。我该怎么做?

解决方法

您的查询奇怪地令人费解,并且我相信由于在这种情况下 GROUP_CONCAT 的长期错误,您已经被引导到了这条道路上(至少我似乎记得类似的事情 - 现在无法完全查明).

无论如何,至少在理论上,我认为这里有一些东西对您有用。实际上,没有足够的“短名称”来说明问题。

SELECT DISTINCT ?currency ?page_title ?currencyLabel ?currencyIso4217 ?shortName WHERE 
  {  
    ?currency wdt:P498 ?currencyIso4217 .  
    ?article schema:about ?currency ; schema:isPartOf <https://en.wikipedia.org/>; schema:name ?page_title .          
    
    OPTIONAL {
      ?currency wdt:P1813 ?shortName .
      FILTER(LANG(?shortName) = "en") .
    }    
    SERVICE wikibase:label { bd:serviceParam wikibase:language 'en' }  
  }

Link to query

你会注意到我剪掉了很多东西。但我认为您一直在抓住的一个想法就是 FILTER 的线条。也许 LANG(?string) 能让你掌握语言。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?