Skip to content
Zazuko's Default Ontologies & Prefixes
JavaScript TypeScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ontologies
src
.eslintignore
.eslintrc.js convert into typescript Jun 6, 2019
.gitignore
.npmignore
.travis.yml add tests Apr 30, 2019
CHANGELOG.md fix(hydra): update Oct 22, 2019
LICENSE chore: add README and LICENSE Apr 30, 2019
README.md docs(readme): fix a broken link Jun 27, 2019
examples.js
fetch.js fix(fetch): work around w3.org bans Oct 22, 2019
jest.config.js convert into typescript Jun 6, 2019
overrides.js fix(fetch): overridable RDF XML parser options Jul 22, 2019
package-lock.json 2019.10.22 Oct 22, 2019
package.json
tsconfig.json separate node and web code Jun 6, 2019
tsconfig.web.json

README.md

@zazuko/rdf-vocabularies -- Zazuko's Default Ontologies & Prefixes

Build Status Coverage Status npm version

This package contains a distribution of the most commonly used RDF ontologies (schema/vocab, whatever you call it) including their default prefixes, together with a set of utility functions to work with prefixes.

It is extending RDFa Core Initial Context and contains what we consider commonly used prefixes. Some popular prefixes do not resolve to dereferencable RDF and are thus skipped.

The package is built for use in Node.js projects. We ship N-Quads files of the vocabularies so it could be useful for other programming languages as well as you do not have to take care of downloading the ontologies yourself.

Installation

$ npm install @zazuko/rdf-vocabularies

Using in browser

The package can be used in browser albeit it needs a bundler such as webpack and additional steps to configure it:

Usage

(Read below and take a look at some examples.)

vocabularies()

The function (require('@zazuko/rdf-vocabularies').vocabularies(options)) accepts an optional options object:

  • options.only: Array?, default: undefined, a subset of all available prefixes, will only load these.
  • options.factory: RDF/JS DatasetFactory, default: rdf-ext, a dataset factory abiding by the RDF/JS Dataset Specification, used to create the returned datasets.
  • options.stream: Boolean, default: false, whether to return a RDF/JS quad stream instead of regular objects/datasets.

Loading all Ontologies as Datasets

In browser environment this will cause a request for each individual dataset. It is thus recommended to always only load the needed ontologies to reduce the unnecessary traffic and save bandwidth.

const { vocabularies } = require('@zazuko/rdf-vocabularies')

vocabularies()
  .then((datasets) => {
    /* `datasets` is:
    {
      "csvw": Dataset,
      "sd": Dataset,
      "ldp": Dataset,
      "schema": Dataset,
      "owl": Dataset,
      "void": Dataset,
      "sioc": Dataset,
      "foaf": Dataset,
      "time": Dataset,
      "dcat": Dataset,
      "oa": Dataset,
      "gr": Dataset,
      "rdf": Dataset,
      "cc": Dataset,
      "ssn": Dataset,
      "rr": Dataset,
      "rdfa": Dataset,
      "org": Dataset,
      "sosa": Dataset,
      "dc11": Dataset,
      "skos": Dataset,
      "dqv": Dataset,
      "prov": Dataset,
      "og": Dataset,
      "qb": Dataset,
      "rdfs": Dataset,
      "dc": Dataset,
      "ma": Dataset,
      "vcard": Dataset,
      "grddl": Dataset,
      "dcterms": Dataset,
      "skosxl": Dataset,
      "wgs": Dataset,
      "dbo": Dataset,
      "dbpedia": Dataset,
      "dbpprop": Dataset,
      "rss": Dataset,
      "cnt": Dataset,
      "vs": Dataset,
      "hydra": Dataset,
      "gn": Dataset,
      "gtfs": Dataset,
      "geo": Dataset,
      "geof": Dataset,
      "geor": Dataset
    }
    */
  })

Loading only some Ontologies as Datasets

const { vocabularies } = require('@zazuko/rdf-vocabularies')

vocabularies({ only: ['rdfs', 'owl', 'skos'] })
  .then((datasets) => {
    /* `datasets` is:
    {
      "owl": Dataset,
      "skos": Dataset,
      "rdfs": Dataset
    }
    */
  })

Getting a Readable Stream (Quad Stream)

const { vocabularies } = require('@zazuko/rdf-vocabularies')
const stream = await vocabularies({ stream: true, only: ['rdfs', 'owl', 'skos'] })

Expanding a Prefix

expanding means: 'xsd:dateTime' → 'http://www.w3.org/2001/XMLSchema#dateTime'. It is the opposite of shrinking:
expand(shrink('http://www.w3.org/2001/XMLSchema#dateTime')) === 'http://www.w3.org/2001/XMLSchema#dateTime'

There are two ways of expanding a prefix:

  • vocabularies.expand(prefixedTerm: String): String synchronous

    Expand without checks. It is similar to prefix.cc in the sense that prefix.cc would expand schema:ImNotInSchemaDotOrg to http://schema.org/ImNotInSchemaDotOrg.

  • vocabularies.expand(prefixedTerm: String, types: Array<String|NamedNode>): Promise<String> asynchronous

    Expand with type checks. types is an array of strings or NamedNodes. See this example:

    const { expand } = require('@zazuko/rdf-vocabularies')
    const Class = expand('rdfs:Class')
    const Property = expand('rdf:Property')
    
    // Will return <schema:person> expanded to `http://schema.org/Person`
    // iff the dataset contains either:
    //   <schema:Person> <rdf:type> <rdfs:Class>
    // or
    //   <schema:Person> <rdf:type> <rdf:Property>
    await expand('schema:Person', [Class, Property])

Shrinking an IRI

shrinking means: 'http://www.w3.org/2001/XMLSchema#dateTime' → 'xsd:dateTime'. It is the opposite of expanding:
shrink(expand('xsd:dateTime')) === 'xsd:dateTime'

  • vocabularies.shrink(iri: String): String

    Note: returns empty string when there is no corresponding prefix. Always check the output when using shrink with user-provided strings.

    const assert = require('assert')
    const { shrink } = require('@zazuko/rdf-vocabularies')
    
    assert(shrink('http://www.w3.org/2001/XMLSchema#dateTime') === 'xsd:dateTime')
    assert(shrink('http://example.com#nothing') === '')
    
    const iri = 'http://example.com#nothing'
    const stringToDisplay = shrink(iri) || iri
    console.log(stringToDisplay) // 'http://example.com#nothing'

Accessing Prefixes: vocabularies.prefixes

Getting an object with prefixes and their base URI:
(Returns this object.)

const { prefixes } = require('@zazuko/rdf-vocabularies')

console.log(prefixes)
/*
 {
  v: 'http://rdf.data-vocabulary.org/#',
  csvw: 'http://www.w3.org/ns/csvw#',
  sd: 'http://www.w3.org/ns/sparql-service-description#',

}
*/

Accessing Data Files from the Package

Accessing the N-Quads files:

const path = require('path')
console.log(path.resolve(require.resolve('@zazuko/rdf-vocabularies'), '..', 'ontologies', 'skos.nq'))

Versioning Scheme

This package is vendoring ontologies. These will be updated periodically.

This package is versioned using the date at which the data was pulled, e.g. @zazuko/rdf-vocabularies@2019.04.30.

Updating the vendored ontologies is achieved using npm run fetch in this package.

Adding new prefixes

New prefixes can be added by opening a pull request on Github. For new requests, first check if the creator/owner of the namespace defined a prefix. If not check prefix.cc. In case prefix.cc is ambiguous a discussion should be raised before the pull-requests gets integrated. Last thing to check are the predefined namespaces in the DBpedia SPARQL endpoint or other popular RDF resources like LOV. If you find one please refer to it in the pull request.

You can’t perform that action at this time.