问题标签 [wikidata-query-service]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sh - 验证维基媒体语言的语言代码
我有一个使用 Wikidata 查询服务 (WDQS) 来获取所需数据的 shell 脚本。运行 WDQS 的 SPARQL 查询采用输入参数语言代码。
如果输入语言代码是有效的维基媒体语言代码作为以下链接中的第一列数据,有没有办法可以检查 shell 脚本 https://www.wikidata.org/wiki/Help:Wikimedia_language_codes/lists/all
sparql - 在 SPARQL 中构造一个具有未知长度的 propertyPath 的子图
我正在尝试从大型数据集(即 Wikidata,通过他们的Query Service)中提取子图。我找到了我感兴趣的节点对(使用某个属性),现在我想要CONSTRUCT
一个新图,其中包含这些对,包括属性和节点链,将它们连接在一起(子类链)。
所以我有类似的东西:
虽然,我的实际查询有点复杂,因为我还从同一个属性中提取不同的信息(基于它的字符串值),但它不应该影响问题。
现在我想将连接这些对的propertyPaths
of复制到新图中。rdfs:subClassOf
所以我想写一些类似的东西——
-- 进入CONSTRUCT{}
部分,但当然,它是不允许的语法。
label - 在 Wikidata SPARQL 查询中连接时检索标签
使用 Wikidata 查询服务在 SPARQL 中进行连接时遇到问题。https://query.wikidata.org/
我想要做的是检索所有具有 GTAA ID (?q wdt:P1741 ?GTAA_ID.) 的人,特别是在 Wikidata 中列出职业的人。(?q wdt:P106 ?occupation。)此外,我希望将这些职业连接成一行,用“,”分隔。
我现在得到的是第一列中的人的名字,第二列是他们的职业。但是,这些职业被列为相应 Wikidata 页面的 URL。我想要的是将这些 URL 显示为标签(对应于 Wikidata 页面的文本)
这是我到目前为止的代码:
因此,而不是返回例如:
路德维希·范·贝多芬 | http://www.wikidata.org/entity/Q36834
我希望它返回:
路德维希·范·贝多芬 | 作曲家
label - 使用 SPARQL 查询检索标签名称
我遇到了 Wikidata 查询服务的问题。https://query.wikidata.org/ 我想做的是检索所有拥有 GTAA ID 的人的列表。
对于这些人,我想检索以下可选信息:
- 已获得奖励
- 他们在什么时间获得了这个奖项
- 他们因什么工作获得了这个奖项
到目前为止,我的查询大部分都有效。但是,例如,在“awards_received”列中,它显示以下文本:
wds:Q76343-ffa729dc-4d10-eb15-3a41-5fa6bf7ed80a
单击此按钮时,它会将我带到有关获得该奖项的人的 Wikidata 页面,而不是该奖项本身的名称。我想做的是检索收到的奖项的标题,而不是标题接收者的链接。
我的代码如下:
sparql - 在 SPARQL 中构建所有与某个标识符有关的 Wikidata 三元组
我正在尝试通过在 Wikidata SPARQL 查询服务中使用构造查询来返回三元组列表。我想要拥有 GTAA_ID 标识符的所有三人组。除此之外,在所有拥有 GTAA_ID 的人中,我希望所有三元组都包含以 GTAA_ID 作为主语的人 + 谓词和宾语的所有组合。
举个例子:Tom Hanks 有一个 GTAA_ID(标识符)。Tom Hanks 在 Wikidata 中还有很多其他的语句和标识符。我想检索与汤姆汉克斯有关的所有内容(因为他有一个 GTAA_ID)。
例如:
等等..
Wikidata 给出的示例查询(对于与哮喘有关的所有三元组)是:
这将返回与项目“哮喘”有关的三元组列表。但是,我想要做的是返回一个三元组列表,其中项目是具有 GTAA_ID 的人。
这是返回具有相应 GTAA_ID 的所有主题的代码:
提前谢谢了!
sparql - 使用 sparql 检索公司的股票代码
Wikidata 网站提供了该ticker symbol
属性的示例P249
:
Boeing <ticker symbol> BA
我认为这应该转化为以下 sparql 查询:
但是,在Query Service中运行它时,不会产生任何结果。
group-by - 可选的不适用于本地 YASGUI 编辑器上的 SPARQL 查询
我再次遇到了 SPARQL 的问题。首先,一些背景信息:我一直在使用Wikidata 查询服务从 Wikidata 中检索数据。由于 Wikidata SPARQL 端点是有限的并且大型任务会发生超时,我想我会:
- 将查询拆分为几个较小的查询
- 将它们下载为 .csv
- 将它们转换为 .nt N-Triples
- 将它们导入 Cliopatra(使用 SWI-Prolog)
- 使用内置的 YASGUI SPARQL 编辑器在本地查询数据
截至目前,该查询在 Wikidata 查询服务中有效。但是,在本地我没有使 OPTIONAL 功能起作用。
我的 Wikidata 代码如下(这是我要检索的所有数据的一小部分):
这正确检索:
这里的重点是它允许我选择所有具有 Wikidata ID 和 GTAA ID 以及相应的假名、date_of_death 和职业(如果有)的结果。此外,如果一个人有多个职业,它会用“,”分隔它们并将它们放在同一行中。
但是,如上所述,我下载了文件以便能够在本地查询它们。为此,我使用以下格式将 .csv 文件转换为 .nt:
其中对象是一个字符串。请注意,在以下示例中,?p 以我转换为 .nt 的方式正确使用。(因此使用了 PREFIX ps)将它们加载到 Cliopatria 并在 YASGUI 编辑器中使用以下代码:
但是,在此查询中,?pseudonym ?occupation 和 ?date_of_death 是可选的,但这些职业没有连接成一行。 查询 1
如果我将 GROUP BY 函数替换为
它根本不显示 ?pseudonym 和 ?date_of_death,但会连接 ?occupation。 查询 2
如果我将 GROUP BY 函数替换为
它仅连接具有 ?date_of_death 的 ?q 的 ?occupation。没有 ?date_of_death 的那些不会连接到 1 行。此外,它根本不显示任何假名。 查询 3
我怀疑这与 GROUP BY 函数与 group_concat 函数的结合有关。但是,我不明白为什么它可以在 Wikidata 查询服务中工作,但不能在我的本地主机上工作。本地使用的.nt文件可以在这里访问
提前谢谢了!
sparql - SPARQL 构造;并非所有结果都被检索到
我打算在Wikidata SPARQL 查询服务上构建一个包含电影及其标签的 RDF 图。基本上,这是我认为就足够的查询:
好像不是所有的电影都出现在结果中(127636 个结果),我注意到没有出现的电影基本上是没有标签的。
但是,SELECT
对相同信息的查询会返回更多结果 (215734):
似乎并非所有满足该WHERE
子句的变量绑定(该WHERE
子句在两个查询之间共享)都CONSTRUCT
在第一个查询中使用,但它们都在SELECT
.
这是为什么?我在某处遗漏了什么吗?
sparql - 使用 UNION 和 FILTER 的慢速 BlazeGraph SPARQL 查询
我正在针对Wikidata 查询服务对Blazegraph RDF Graph 数据库进行 SPARQL 查询。这些查询涉及几个 UNION,通常是一个 FILTER
或喜欢
这些查询非常慢(从几秒到十多秒不等),我想优化这些查询。
使用 Blazegraph 仪表板,我做了一个查询 EXPLAIN,但我不了解如何优化以及优化什么。