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.
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.