Entities and URI structure - Draft Specification 1.0 version 1

The Jangle data model is divided up into four distinct concepts, referred to as entities, that are reflected as paths in any Jangle implementation. None of the entities are required, although it is expected that some entities are dependent on others to make sense.

Actors
User accounts in a particular system. In an ILMS, this could be the borrowers. In a repository system, this could be the authors or submitters. It is not expected that actors are dependent on the existence of any other entity types.
Jangle URI: http://jangle.org/vocab/Entities#Actor
Jangle path: /actors/
Collections
A predefined set of *any* of the other entity types. Collections cannot exist without other entities (although these entities could exist in a different Jangle service).
Jangle URI: http://jangle.org/vocab/Entities#Collection
Jangle path: /collections/
Items
A specific physical representation (such a single book on a shelf), location (a URL to a digital representation or specific file format) or range of holdings (for serials). Roughly analogous to FRBR's Item Entity. It is expected that Items would require the existence of Resources.
Jangle URI: http://jangle.org/vocab/Entities#Item
Jangle path: /items/
Resources
The primary objects being exposed by a Jangle implementation. In an ILMS, this would likely be the bibliographic records.
Jangle URI: http://jangle.org/vocab/Entities/#Resource
Jangle path: /resources/

Jangle URIs follow a strict design model. In implementations using the standard Jangle core/connector architecture, URIs conform to the following syntax:

http://example.org/{service_name}/{entity}/{id}/{relationship}

which, in reality, translates to:

At the entity paths (i.e. /actors/, /collections/, /items/, /resources/), it is expected that the results will be returned descending by last modified timestamp.

Feeds returned at the relationship level (http://demo.jangle.org/openbiblio/actors/1711/items/) would return entries with identifiers at the base level:

http://demo.jangle.org/openbiblio/items/000005779

A Jangle implementation that only conforms to the AtomPub syntax can return URIs that look like:

http://example.org/{entity}/{id}/{relationship}

Ids can be sent as a list (separated by commas or semicolons) or as a range (delimited by hyphens).

Only one entity can be requested at a time (i.e. only actors or items, not a list of actors and items) and there should be no expectation of preserving order (although this is desirable if possible).

Jangle core servers *must* have an AtomPub service document at /services/ (or provide redirection from /services/ to an AtomPub service document).

Entities can be filtered via Atom categories. Categories are defined with the following URL pattern:

http://demo.jangle.org/openbiblio/resources/-/opac

The lone hyphen in the path indicates that the rest of the path are categories. This means that category filters can only be placed on the last entity requested, so if the URI contains a relationship, such as /actors/1711/items/, the filter can only be applied to items, i.e. /actors/1711/items/-/holds.