标签: wikidata

如何根据外部标识符(例如 Spotify ID)搜索 wiki 数据?

如果我知道 Kanye West 的 Spotify ID 是 5K4W6rqBFWDnAN6FQUkS6x,那么将该标识符解析到他的 Wikidata 页面(即https://www.wikidata.org/wiki/Q15935 )的最简单方法是什么?

我是否需要使用 SPARQL 查询来执行此操作,或者有没有办法使用 MediaWiki JSON API 来执行此操作?

sparql wikipedia-api wikidata

3
推荐指数
1
解决办法
656
查看次数

从维基数据中的空白节点检索数据

我正在尝试检索有关某些人寿命的数据。这对于生活过一段时间的人来说是有问题的。例如毕达哥拉斯的数据集似乎有一个所谓的“空白节点” date of birth (P569)。但是这个空白节点引用了另一个节点earliest date (P1319),该节点具有我可以正常使用的数据。

但由于某种原因,我无法检索该节点。我的第一次尝试看起来像这样,但不知何故导致了一个完全空的结果集:

SELECT DISTINCT ?person ?name ?dateofbirth ?earliestdateofbirth WHERE {
  ?person wdt:P31 wd:Q5.         # This thing is Human
  ?person rdfs:label ?name.      # Name for better conformation
  ?person wdt:P569 ?dateofbirth. # Birthday may result in a blank node
  ?dateofbirth wdt:P1319 ?earliestdateofbirth # Problem: Plausbible Birth
}
Run Code Online (Sandbox Code Playgroud)

然后我发现了另一种语法,它建议将?person wdt:P569/wdt:P1319 ?earliestdateofbirth我上面所做的显式导航用作某种“快捷方式”语法,但这也以空结果集结束

SELECT DISTINCT ?person ?name ?dateofbirth ?earliestdateofbirth WHERE {
  ?person wdt:P31 wd:Q5.         # Is Human
  ?person …
Run Code Online (Sandbox Code Playgroud)

sparql wikidata

3
推荐指数
1
解决办法
550
查看次数

从 Wikidata 获取给定属性的别名值?

对于给定的属性,如'职业 (P106)',我想检索其所有别名,如:专业、工作、工作、职业、就业、工艺。所有这些都存在于属性维基数据页面的“也称为”下。我如何使用 SPARQL 检索此信息?我尝试使用以下查询。

  SELECT ?predicate ?object WHERE {
  wdt:P106 wdt:P1449 ?predicate .  //Nickname
  wdt:P106 wdt:P734 ?predicate .   //Family Name
  wdt:P106 wdt:P735 ?predicate .  //Given Name
  wdt:P106 skos:altLabel ?predicate . 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
Run Code Online (Sandbox Code Playgroud)

sparql wikidata

3
推荐指数
1
解决办法
1327
查看次数

如何使用 Python 解析 WIkidata JSON (.bz2) 文件?

我想使用维基数据查看实体和关系。我下载了 Wikidata JSON 转储(从此处下载了 .bz2 文件,大小约为 18 GB)。

但是,我无法打开该文件,它对于我的计算机来说太大了。

有没有办法在不提取完整 .bz2 文件的情况下查看该文件。特别是使用Python,我知道有一个PHP转储阅读器(此处),但我无法使用它。

python json wikidata bz2

3
推荐指数
1
解决办法
7296
查看次数

获取所有超过 10 种语言的维基数据项目?

我正在尝试使用 SPARQL 从 Wikidata 中获取世界上最著名的电影。

我有以下查询:

SELECT ?item WHERE {
  ?item wdt:P31 wd:Q11424.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Run Code Online (Sandbox Code Playgroud)

返回所有电影(约 214143)。

我基本上只需要维基百科上有超过 10 种语言条目的电影,因为我猜这些将是最著名的。

有没有办法在查询本身内部执行此操作,而无需检查所有条目?

sparql wikidata

3
推荐指数
1
解决办法
506
查看次数

如何使用 SPARQL 从 Wikidata 获取属性标签

我正在使用 SPARQLWrapper 将 SPARQL 查询发送到 Wikidata。目前我正在尝试查找实体的所有属性。例如。使用一个简单的元组,例如:wd:Q11663 ?a ?b. 这本身就有效,但我正在尝试为返回的属性和实体找到人类可读的标签。

尽管SERVICE wikibase:label可以使用 Wikidata 的 GUI 界面工作,但这不适用于 SPARQLWrapper - 它坚持为变量及其“标签”返回相同的值。

查询属性rdfs:label适用于实体 (?b),但此方法不适用于属性 (?a)。

看起来该属性正在作为完整的 URI 返回,例如http://www.wikidata.org/prop/direct/P1536. 使用 GUI 我可以成功查询wd:P1536 ?a ?b.. 如果我将它作为第二个查询发送 - 但不是在第一个查询中,这适用于 SPARQLWrapper。

这是我的代码:

from SPARQLWrapper import SPARQLWrapper, JSON

sparql = SPARQLWrapper("http://query.wikidata.org/sparql")

sparql.setQuery("""
  SELECT ?a ?aLabel ?propLabel ?b ?bLabel
  WHERE
  {
    wd:Q11663 ?a ?b.

    # Doesn't work with SPARQLWrapper
    #SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
    #?prop wikibase:directClaim ?p

    # but …
Run Code Online (Sandbox Code Playgroud)

sparql wikidata sparqlwrapper

3
推荐指数
1
解决办法
1908
查看次数

维基数据“Truthy”数据转储

我正在启动一个关于知识库的项目,并想从下载最近的维基数据转储开始。我发现了一个名为“truthy”的数据转储,但我不确定是否可以信任它。

\n\n

我对流行文化的理解是,“真实”的陈述是不真实的基于直觉和感知。谢谢,科尔伯特先生。

\n\n

为什么维基数据会产生一个数据不准确的“真实”数据转储?

\n\n

同样令人困惑的是存在相互冲突的定义。例如,这是“真实”数据的定义直接来自维基媒体组织的

\n\n
\n

真实的语句表示对于给定属性具有最佳\n 未弃用排名的语句。也就是说,如果属性 P2 存在首选语句,则只有 P2 的首选语句才会被视为真实。

\n
\n\n

对我来说,这句话意味着真实的陈述(事实三重)是首选。

\n\n

这个其他网页是这样描述“真相”的:

\n\n
\n

这仅包含 \xe2\x80\x9ctruthy\xe2\x80\x9d 或 \xe2\x80\x9cbest\xe2\x80\x9d 语句,没有限定符或引用。

\n
\n\n

我这有什么用?这个“真实”的数据可靠可信吗?

\n

rdf wikidata

3
推荐指数
1
解决办法
1014
查看次数

无法从wikidata获得电影片名

我试图通过查询从wikidata获取电影标题.

我已经尝试过了:

PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wd: <http://www.wikidata.org/entity/> 
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX v: <http://www.wikidata.org/prop/statement/>

SELECT ?q ?film_title ?actor ?genre WHERE {
  ?q wdt:P31 wd:Q11424.
}

LIMIT 10
Run Code Online (Sandbox Code Playgroud)

输出如下:wd:Q372

但是我们试图得到这个数字的movie_title而不是这个数字.

semantic-web sparql wikidata

2
推荐指数
1
解决办法
502
查看次数

维基数据 - resultset.hasNext()尽管检索到结果但仍返回false

正如标题清楚描述的那样,我们意外地resultset.hasNext()回归false.

这是我的基于Jena的SPARQL查询和Java源代码:

SELECT ?s ?label WHERE { ?s rdfs:label ?label. FILTER(CONTAINS(LCASE(?label), "university"@en)). } LIMIT 5

Query query = QueryFactory.create(PREFIX + sparqlQuery);
QueryExecution queryExecution = QueryExecutionFactory.sparqlService("https://query.wikidata.org/sparql", PREFIX + sparqlQuery);
try {
    ResultSet results = queryExecution.execSelect();
    ResultSetFormatter.out(System.out, results, query);
    while (results.hasNext()) { // returns false
        QuerySolution querySolution = results.next();
        System.out.println(querySolution.getResource("s"));
    }
} catch (Exception ex) {
    System.err.println(ex.getMessage());
} finally {
    queryExecution.close();
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

------------------------------------------------------
| s        | label                                   |
======================================================
| wd:Q1060 | "Technical University of Hamburg"@en    | …
Run Code Online (Sandbox Code Playgroud)

semantic-web sparql jena wikidata

2
推荐指数
1
解决办法
191
查看次数

SPARQL:查询Wikidata标签中的一种以上语言

我正在尝试从Wikidata的SPARQL端点获取多种语言的标签。此处给出以下示例:

SELECT ?country ?country_EN ?country_DE ?country_FR
   WHERE {
     ?country wdt:P31 wd:Q185441. # member state of the European Union
     SERVICE wikibase:label { bd:serviceParam wikibase:language "en".
            ?country rdfs:label ?country_EN.
     }
     SERVICE wikibase:label { bd:serviceParam wikibase:language "de".
            ?country rdfs:label ?country_DE.
     }
     SERVICE wikibase:label { bd:serviceParam wikibase:language "fr".
            ?country rdfs:label ?country_FR.
     }
}
Run Code Online (Sandbox Code Playgroud)

在这里尝试

但是,这将返回以下错误:

未知错误:任何组中只能有一个“最后运行”联接

是否有一种解决方案可以使用多种语言获得标签?

sparql wikidata blazegraph

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