Finding aids "v2" #1967
Replies: 11 comments 6 replies
|
Update: All the |
|
Admin data and postal data (CSV archives): |
|
A working implementation of a finding aid "reader": Where Under the hood the code is using a URI template to construct an HTTP "reader" using the corresponding repository's absolute URL for the https://github.com/whosonfirst/go-reader-findingaid/blob/main/findingaid.go#L86-L150 Because URI templates are used to define new go-reader instances the finding aid reader is not limited to HTTP retrievals but can use any reader packages have been imported: |
|
Admin and postal code finding aid data is now available here: |
How big would they be? Either way I think |
|
This is all still in branches but: |
|
Ballpark costs for DynamoDB setup assuming:
|
|
This is a thing that works: And when I visit
|
|
I am uncertain why this is being terminated by Docker, locally, otherwise it works: I will wire this in to the WOF ECS tasks to run every (n) hours shortly. |
|
This was performed by an ECS task. Still need to sort out GH credentials for automated tasks. |
|
This was performed by an ECS task pulling its GH credentials from an AWS parameter store and saving work to GH as a dedicated This only updates the CSV files in the |

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Paging @nvkelso @stepps00 @missinglink @tomtaylor @vicchi for comments. Not required, but welcome.
I am working through a fresh take on the WOF "finding aid" model. To recap, briefly a WOF finding aid is meant to map a given ID to its corresponding
whosonfirst-datarepository.The use case is something like the go-whosonfirst-browser which doesn't have a database of IDs but instead uses one or more go-reader instances to retrieve records. That is: The
go-whosonfirst-browserdoesn't actually know anything about where the data is coming from. It lets the "reader" handle all those details.(Remember: The
go-whosonfirst-browserdoes not have the search functionality of something like the Spelunker, but it primarily a tool for rendering any given known ID in a number of formats.)One goal with the finding aids has been to create a "finding aid reader" that when given an ID would look up its corresponding repository and fetch the data over the wire from GitHub. That way the
go-whosonfirst-browsercould run with a minimal footprint (read: No database with a bazillion WOF records).Version "1" of the finding aid code stored finding aids as blobs of JSON in an S3 using the similar URI/naming conventions as WOF records.
Version "2" of the finding aid code aims to move away from this model and instead publish pre-compiled indices that can be stored in a
whosonfirst-datarepository. These files would then be downloaded and indexed according to application-specific rules.The source code (WIP) is but keep in mind it is lacking proper documentation right now:
https://github.com/whosonfirst/go-whosonfirst-findingaid/tree/v2
For example, this is me creating a CSV finding aid for the
sfomuseum-data-mapsrepo, fetching the data directly from GitHub:Data is processed using the whosonfirst/go-whosonfirst-iterate package which means that it has the ability to filter records to be included (or excluded) using property filters. By default finding aids are assumed to contain "all the pointers" but this allows purpose-fit finding aids to be created. For example a finding aid for only records of a given placetype.
Iterators are separate from source "providers". The former iterate over records in a given source; the latter generates a list of sources to iterate over.
The finding aid model has two "tables". One is to store the WOF ID lookup and looks like this:
And one to store the repo ID and it's corresponding name:
The idea being that storing string repo names for every record is a waste of space and processing time. Although it may probably be the case that any given finding aids will map to a single WOF repo it is possible for a finding aid to contain pointers to records from multiple repositories.
As of this writing there are three different pre-compiled indices:
whosonfirst-data-admin-repos is, uncompressed, 77MB.catalog.csvandsources.csv. These are faster to create than the SQLite databases and much smaller. I am still doing an initial run of CSV archives for thewhosonfirst-data-adminrepositories but if the SQLite database for China is 10MB the CSV archive is only 1.8MB.Right now, I am inclined to:
csv2sqltool for populating a local SQLite database from (n) CSV archives but I haven't done timings yet.It would be easy enough to create a
whosonfirst-data/findingaidrepo but I am wondering whether it makes sense to store them in this repo (whosonfirst-data/whosonfirst-data) ?Thoughts?
All reactions