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

SPARQL - 过滤评论标签和摘要为英文并保留整数和 uri 值

如何解决SPARQL - 过滤评论标签和摘要为英文并保留整数和 uri 值

我正在尝试从 DBPedia 获取有关某些资源的可用信息。 但是,我想过滤掉标签评论摘要,只用英文。

我的原始查询是:

SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value . }

为了过滤英文结果,我将其修改为:

SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value .  FILTER(LANG(?value) = "en") }

但是,这样做我会丢失很多条目和信息,例如人口、密度、位置、纬度、经度等等。

我想知道是否有办法获取所有可用条目,但将 abstractlabelcomment 过滤为仅使用英文。

我尝试将查询修改为以下内容

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value .   FILTER(LANG(?rdfs:label) = "en")}

不幸的是,我没有得到任何结果,因为查询错误的。 任何帮助将不胜感激。

解决方法

经过深入研究,我已经回答了我自己的问题。 您可以使用 FILTER 函数获取所有值,无论是否有任何可用的 @enlanguage 部分。为此,您可以使用以下部分:

FILTER(LANG(?value) = "" || LANGMATCHES(LANG(?value),"en")

然而,这会导致丢失所有可用的 uri 和其他 links。 如果您还想获得除英文过滤结果之外的所有链接,则还需要一个与 startsWith 函数类似的函数。它在 SPARQL 语言中的等效项称为 strstarts。我已将以下部分添加到查询的 FILTER 中,并获得了所有最初需要的结果。

strstarts(str(?value),'http'))

这就是结果查询。提示我已经删除了前缀,因为我在查询中不需要它们

 SELECT ?property ?value { <http://dbpedia.org/resource/England> ?property ?value .
      FILTER(LANG(?value) = "" || LANGMATCHES(LANG(?value),"en") || strstarts(str(?value),'http'))}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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”。这是什么意思?