I · 09
Community Profiles
A Community Profile is a constrained subset of the OpenURL framework agreed by a community of implementers. SAP1 is the profile almost every scholarly resolver follows.
The OpenURL framework is large. A conformant implementation does not need to support every format, every transport, and every entity; instead, communities of implementers agree on a Community Profile that names the subset they will use. Z39.88-2004 establishes the profile mechanism and registers two initial profiles, both called San Antonio Profile: SAP1 (Level 1) and SAP2 (Level 2).
What a profile defines
A Community Profile names, for the community it covers:
- Which serialization format the community uses (KEV, XML, or both).
- Which transport mechanisms are required (By-Value, By-Reference, Inline).
- Which entities are required, optional, or disallowed.
- Which metadata formats are supported.
- Conformance requirements an implementation must meet.
Conformance, in the language of Z39.88-2004, is conformance to a profile, not to the framework as a whole.
SAP1 — San Antonio Profile, Level 1
SAP1 is the profile that nearly every scholarly link resolver in production today follows. Its defining choices are:
- KEV serialization only.
- By-Value transport over HTTP GET.
- Required Referent; all other entities optional.
- All four registered KEV metadata formats supported (journal, book, dissertation, patent).
When a database produces an OpenURL with ctx_ver=Z39.88-2004, KEV-encoded descriptors, and an HTTP GET to a resolver, it is producing an SAP1 request — whether or not it says so explicitly. SAP1 is the de-facto profile of scholarly OpenURL traffic.
SAP2 — San Antonio Profile, Level 2
SAP2 extends SAP1 to XML serialization and adds support for the By-Reference transport and HTTP POST. It is intended for richer or more constrained scenarios, such as machine-to-machine exchange of ContextObjects between systems. SAP2 is far less commonly seen in practice; XML ContextObjects appear largely in research and prototype settings.
The Maintenance Agency and profiles
The standard provides for the registration of additional Community Profiles by communities other than the original developers. The Maintenance Agency — OCLC, while the OpenURL Registry was active — was the body responsible for accepting and publishing such profiles. In practice, no additional profiles were registered before the Registry was retired in 2022. SAP1 and SAP2 remain the only published profiles.
Choosing a profile in practice
New implementations should target SAP1 unless there is a specific reason to do otherwise. Targeting SAP1 means:
- Emit and accept KEV.
- Use HTTP GET By-Value.
- Use the four registered KEV metadata formats for any of the resource types they cover.
- Include
ctx_ver=Z39.88-2004, anrft_val_fmt, and at least one Referent descriptor in every emitted ContextObject.