DESCRIPTION

Every language has libraries of some kind. Dallycot is no exception. Libraries come in two flavors: Perl, and linked open code.

This document describes the latter case of publishing linked open code as a library. See Dallycot::Library for how to create a Perl-based library.

For our purposes, we'll assume that you are publishing to a JSON-LD document. This makes the examples easier to write. There's no reason you can't publish as RDF/XML or some other serialization that supports RDF.

Dallycot allows you to embed code in a JSON document, making libraries even easier to write:

{
  "@context": [
    <https://www.dhdata.org/ns/linked-code/1.0.json>,
    {
      ns:l := <http://www.example.com/our-library#>,
      @base: <http://www.example.com/our-library#>,
    }
  ],
  "id": <http://www.example.com/our-library>,
  "a": "lc:Library",
  "label": "Example Library",
  "members": [
    repeated := (
      f(ff, s) :> [ s, ff(ff,s) ];
      f(f, _)
    ),
    ones := repeated(1)
  ]
}

Essentially, any assignments made in the scope of the array will become JSON objects with the identifier as the @id. If the scope were a JSON object instead of an array, then the same JSON objects would be made, but the @id would also be the property name in the JSON object.