1

在此页面 - https://openlibrary.org/developers/dumps - 有“版本”和“作者”的 JSON 数据转储,压缩时总计约 7Gb 的数据(未压缩时约 28Gb)。

版本文件的结构如下(每行中的信息各不相同):

/authors/OL6606949A"}], "publish_places": ["Waterville, Me"], "pagination": "613 p. (大字体);", "created": {"type": "/type/datetime", "value": "2011-06-29T22:47:47.350358"}, "dewey_decimal_class": ["973.931092", " B"],"number_of_pages":613,"isbn_13":["9780786291670"],"lccn":["2006031151"],"subject_places":["美国","北卡罗来纳州"],"isbn_10": [“0786291672”],“publish_date”:“2007”,“copyright_date”:“2006”,“作品”:[{“key”:“/works/OL15801457W”}]}
/type/edition /books/OL11119269M 5 2010-04-24T18:14:28.389476 {“number_of_pages”:362,“subtitle”:“中世纪早期的教养和收养(特拉华大学出版社系列,跨学科的家庭透视)”,“重量”:“1.6 磅”,“封面”:[2673249],“latest_revision”:5,“edition_name”:“Rev Exp edition”,“title”:“Spiritual Kinship As Social Practice”,“语言”:[{“key”:“/languages/eng”}],“主题”:[“家庭与关系”,“家谱、纹章、姓名和荣誉”,“公元 500 年至公元 1000 年”,“古罗马 - 历史”、“社会制度”、“社会学”、“古罗马”、“社会学 - 婚姻与家庭”、“另类家庭”、“古代 - 罗马”、“灵性 - 一般”、“收养”、“欧洲”、“历史”、“中世纪,500-1500”、“社会历史”、“赞助商”,“至 1500”],“类型”:{“key”:“/type/edition”},“物理尺寸”:“9.8 x 6.2 x 1 英寸”,“修订版”:5,“出版商”:[ “特拉华大学出版社”],“physical_format”:“精装”,“last_modified”:{“type”:“/type/datetime”,“value”:“2010-04-24T18:14:28.389476”},“键”:“/books/OL11119269M”,“作者”:[{“键”:“/authors/OL797447A”}],“标识符”:{“goodreads”:[“2994735”]},“isbn_13”:[“9780874136326”],“isbn_10”:[“0874136326”],“publish_date”:“2000 年 6 月”,“作品”:[{“key ": "/works/OL4195029W"}]}
last_modified": {"type": "/type/datetime", "value": "2012-08-08T08:36:18.306844"}, "key": "/books/OL25407707M", "authors": [{"键”:“/authors/OL1397347A”}],“publish_places”:[“查尔斯顿,SC”],“分页”:“x,95 页。:", "created": {"type": "/type/datetime", "value": "2012-08-08T08:36:18.306844"}, "lccn": ["2012933881"], "number_of_pages": 95,“isbn_13”:[“9780738591667”],“subject_places”:[“伊丽莎白敦(肯塔基州)”,“伊丽莎白敦”,“肯塔基州”],“isbn_10”:[“0738591661”],“publish_date”:“2012 ", "作品": [{"key":

作者文件的结构如下:

/type/author /authors/OL100223A 2 2008-09-08T16:20:28.105165 {“姓名”:“Umu Hilmy”,“personal_name”:“Umu Hilmy”,“last_modified”:{“type”:“/type/ datetime", "value": "2008-09-08T16:20:28.105165"}, "key": "/authors/OL100223A", "type": {"key": "/type/author"}, "revision “:2}
/type/author /authors/OL6606949A 1 2009-05-14T08:13:43.294872 {"name": "Elizabeth Edwards", "created": {"type": "/type/datetime", "value": "2009 -05-14T08:13:43.294872"}, "personal_name": "Elizabeth Edwards", "last_modified": {"type": "/type/datetime", "value": "2009-05-14T08:13:43.294872 "}, "latest_revision": 1, "key": "/authors/OL6606949A", "birth_date": "1949", "type": {"key": "/type/author"}, "revision": 1 }
/type/author /authors/OL1003081A 5 2012-06-06T22:11:38.525232 {"name": "William Pinder Eversley", "created": {"type": "/type/datetime", "value": " 2008-04-01T03:28:50.625462"},“death_date”:“1918”,“照片”:[6897255, 6897254],“last_modified”:{“type”:“/type/datetime”,“value”: “2012-06-06T22:11:38.525232”},“latest_revision”:5,“key”:“/authors/OL1003081A”,“birth_date”:“1850”,“personal_name”:“William Pinder Eversley”,“type ": {"key": "/type/author"}, "revision": 5}

我想要结束的是一个制表符分隔的文件,只有以下信息:

OL 参考题名 isbn_10 isbn_13 subject_places subject_people

例如:

/books/OL24712550M 拯救恩典 Elizabeth Edwards 0786291672 9780786291670 “癌症”、“家庭”、“立法者的配偶”、“哲学”、“患者”、“大字体”、“律师的配偶”、“传记”、“受保护” DAISY”“美国”,“北卡罗来纳州”“伊丽莎白·爱德华兹 (1949-)”,“约翰·爱德华兹 (1953 年 6 月 10-)”

(在某些情况下,其中一些字段当然是空的。)

所以我想要的所有信息都在版本转储中,除了来自作者转储的“名称”字段,通过版本转储中的引用查找,例如/authors/OL6606949A。

因此,我尝试将JQ与以下查询一起使用(仅用于测试几列):

.personal_name 作为 $names | .作者 | {标题,姓名,作者:$names[.key]}

但它甚至没有执行,因为我在查找作者密钥的符号时也遇到了问题。

4

1 回答 1

1

由于主题等可以有多个值,您希望如何在输出中将它们分开以避免模棱两可?

jq '.personal_name as $names | .authors as $authors| {title, name, author: $names[.key]}'

是您在问题中使用的 jq 命令的固定版本,但不使用$authors.

无论如何,如果您澄清您的目标,我们绝对可以做到这一点!

于 2014-06-19T20:28:23.083 回答