- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种方法来获取英语维基百科上的所有电影,以及它们的创建日期。
对我来说,电影是附加了 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
}
最佳答案
因此,正如评论所指出的,维基数据属性(有一些罕见的例子,如特色文章标志)描述了基本概念,而不是维基百科页面元数据。正如@AKSW 指出的那样,与维基百科 API 对话的能力有限,但我的理解是,这对于大量文章来说效果不佳(注意示例代码中的 LIMIT 50)
然而,一切都没有丢失!我最近在 Gender and Deletion on Wikipedia 中为大量文章制定了一种大规模执行此操作的方法。 ,使用一点横向思维。
第一步:找出你的维基数据查询。带有 tt 前缀的 IMDB 标签可能适用于电影以外的内容(例如电视剧集、体育广播),因此另一种方法可能是执行 P31/P279 类型/类别搜索以查找所有属于“电影或电影子类”的内容.您还需要添加一个过滤器,明确指出“并且只有英文维基百科中的一篇文章”,我看到您已经这样做了。请注意,这为您提供了 WP 文章的名称,而不是维基数据项目的“标签”,这是不同的,因此您可以删除(耗时的)标签服务条款。你最终会得到类似 https://w.wiki/FH4 的东西(这仍然使用 tt- 前缀方法并获得 180k 结果)或 https://w.wiki/FH8 (P31/P279 过滤器加 tt- 前缀,136k 结果)
运行此查询,将结果 TSV 保存在某处,然后继续执行第 2 步。我们将在此处使用的工具是 PetScan ,旨在链接来自维基百科类别、维基百科元数据、维基数据查询等的数据。
将 SPARQL 查询输入选项卡 4(“其他来源”)并在此选项卡底部说“使用 wiki:enwiki”。这将强制它输出有关从此查询链接的维基百科文章的数据。
现在点击“do it”,稍等片刻(我测试它花了大约 100 秒)并检查结果。你会看到我们得到了标题(WP 文章)、页面 ID、命名空间(希望总是“(文章)”、字节大小和最后触摸日期。这些都不是创建日期......
...除了其中一种是。 PageID 是按顺序分配的,因此它们本质上是创建时间的时间戳。这里有一些关于边缘情况的细微差别 - 例如,如果我在 2010 年创建了一个名为“示例(电影)”的重定向,并在 2015 年手动编辑了重定向以成为一篇名为“示例(电影)”的真实文章,它将显示为创建于 2010 年。对于删除和重新创建的页面,或者具有复杂页面移动历史的页面,也可能会有奇怪的结果(尽管直接页面移动应该保持 ID)。但是,一般来说,对于 95% 的项目,pageID 将反射(reflect)它在维基上首次创建的时间。例如,创建了 431900000 at 11.14am on 1 July 2014 ; 531900000 已创建 at 6.29pm on 14 February 2017 ;等等。
回到 PetScan - 让我们拉下所有这些项目。在 PetScan 中,转到最后一个选项卡并选择 TSV。重新运行搜索并保存结果文件。
现在,我们有一个带有 Wikidata ID、IMDB ID 和 WP 页面标题的 TSV(以及您想从 WD 查询中恢复的任何其他内容);我们还有另一个 WP 页面标题和页面 ID。您可以使用 WP 页面标题将它们链接在一起,让您从“维基数据中的结果”转到“页面 ID”。清理这些并根据您的喜好链接它们 - 我是在 bash 中完成的,您可能想要使用更明智的东西,比如 python。
现在您可以将 PageID 转换为创建日期。对于我所做的工作,我只对六个月的 bin 感兴趣,所以我只是计算出在每年 1 月 1 日和 7 月 1 日创建的任意 pageID,并计算它们之间的 ID。您可以做同样的事情,或者使用 API 查找单个 pageID 并获取创建时间戳 - 完全取决于您想要获得的内容。
这比仅使用查询服务要复杂一些,它“可能”会为一两篇历史复杂的文章提供虚假结果,但它基本上可以让您做您最初要求的事情。
关于python - 维基数据查询服务 - 获取页面的创建日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59599452/
正如标题所说,我需要制作一个函数,在二进制补码中的 2 个碱基、DEC 和 HEX 之间进行转换。该值使用的位数从一开始就已知。 在深入研究之后,我发现了以下算法: 给定一个 DEC 中的数字。 获取
我的用户文档具有以下格式: { userId: "", userAttributes: [ "", "", ... ""
根据这个: Selectivity is the value between 0 and 1, and it is the fraction of rows returned after applyi
这个词有它 FillChar 是用相同值的字节填充内存补丁的最快方法(不是零,因为有 ZeroMemory),但是是否有等效于用相同的序列填充内存(四字节)整数或基数?像 FillInt 或 Fill
我正在努力寻找建模 1 : 0,1 关系的最佳方法(“可能有一个”或“最多有一个”)。我相信这被称为 Z 基数。 例如,假设我有两个类 Widget和 WidgetTest .并非所有 Widget
我使用parseInt找到了一个片段;它用于获取窗口高度。 这是代码: parseInt($(window).height(), 20); 我很困惑为什么使用 20 作为第二个参数。为什么不是 10
要将十进制数转换为基数 2,我使用: int base2 = 10; Convert.ToString(base2, 2); 输出:1010 但是我怎么能做相反的事情呢?即: 输入:1010输出:10
这是一张真实 table 的再现。假设我有这段代码: CREATE TABLE `testTable` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
由于十六进制(基数 16)使用 0-9A-F,并且(我在这里假设)基数 17 使用 0-9A-G,依此类推。什么符号用过一次0-9A-Z都用完了。 最佳答案 你的问题没有标准答案。 “Base 36”
我正在寻找支持 radix 的浏览器列表Number.toString() 中的参数在 JavaScript 中。全部执行toString ,但我找不到他们是否都支持 radix toString 的
这个问题已经有答案了: What is the radix parameter in Java, and how does it work? (6 个回答) 已关闭 5 年前。 public clas
为什么 (73).toString(36) 返回 21 而 (0.73).toString(36) 返回 0。 qa2voha2volfpsnhmyhqia4i 而不是 0.21? 最佳答案 这是因为
我目前正在研究数据库,我看到 degree 和 cardinality 用作相同的术语,或在某些其他学位定义为否。关系中涉及的实体的数量,并进一步分类为一元、二元和三元。 某些放置度数定义为关系类型的
UML(统一建模语言)中的运算符*和运算符0..*有什么区别? 我看到了这两个基数运算符,但是现在我不必使用哪个基数运算符了。 最佳答案 符号“*”是“0 .. *”的快捷方式。在这种情况下使用的正确
我有位于目录“someApp”中的 Angular 应用程序。网址是 http://example-domain/someApp/#/对于一些带有路径的状态 url 是:http://example-
我想一劳永逸地知道如何编写 UML 基数,因为我经常不得不讨论它们(因此非常欢迎证据和来源:) 如果我想解释一下 Mother可以有几个Child任但是 Child有一个而且只有一个 Mother ,
进行字符算术时,规则是以 10 为基数还是以 8 为基数进行计算?我的书上说'A' = 101(基数为8)或65(基数为10),但是当我将基数为8的字符值插入到我的书给出的关于说明这一点的示例中时,我
该程序是将 4 进制数转换为 2 进制数,并且应该就地完成 #include #include void shiftr(char num[],int i) { memmove(num+i,n
这个问题已经有答案了: JavaScript parseInt is giving me wrong number, what I'm doing wrong? [duplicate] (1 个回答)
我遇到了一个小错误,它似乎表明当您传入图像数据作为其源时,在图像完全加载之前调用了 onload 函数。 这是 HTML 这是 JavaScript: var can
我是一名优秀的程序员,十分优秀!