I · 06

Transports

Three transport mechanisms move a ContextObject from a source to a resolver: By-Value embeds it in the URL, By-Reference points to it, Inline embeds it in HTML.

Z39.88-2004 defines three transports — three ways a ContextObject may travel from a source to a resolver. In all three, the resolver ultimately receives a ContextObject; only the means of delivery differs.

By-Value

The entire ContextObject is serialized — usually as KEV — and embedded in the URL itself. This is by far the most common transport in practice: it is the form an institutional link resolver expects, and the form emitted by every major bibliographic database.

https://resolver.example.edu/openurl?
ctx_ver=Z39.88-2004
&rft_val_fmt=info:ofi/fmt:kev:mtx:journal
&rft.atitle=An+Article+Title
&rft.jtitle=A+Journal
&rft.date=2020
&rfr_id=info:sid/example.com:database

By-Value places a practical upper bound on the size of a ContextObject — implementations must respect HTTP URL length limits, typically a few thousand bytes. For most bibliographic citations this is more than enough.

By-Reference

The ContextObject is stored somewhere on the network, and the URL carries a pointer to it together with the format of the referenced object. The resolver fetches the object, then processes it.

https://resolver.example.edu/openurl?
ctx_ver=Z39.88-2004
&url_ver=Z39.88-2004
&rft_ref_fmt=info:ofi/fmt:xml:xsd:journal
&rft_ref=https://source.example.com/contextobjects/12345.xml
&rfr_id=info:sid/example.com:database

By-Reference is appropriate when the ContextObject is large (for example, an XML ContextObject containing several entities) or when the source wishes to retain control over the description after the URL has been emitted. It introduces an extra network round-trip and a dependence on the availability of the source.

Inline

The ContextObject is embedded in an HTML document — typically as the content of an HTML element whose attributes carry a serialized KEV string. The Inline transport is the mechanism behind COinS (Context Objects in Spans), the microformat used by Wikipedia and many other sites to embed citations in pages.

<span class="Z3988"
      title="ctx_ver=Z39.88-2004&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.atitle=An+Article+Title&rft.jtitle=A+Journal&rft.date=2020">
</span>

Browser-side tools and resolver extensions scan the page for elements bearing the recognised class, extract the ContextObject from the title attribute, and offer the user a resolution link. See OpenURL & COinS.

Choosing a transport

  • Use By-Value for normal database-to-resolver linking. This is what nearly every implementation expects and emits.
  • Use By-Reference for large ContextObjects, persistent reference repositories, or when the source needs to retain authority over the description.
  • Use Inline for embedding citations in HTML pages where a client-side tool will pick them up later.

Sources