如果我知道 Kanye West 的 Spotify ID 是 5K4W6rqBFWDnAN6FQUkS6x,那么将该标识符解析到他的 Wikidata 页面(即https://www.wikidata.org/wiki/Q15935 )的最简单方法是什么?
我是否需要使用 SPARQL 查询来执行此操作,或者有没有办法使用 MediaWiki JSON API 来执行此操作?
我正在尝试检索有关某些人寿命的数据。这对于生活过一段时间的人来说是有问题的。例如毕达哥拉斯的数据集似乎有一个所谓的“空白节点” 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) 对于给定的属性,如'职业 (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 中获取世界上最著名的电影。
我有以下查询:
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 种语言条目的电影,因为我猜这些将是最著名的。
有没有办法在查询本身内部执行此操作,而无需检查所有条目?
我正在使用 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) 我正在启动一个关于知识库的项目,并想从下载最近的维基数据转储开始。我发现了一个名为“truthy”的数据转储,但我不确定是否可以信任它。
\n\n我对流行文化的理解是,“真实”的陈述是不真实的,仅基于直觉和感知。谢谢,科尔伯特先生。
\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我试图通过查询从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而不是这个数字.
正如标题清楚描述的那样,我们意外地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) 我正在尝试从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)
但是,这将返回以下错误:
未知错误:任何组中只能有一个“最后运行”联接
是否有一种解决方案可以使用多种语言获得标签?