抱歉,如果我的英语不好,但我真的没有任何地方可以用我的母语问这个问题。我一直在尝试为 Wikidata 创建 SPARQL 查询,该查询应该创建 1925-1950 年间创作的所有恐怖小说、作者姓名以及图片(如果有)的列表:
SELECT DISTINCT ?item ?itemLabel ?author ?name ?creation ?picture
WHERE
{
?item wdt:P136 wd:Q193606 . # book
?item wdt:P50 ?author . # author
?item wdt:P577 ?creation .
?item wdt:P577 ?end .
?author rdfs:label ?name .
OPTIONAL{ ?item wdt:P18 ?picture }
FILTER (?creation >= "1925-01-01T00:00:00Z"^^xsd:dateTime) .
FILTER (?end <= "1950-12-31T23:59:59Z"^^xsd:dateTime) .
SERVICE wikibase:label
{
bd:serviceParam wikibase:language "en" .
}
}
Run Code Online (Sandbox Code Playgroud)
但是,由于某种原因,该查询在列表中放置了重复项。DISTINCT 没有多大作用。一段时间后,我发现原因是“?item rdfs:label ?name .”。如果删除此行,则不会列出重复项。但我需要这一行来在列表中显示作者姓名!有想法该怎么解决这个吗?
您如何请求Item具有的所有属性集?
具体来说,我正在寻找每个项目的英文标签,这是项目属性的价值.
例如" 地球 ":
{
"Challenger Deep",
"Solar System",
"oblate spheroid",
"geoid",
"World Ocean",
"Afro-Eurasia",
...
}
Run Code Online (Sandbox Code Playgroud)
我现在正在使用维基数据工具包库,但我会提出建议.
我有以下查询,我在wikidata 查询服务 Web 界面上运行:
SELECT ?objectLabel ?mass
WHERE {
?object wdt:P397 wd:Q525. # the object should have the sun as parent astronomical body
?object wdt:P31 ?status.
?object wdt:P2067 ?mass.
# Here are the accepted object status
VALUES ?status {wd:Q128207 wd:Q121750 wd:Q1319599}. # terrestrial planet, gas giant, ice giant
# automatically use the english label for ?xLabel variables
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
Run Code Online (Sandbox Code Playgroud)
我发现质量值以特定单位给出,在地球的情况下为 yottagram。我怎样才能访问这些信息?
我尝试添加如下内容:
?mass wdt:P2237 ?mass_unit. …
Run Code Online (Sandbox Code Playgroud) 有人能告诉我如何在维基数据中找到 DBPedia 的同义词属性吗?例如,DBpedia 中的属性“name”在维基数据中是“label”。如何找到所有同义词属性?
我想从维基数据id中获取维基百科pageid,我如何从维基数据查询服务或其他使用python的方法中获取它?因为我在 wikidata 中没有看到任何称为 wikipedia id 的属性。
如果我运行此SPARQL查询
#defaultView:BubbleChart
#TEMPLATE={"template":"Overall causes of death ranking of ?thing ","variables":{"?thing": {"query":"SELECT ?id (COUNT(?id) AS ?count) WHERE { ?sub wdt:P509 ?y. ?sub wdt:P31 ?id. } GROUP BY ?id "} } }
SELECT ?cid ?cause (COUNT(*) AS ?count) WHERE {
BIND(wd:Q5 AS ?thing)
?pid wdt:P31 ?thing.
?pid wdt:P509 ?cid.
OPTIONAL {
?cid rdfs:label ?cause.
FILTER((LANG(?cause)) = "en")
}
}
GROUP BY ?cid ?cause
ORDER BY DESC(?count) ?cause
LIMIT 50
Run Code Online (Sandbox Code Playgroud)
在维基数据查询编辑器中,我可以选择使用菜单下载> SVG图像将气泡图下载为SVG文件
当我以编程方式执行相同的SPARQL脚本时,我正在寻找一种生成或检索此SVG文件的URL的方法.在这种情况下,仅返回原始数据(作为JSON).
{"head":{"vars":["cid","cause","count"]},"results":{"bindings":[{"cid":{"type":"uri","值":" http://www.wikidata.org/entity/Q12152 "},"原因":{"xml:lang":"en","type":"literal","value":"心肌梗塞"},"count":{"datatype":" http://www.w3.org/2001/XMLSchema#integer ","type":"literal","value":"5837"}},{" cid":{"type":"uri","value":" http://www.wikidata.org/entity/Q12192 "},"cause":{"xml:lang":"en","type" …
我正在尝试使用https://github.com/explosion/spaCy/tree/master/bin/wiki_entity_linking 中的脚本,使用 Wikidata 和 Wikipedia 训练 Spacy 实体链接模型。我已经生成了知识库并开始训练模型,但一个多星期后还没有完成。正常应该需要多久?(我没有使用 GPU)
或者,是否有我可以使用的预训练 Wikidata 实体链接模型?
谢谢
我正在寻找一种方法来获取英语维基百科上的所有电影,以及它们的创建日期。对我来说,电影是附加了 IMDB ID 的页面。所以,这是我到目前为止的查询:
SELECT DISTINCT ?item_label ?imdb_id (year(?dateCreation) as ?AnneeCreation) WHERE {
?item wdt:P345 $imdb_id.
filter STRSTARTS(?imdb_id,"tt")
OPTIONAL{
?item wdt:P571 ?dateCreation.
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en".}
?article schema:about ?item ; schema:isPartOf <https://en.wikipedia.org/> ; schema:name ?item_label
}
Run Code Online (Sandbox Code Playgroud)
问题是大多数页面没有 P571 属性,所以我想知道是否有更好的方法来获取创建日期?也许通过修订历史或其他什么,我找不到这样的选项。
任何帮助将不胜感激!
当尝试按照https://muncca.com/2019/02/14/wikidata-import-in-apache-jena/ 中描述的过程加载获取您自己的 WikiData 副本中记录的当前 Wikidata 转储时我正在运行Apache Jenas tdbloader 命令的一些性能问题和限制。
它似乎有两个版本:
TDB1 tdbloader 的名称 tdbloader2 令人困惑,因此首次尝试使用它。
使用 TDB1/tdbloader2 的经验是,前几十亿个三元组的加载非常顺利。
最初的速度是 150 k 三倍/秒。然后它以大约 90 亿个三元组下降到大约 10 万个三元组/秒。在 100 亿个三元组时,速度在大约 100 亿个三元组时下降到 15000 个三元组/秒,并在向 110 亿个三元组移动时保持在 5000 个三元组/秒左右。
我原以为到那时导入已经完成,所以目前我什至怀疑进度是在计算三元组,而是在计算海龟输入的行,这可能不一样,因为输入有大约 150 亿行,但预计只有大约 110 亿行.
由于此时导入已经运行了 3.5 天,因此我必须决定是否中止它并寻找更好的导入选项,或者只是等待一段时间。
所以我把这个问题放在了stackoverflow上。根据 AndyS 暗示有两个版本的 tdbloader,我在大约 4.5 天后中止了 TDB1 导入,据报道在“数据”阶段导入了超过 110 亿个三元组。那时性能下降到 2.3k 三倍/秒。
使用 tdb2.tdbloader 修改后的脚本,如维基中记录的那样,导入已再次运行多次尝试。两次导入 tdb2.tdbloader 尝试已经失败,导致 Java VM 崩溃,所以我再次将硬件从 MacPro 更改为旧的 linux 机器(不幸的是速度较慢),然后又回来了。
在较旧的 Oracle JVM 在第一次尝试使用 tdb2.tdbloader …
我想知道最简单的方法是通过标签搜索从 wikidata 获取数据,例如:
API_ENDPOINT = "https://www.wikidata.org/w/api.php"
query = "cobalt-70"
params = {
'action': 'wbsearchentities',
'format': 'json',
'language': 'en',
'type':'item',
'search': query
}
r = requests.get(API_ENDPOINT, params = params)
Output:
{'searchinfo': {'search': 'cobalt-70'}, 'search': [{'id': 'Q18844865', 'title': 'Q18844865', 'pageid': 20388165, 'repository': 'local', 'url': '//www.wikidata.org/wiki/Q18844865', 'concepturi': 'http://www.wikidata.org/entity/Q18844865', 'label': 'cobalt-70', 'description': 'isotope of cobalt', 'match': {'type': 'label', 'language': 'en', 'text': 'cobalt-70'}}, {'id': 'Q18880148', 'title': 'Q18880148', 'pageid': 20426734, 'repository': 'local', 'url': '//www.wikidata.org/wiki/Q18880148', 'concepturi': 'http://www.wikidata.org/entity/Q18880148', 'label': 'cobalt-70m', 'description': 'isotope of cobalt', 'match': {'type': 'label', 'language': …
Run Code Online (Sandbox Code Playgroud)