Cocoda Technical Architecture

coli-conc Technical Report 11

Jakob Voß <>
Verbundzentrale des GBV (VZG)

DOI: 10.5281/zenodo.1256498 (PDF)

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

The new version of Cocoda is build as singe page web application using the Vue JavaScript framework instead of AngularJS. We had some good experiences with the latter (Voß and Horn 2014) but Vue turned out to be more manageable. The application can be broken down into four main components:

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 with technical documentation published at We use a Kanban board at 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, 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

  • wikidata-taxonomy and wdmapper Wikidata authority file extraction and mapping tools


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.

Voß, Jakob. 2015. Cocoda Technical Report 1. doi:10.5281/zenodo.16786.

———. 2018. “JSKOS Data Format for Knowledge Organization Systems.” Version 0.3.2.

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).