Purpose of Document
This document defines a standard format of URIs for identifying various SNOMED CT artefacts including Components and RF2-based releases. As a specific sub-case this includes URIs for formally identifying the SNOMED CT International Edition, extension Editions, and any specific Versions thereof. It does not cover mechanisms or URIs for non-SNOMED CT based terminologies, nor does it cover RF1-based artefacts.
It provides guidance on using the SNOMED CT URI Standard in the context of key motivating use-cases, including resolvability of the URIs.
Who Should Use This Standard?
The intended audience for this document includes both technical professionals who are involved in the development or implementation of terminology systems or healthcare information systems that use SNOMED CT, as well as academics, researchers, and others who are using SNOMED CT in the context of OWL and other Semantic Web technologies. This standard should be used in cases where it is required to uniquely identify SNOMED CT Concepts and other Components in contexts where URIs are expected, or where the interpretation of a code as an SCTID may be ambiguous. It should also be used when an unambiguous interoperable (machine-readable) identifier for an Edition (or a Version thereof) is required.
Scope of Document
This document provides a specification for the format and usage of SNOMED CT URIs. Such a URI might identify "A clinical idea to which a unique Concept Identifier has been assigned"1 . However, it does not specify or standardise any aspect of the representation of these things. Appropriate representations may vary greatly depending on use-case requirements and services utilising the URIs specified here are free to make their own choices. Sub-sections 1.1.4 and 3.1 have additional references and advice on this matter.
This specification relies on the semantics of SNOMED CT modules as defined in the Release Format 2 specification. Please see Section _5.4 Release Format 2 – Core Component Guide2 in the separate document "SNOMED CT® Technical Implementation Guide" for additional information on this subject.
The existing SCTID specification allows for the identification of a component across time (i.e., the rows in a table that represent the state of that component at a series of points in time). However, this is but one, low level, view of a component. There are other views of a component that are useful to be able to identify. These include, for example, a Concept including its Descriptions and Relationships in a given combination of SNOMED CT International and its Extensions, at a given point in time. Furthermore certain things, such as an Extension with all its dependent modules, are not themselves components, but also need a consistent identification mechanism. This not only includes the individual 6-monthly releases of the International version of SNOMED CT, but also specific national versions such as the Australian release, or the Swedish translation.
A number of groups have emphasised the need to come up with an approach that addresses the broad needs of implementers and offers the opportunities for use of a ubiquitous range of services using the URI as a common factor in the interfaces. This document describes a URI space that is intended to meet these requirements (and to evolve to meet others as they emerge) to avoid the proliferation of alternative conflicting schemes.
The URI space defined in this document uses the syntax defined in _IETF RFC6570 URI Templates3 . In addition, principals of good URI design were drawn from the W3C document _Cool URIs for the Semantic Web4 , and _Designing URI Sets for the UK Public Sector5 .
It should be further noted that, consistent with the advice of Tim Berners-Lee6 , the http scheme is used for these URIs. Furthermore, to be consistent with the W3C's TAG resolution of ISSUE-147 , since the URIs defined in this document identify _real-world objects and not information resources, resolving these URIs should not result in an HTTP response code of 200 ("OK") but rather, if anything at all, result in an HTTP response code of 303 ("See Other") to redirect to another URI that identifies a representation of the identified component. The intuition here is that it is not possible to return a real-world object (e.g., "The Eiffel Tower"), but only a representation of it (a picture, a geo-location, a Wikipedia page, etc.). In the same manner, it is only possible to return a representation of the identified SNOMED CT component, and not the component itself. Further discussion around this issue can be found in Section 4.4 Choosing between 202 and Hash8 of the aforementioned W3C document _Cool URIs for the Semantic Web.
Use Cases for URIs
The following use cases have guided the specification detailed in this document:
- The OWL representation of the stated form of SNOMED CT requires URIs to identify Concepts and Object Properties (Attributes). It has historically used its own de facto URI space for this purpose, and has not directly addressed the issues of a URI to identify the ontology itself or versioning.
- The CTS2 specification requires all Resources to be identified using URIs. It too has a proposed approach with a narrower scope, relative to SNOMED CT, than we have here.
- Within the HL7 community there is a need for a consistent mechanism to identify "versions" of SNOMED CT. An appropriate URI space could simply address this need in an extensible fashion.
While a register of canonical names for each Edition could be compiled and maintained, the module system developed for Release Format 2 already provides the required machinery to support unique naming of Editions and, in conjunction with a timestamp, specific versions of an Edition.
Section _220.127.116.11. Identification of Source Module9 of the Technical Implementation Guide says the following:
A moduleId field, assigned to each component, helps identify the origin of content and dependencies in a release. This enables Release Centres to compose a unified release from a number of different modules, yet still identify the origin of content within the release. For example, module ids may be used to differentiate SNOMED CT International content, Australian Medicines terminology and Pathology content within the Australian national release.
The module dependency reference set is used to track dependencies between (versioned) modules. Thus, by tracing the set of module dependencies from a specified (versioned) moduleId, one is able to identify all the content relevant to that (versioned) moduleId. Hence, a (versioned) moduleId can be used to uniquely identify a (versioned) Edition.10
A Note on Releases, Editions and Versions
In this document we capitalise the terms Release, Edition, and Version to indicate that they are being used with the following specific meanings:
This is used to mean a concrete set of files that is published by a Release Centre (including SNOMED International). This may include any combination of RF2 files, be they full, snapshot or delta, as well as documentation, cross-map files, alternate identifiers, and so forth. It may even be just the content that is additional to the SNOMED CT International Edition.
An Edition is the complete logical or conceptual set of terminology component, independent of any specific version. Examples include the SNOMED CT International Edition and the SNOMED CT-AU Edition.
This is used to refer to the actual content of an Extension's modules and all the modules they depend on. That is, the SNOMED CT content that is conceptually managed within the versioning scheme of RF2 that is based on the moduleId and effectiveTime fields of the release files. In particular, this includes content that pertains specifically to the meaning of Concepts and the contents of Reference Sets. Examples include the 20130731 version of the SNOMED CT International Edition and the 20130531 version of the SNOMED CT-AU Edition.
In some cases a Release comprises the union of two (or more) parts. For example, SNOMED CT with the addition of medication terminology. In the case that these parts are truly distinct, then distinct URIs can be used to identify them individually. In the case that they are not distinct (that is, there is a dependency with respect to their content), or one part should only be used in conjunction with the other, then this logical dependency should be explicitly managed. The Module (Version) Dependency Reference Set11 (see Section 1.1.5) is an appropriate mechanism for doing this and the SNOMED CT URI Guide contains additional discussion of this topic.
Statement of Impact
This Standard builds on a number of other elements of the SNOMED CT ecosystem. In particular its semantics are dependent on those of RF2 and the module and versioning mechanism.
This Standard defines a standard set of identifiers in the form of URIs. In order to maintain the integrity of the associated URI space, it is highly desirable for SNOMED International to maintain ownership of the snomed.info DNS domain. While not a requirement of this specification, it would be useful if the URIs defined by this specification, with respect to SNOMED CT Core, were resolvable.
The Perl script that generates OWL (and other) representations of SNOMED CT that name things with URIs should use URIs conforming to this specification. It is important to understand that the URIs in this specification do not identify the representation of an entity, but rather identify the entity itself. Section 3.1, Resolving SNOMED CT URIs, covers this issue in more detail.
|2||http://www.snomed.org/tig?t=trg2main_title Section number relative to July 2012 version.|
|4||Specifically the section URIs for Real-World Objects http://www.w3.org/TR/cooluris/#semweb|
|6||Linked Data http://www.w3.org/DesignIssues/LinkedData.html|
|8||Choosing between 303 and Hash www.w3.org/TR/cooluris#choosing|
|9||_ http://www.snomed.org/tig?t=trg2main_gen_idsource Section number relative July 2012 version.|
|10||In the case where a Release Centre has not organized what they consider to be an Edition to correspond to the transitive contents of a single moduleId, a single additional moduleId can be created that depends on the modules that comprise the Edition and then be subsequently used to identify that Edition. Note that it is non-conformant to release only part of a module.|
|11||900000000000534007 |Module dependency reference set||