ruby-rdf / rdf-vocab

Common RDF Vocabularies
The Unlicense
50 stars 29 forks source link

rdf-vocab

Common OWL/RDFS Vocabularies for use with Ruby RDF.rb

Gem Version Build Status Coverage Status Gitter chat

Extensions

This gem extends RDF::Vocabulary with #to_ttl, #to_jsonld, and #to_html methods to create special-purpose vocabulary serializations. The HTML version is templated using a Haml template to allow output to be customized.

Also extends RDF::Vocabulary::Format with the gen-vocab command extension to the rdf executable.

Limiting vocabularies used for lookup

As loading vocabularies can dominate processing time, the RDF::Vocabulary.limit_vocabs method can be used to set a specific set of vocabularies over which to reason. For example:

RDF::Vocabulary.limit_vocabs(:rdf, :rdf, :schema)

will limit the vocabularies which are returned from RDF::Vocabulary.each, which is used for reasoning and other operations over vocabularies and terms.

Vocabularies

Installation

Add to your Gemfile

gem "rdf-vocab"

then

bundle install

Usage

require "rdf/vocab"

This will load all the vocabulary classes in the library.

Also adds the gen-vocab command to the rdf command-line executable to generate specifically generated output in Turtle, JSON-LD, and HTML+RDFa for either built-in or arbitrary vocabularies. Other output serialization formats are also supported as generic RDF Writers and may lack the vocabulary-specific formatting of Turtle, JSON-LD, and HTML+RDFa.

Adding new vocabularies

Vocabularies should only be added to this gem if they are widely used. An equivalent process can be used to add a vocabulary to an arbitrary Ruby application or gem if it is more application specific.

New vocabularies should be generated via a pull request after cloning from GitHub. Be sure to use a custom branch name before creating the PR.

After the PR is merged, it will be available in the develop branch until the next library release.

Example vocabulary definition

The following definition is for the EARL vocabulary, which uses the patch capability to address inherent problems in the vocabulary definition.

  earl: {
    uri: "http://www.w3.org/ns/earl#",
    source: "http://www.w3.org/ns/earl",
    patch: %{
      @prefix earl: <http://www.w3.org/ns/earl#>.
      @prefix owl: <http://www.w3.org/2002/07/owl#>.
      @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.

      AddNew {
        # Extends EARL to talk about collections of assertions
        earl:Report a rdfs:Class, owl:Class ;
          rdfs:label "Report" ;
          rdfs:comment "A collection of earl:Assertion" .
        earl:assertion a owl:ObjectProperty, rdfs:Property ;
          rdfs:label "assertion" ;
          rdfs:comment "Test Assertions associated with an earl:Report or earl:TestCase" ;
          rdfs:domain [
            a owl:Class ;
            owl:unionOf (earl:Report earl:TestCase)
          ] ;
          rdfs:range earl:Assertion .
      } .
    }
  }

Change Log

See Release Notes on GitHub

Authors

Contributing

This repository uses Git Flow to mange development and release activity. All submissions must be on a feature branch based on the develop branch to ease staging and integration.

License

This is free and unencumbered public domain software. For more information, see https://unlicense.org/ or the accompanying {file:LICENSE} file.