标签: wikidata-query-service

如何在Python中集成Wikidata查询

我目前正在使用维基数据查询服务来运行我的维基数据查询。

例如,我的维基数据查询之一如下所示。

SELECT ?sLabel {
    SERVICE wikibase:mwapi {
        bd:serviceParam wikibase:api "EntitySearch".
        bd:serviceParam wikibase:endpoint "www.wikidata.org".
        bd:serviceParam mwapi:search "natural language processing".
        bd:serviceParam mwapi:language "en".
        ?item wikibase:apiOutputItem mwapi:item.
        ?num wikibase:apiOrdinal true.
    }
    ?s wdt:P279|wdt:P31 ?item .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
}
ORDER BY ?num
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

我想知道我们是否可以在 python 程序中使用这些查询?如果是这样,我们如何在 python 中集成查询?

如果需要,我很乐意提供更多详细信息。

python sparql wikidata-query-service

8
推荐指数
2
解决办法
8222
查看次数

包含 Wikidata 上的子查询的 SPARQL 查询给出了意外结果

我知道以下针对Wikidata SPARQL Endpoint查询的 SPARQL 是毫无意义的。我的应用程序中会自动生成类似的查询。请忽略概念的合理性,让我们深入研究这个奇怪的(至少对我来说)发生的事情。

\n\n
SELECT ?year1 ?year_labelTemp\n    WHERE\n      { \n        ?year1  <http://www.w3.org/2000/01/rdf-schema#label>  ?year_labelTemp .\n        { SELECT distinct ?year1\n          WHERE\n            { ?film  <http://www.wikidata.org/prop/direct/P577>  ?date ;\n                     <http://www.wikidata.org/prop/direct/P31>  <http://www.wikidata.org/entity/Q11424>\n              BIND(year(?date) AS ?year1)\n            }\n        }   \n      }\n    limit 10\n
Run Code Online (Sandbox Code Playgroud)\n\n

根据 SPARQL 中的查询评估,首先评估子查询,然后将其结果投影到包含查询。因此,将首先评估该子查询。

\n\n
SELECT distinct ?year1\n      WHERE\n        { ?film  <http://www.wikidata.org/prop/direct/P577>  ?date ;\n                 <http://www.wikidata.org/prop/direct/P31>  <http://www.wikidata.org/entity/Q11424>\n          BIND(year(?date) AS ?year1)\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

子查询准确地给出了预期的结果(130 个不同的年份)。然后,该子查询(变量)的结果?year1将被投影出来并与外部选择中的三元组模式连接。

\n\n
?year1  <http://www.w3.org/2000/01/rdf-schema#label>  ?year_labelTemp .\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,由于外部选择不应该有任何数据(没有标签?year1),因此连接不会给出任何结果。

\n\n

令人惊讶的是(至少对我来说),执行首先声明的整个查询 () 给出了结果,而且结果很奇怪。

\n\n
 wd:Q43576  Mi\xc3\xab\n …
Run Code Online (Sandbox Code Playgroud)

sparql wikidata blazegraph wikidata-query-service

6
推荐指数
1
解决办法
2038
查看次数