Client for CDLI framework API.
A prerequisite for this client is Node.JS and a package manager like npm, which usually comes with it.
npm install -g cdli-api-client
Or install it locally into an existing project:
npm install cdli-api-client
Alternatively, the command can be run with npx:
npx cdli-api-client --help
Right now, the client supports two basic operations:
- exporting parts of the database as linked data (or specifically N-Triples). The parts that can be chosen are the types of entities in the catalogue, such as artifacts, materials, proveniences, inscriptions and periods.
- searching artifacts in the database.
cdli [command]
Commands:
cdli export Export catalog and text data
cdli search Export catalog and text data
Options:
--version Show version number [boolean]
--host, -h Host URL to use for API calls
[string] [default: "https://cdli.mpiwg-berlin.mpg.de/"]
--format, -f File format
[choices: "ndjson", "csv", "tsv", "ntriples", "bibtex", "atf"]
--output-file, -o Output file (outputs to stdout by default)
--help Show help [boolean]
cdli export
Export catalog and text data
Options:
--version Show version number [boolean]
-h, --host Host URL to use for API calls
[string] [default: "https://cdli.mpiwg-berlin.mpg.de/"]
-f, --format File format
[choices: "ndjson", "csv", "tsv", "ntriples", "ttl", "bibtex", "atf"]
-o, --output-file Output file (outputs to stdout by default)
--help Show help [boolean]
-e, --entities Which types of entities to fetch
[array] [choices: "abbreviations", "archives", "artifacts", "artifact-assets",
"artifacts-external-resources", "artifacts-materials",
"entities-external-resources", "entities-names", "authors", "collections",
"dynasties", "external-resources", "genres", "inscriptions", "journals",
"languages", "locations", "materials", "material-aspects", "material-colors",
"periods", "places", "proveniences", "publications", "regions", "rulers"]
[default: []]
-i, --index Which index(es) to fetch [array] [default: []]
So to export place-related entities from a locally-running framework instance you could do this:
cdli export \
--host http://localhost:2354/ \
--entities archives proveniences regions \
--output-file places.nt
Fetching all artifacts from the live server could look like this:
cdli export \
--host https://cdli.mpiwg-berlin.mpg.de/ \
--entities artifacts \
--format csv \
--output-file artifacts.csv
Export all linked data:
cdli export \
--host https://cdli.mpiwg-berlin.mpg.de/ \
--entities abbreviations archives artifacts artifact-assets \
artifacts-external-resources artifacts-materials authors collections \
dynasties entities-external-resources entities-names external-resources \
genres inscriptions journals languages locations materials material-aspects \
material-colors periods places proveniences publications regions rulers \
--format ntriples \
--output-file all.nt
cdli search
Search artifacts in the catalog
Simple search:
-q, --query Search query [array]
--queryCategory, --qc Search category
[array] [choices: "keyword", "publication", "collection", "provenience",
"period", "transliteration", "translation", "id"]
--queryOperator, --qo Search operator [array] [choices: "AND", "OR"]
Advanced search:
--advancedField, --af Search field [array]
--advancedQuery, --aq Search query [array]
Filter:
--filterField, --fk Filter by field [array]
--filterValue, --fv Filter by value [array]
Options:
--version Show version number [boolean]
-h, --host Host URL to use for API calls
[string] [default: "https://cdli.mpiwg-berlin.mpg.de/"]
-f, --format File format
[choices: "ndjson", "csv", "tsv", "ntriples", "bibtex", "atf"]
-o, --output-file Output file (outputs to stdout by default)
--help Show help [boolean]
Example:
cdli search -q holland --fk genre --fv "Official or display" -f tsv
const CDLI = require('cdli-api-client')
const client = new CDLI.Client('http://localhost:2354/')
// process logging
client.on('log', msg => process.stderr.write(msg))
client.export(['archives', 'proveniences', 'regions' ], 'places.nt')
.then(entities => {
for (const { status, reason } of entities) {
if (status === 'rejected') {
console.error(reason)
}
}
})