Cocoda Technical Architecture
coli-conc Technical Report 11
This report gives an update on the architecture of Cocoda, a mapping tool for concordances between library knowledge organization systems that is being developed at the head office of GBV Common Library Network (VZG). A new implementation or Cocoda has been started from scratch.
The aim of project coli-conc is an infrastructure to facilitate management and exchange of concordances between library knowledge organization systems. In particular this includes a web application to manage, create, and evaluate mappings. Since its beginning in 2015, the technical and organizational background of the project and its mapping tool have evolved. After some attempts with a monolithical Java application we revisited our original plan of a modularized web application. Based on experiences with two prototypes and the mapping data collected so far we started with a new implementation in May 2018. This report supersedes the Cocoda primer (Voß 2015) with an overview of the current technical architecture.
JSKOS Data Format
The core of the concordances infrastructure turned out to be the JSKOS data format for knowledge organization systems. In short this format is an application profile of JSON-LD (Kellogg, Lanthaler, and Sporny 2014) for SKOS (Miles and Bechhofer 2009) extended by support of mappings, concordances, usage statistics, and optional closed world statements (Voß 2018). The specification has reached a stable state with only minor additions to be discussed.
Cocoda Web Application
|concept browser||based on a hierarchical navigation and a detailled display of selected concepts|
|mapping editor||to create, modify, and annotate mappings|
|mapping browser||to show existing mappings and mapping recommendations from multiple sources|
|occurrences table||to show the number of times selected concepts are used in library catalogs|
These components shall also be usable independently from Cocoda for instance to provide hierarchical browsing in one classification. Additional parts of the application for interaction with backend services may be pubished as npm modules which can also be used for server side applications.
The web application is developed publically at https://github.com/gbv/cocoda with technical documentation published at https://gbv.github.io/cocoda/. We use a Kanban board at Waffle.io for project management and travis-ci for continuous integration.
Backend Web Services
The web application communicates with independent backend services, mainly in JSKOS format:
- terminology services such https://api.dante.gbv.de/, Skosmos etc. (Voß et al. 2016)
- mapping providers with concordances and mapping recommendations
- occurrence services that look up (combined) usage of concepts in library catalogs
- mapping stores allow creation, modification, and annotation of mappings
- identiy providers manage user accounts and provide access tokens via OAuth2
Additional Data Processing
Backend services and additional data processing pipelines are implemented with different technologies. In particular we use and contribute to:
mc2skos command line application for converting MARC 21 records to JSKOS
Catmandu data processing toolkit for access to and transformation of other library data
Kellogg, Gregg, Markus Lanthaler, and Manu Sporny. 2014. “JSON-LD 1.0.” W3C Recommendation. W3C.
Miles, Alistair, and Sean Bechhofer, eds. 2009. “SKOS Simple Knowledge Organization System Reference.” W3C Recommendation. http://www.w3.org/TR/skos-reference.
Voß, Jakob. 2015. Cocoda Technical Report 1. doi:10.5281/zenodo.16786.
———. 2018. “JSKOS Data Format for Knowledge Organization Systems.” Version 0.3.2. http://gbv.github.io/jskos/.
Voß, Jakob, Jana Maria Agne, Uma Balakrishnan, and Morsheda Akter. 2016. “Terminology Registries and Services.” doi:10.5281/zenodo.166717.
Voß, Jakob, and Moritz Horn. 2014. “Exposing Library Services with AngularJS.” Cod4lib Journal, no. 26 (October). https://journal.code4lib.org/articles/10023.