JSKOS Tools (jskos-tools)
Tools for working with the JSKOS data format.
This repository contains tools for working with the JSKOS data format for knowledge organization systems.
Table of Contents
Install
npm i jskos-tools
Usage
const jskos = require("jskos-tools")
Validation
validate
let concept = {
...
}
jskos.validate.concept(concept)
Directory bin
also contains a command line script for validation.
version
Returns the version of the JSKOS specification that's used for validation.
jskos.version
Mapping Identifiers
let mapping = {
...
}
mappingContentIdentifier
mappingContentIdentifier
starts with urn:jskos:mapping:content: and takes concepts and type into consideration. It uses the mappingContent
function to get relevant properties from the mapping.
let contentIdentifier = jskos.mappingContentIdentifier(mapping)
mappingMembersIdentifier
mappingMembersIdentifier
starts with urn:jskos:mapping:members: and only takes concepts into consideration. It uses the mappingMembers
function to get relevant properties from the mapping.
let membersIdentifier = jskos.mappingMembersIdentifier(mapping)
addMappingIdentifiers
addMappingIdentifiers
creates a new mapping with property "identifiers", containing mappingContentIdentifier and mappingMembersIdentifier.
let mappingWithIdentifiers = jskos.addMappingIdentifiers(mapping)
compareMappings
compareMappings
compares two mappings based on their mappingContentIdentifier
.
if (jskos.compareMappings(mapping1, mapping2)) { ... }
Aliases: compareMappingContent
compareMappingMembers
compareMappingMembers
compares two mappings based on their mappingMembersIdentifier
.
if (jskos.compareMappingMembers(mapping1, mapping2)) { ... }
Tools
addContext
Add @context
URI to a JSKOS object or to an array of JSKOS objects.
jskos.addContext(object)
clean
Removes properties starting with _
or containing only uppercase letters from a JSKOS object.
jskos.clean(object)
Aliases: cleanJSKOS
copyDeep
Creates a deep copy of a JSKOS object, replacing possibly circular structures with open world [null]
statements. Ignores all properties starting with _
.
jskos.copyDeep(object)
Aliases: deepCopy
getAllUris
Returns all possible URIs for a JSKOS object. Takes into consideration both the uri and identifier properties, as well as different variants of those identifiers. Returns an empty array if object is null
.
jskos.getAllUris(object)
compare
Compares two objects based on their URIs, using getAllUris
. Returns true
if both objects are null
.
jskos.compare(object1, object2)
Aliases: compareObjects
, compareSchemes
, compareConcepts
isConcept
Checks whether JSKOS object is a concept based on type property.
jskos.isConcept(object)
isScheme
Checks whether JSKOS object is a concept scheme based on type property.
jskos.isScheme(object)
isContainedIn
// Checks whether an object is contained in a list of objects using compare
.
jskos.isContainedIn(object, listOfObjects)
Aliases: isSchemeInList
sortConcepts
Sorts a list of concepts by their notation, then URI. Returns a copy of the list.
jskos.sortConcepts(concepts)
sortSchemes
Sorts a list of schemes by their German prefLabel, then URI. Returns a copy of the list.
jskos.sortSchemes(schemes)
minifyMapping
Removes unnecessary properties from mapping before export or saving. In particular, all properties except for to
, from
, toScheme
, fromScheme
, type
, and creator
on the mapping will be removed, and all properties except for uri
and notation
on concepts and schemes will be removed.
let newMapping = jskos.minifyMapping(mapping)
mappingTypes
An array of mapping types in form of objects. Objects can have the following properties:
notation
- an array of notations (in this case symbols)uri
- the URI of the mapping typeprefLabel
- a language maps of labelsbroader
- array of broader mapping types for this typerelated
- array of related mapping typesRELEVANCE
- relevance label for GND terms (low, medium, high, very high)short
- a short name for the type, used for CSV import/export
Example object:
{
"notation": ["≈"],
"uri": "http://www.w3.org/2004/02/skos/core#closeMatch",
"prefLabel": { "en": "close match" },
"broader": [ { "uri": "http://www.w3.org/2004/02/skos/core#mappingRelation" } ],
"RELEVANCE": "high",
"short": "close"
}
mappingTypeByUri
Returns a mapping type object for an URI.
jskos.mappingTypeByUri("http://www.w3.org/2004/02/skos/core#closeMatch")
mappingTypeByType
Returns a mapping type for a JSKOS type property. This is usually an array where the first type is taken, but a workaround for string types is included as well.
jskos.mappingTypeByType(mapping.type)
defaultMappingType
The default mapping type (currently mapping relation
).
flattenMapping
Converts a mapping into a flat object with for serialization as CSV. Returns an object with fields fromNotation
, toNotation
, type
, and (if option language
has been provided) fromLabel
and toLabel
).
mappingToCSV
Returns a configured converter from JSKOS mapping to CSV line. For now only simple 1-to-1 mappings and 1-to-0 mappings are supported.
let mappingToCsv = jskos.mappingToCSV({ delimiter: ';' })
mappingToCsv(mapping)
Concept labels are included only if configuration field language
is set. The order of CSV fields is fromNotation, (fromLabel,) toNotation, (toLabel,) mappingType.
conceptsOfMapping
Returns an array of concepts contained in a mapping. side
can either be from
or to
. If side
is left out, concepts from both sides will be returned.
jskos.conceptsOfMapping(mapping)
Build
git clone --recursive https://github.com/gbv/jskos-tools.git
cd jskos-tools/
npm install
Test
npm test
Maintainers
Contribute
PRs accepted.
Small note: If editing the README, please conform to the standard-readme specification.
License
MIT © 2018 Verbundzentrale des GBV (VZG)