OSLC Configuration Management defines an RDF vocabulary and a set of REST APIs for managing versions and configurations of linked data resources from multiple domains.
The specification:
While the scope of this specification does not include all of [[ITIL]] or [[ITSM]], a configuration as defined by this specification shall be able to contain or reference a set of Configuration Items (CIs) and their specific versions, and hence participate in the Identification, Control, and Monitoring activities of ITIL.
All the major “Artifacts” or “Entities” in OSLC domains are concept resources. Examples are defects, tasks, products, physical parts or items, projects, users, tests cases requirements, plans and so on. Like all resources, concept resources have URLs. Except in a few technical and specialized scenarios, URLs of concept resources are used throughout the system. “Entities” are addressed in HTTP messages via their concept resource URLs. Links are typically established using the URL of a concept resource.
The state (including the properties) of a concept resource can vary over time, or for other reasons. A versioned resource is a concept resource that keeps track of different states. A version resource is a resource that represents one specific state of a versioned resource. Not every past state is necessarily kept; a server may elide or discard states that are no longer referenced.
Not all resource types need be versioned - for example, OSLC change requests are typically not versioned. OSLC configurations and components need not be versioned.
For a versioned resource, a GET on the URI of a concept resource normally resolves that URI to an appropriate state of (version of) that concept resource for the appropriate configuration context (see later). The returned http resource will contain RDF statements about both the version resource and the concept resource; most statements should use the concept resource as the subject, because a version resource reflects the state of (properties of) the concept resource as it appeared at some time. Using the concept resource URI as the subject of RDF statements is more consistent with the handling of non-versioned resources; using the versioned resource URI as the subject of RDF statements requires more client knowledge of versioning.
For some PLM or PLE applications, it is useful to be able to represent incomplete or abstract hierarchies as partially-bound configurations, where not all versions of the concepts in that configuration have yet been determined. That determination may be made later in time, or dynamically based on parameters defined elsewhere in the system.
Since different versions reflecting different states of the concept resource may return conflicting RDF statements about the same subject, it is important for clients handling multiple versions (multiple configurations) to keep track of the relevant versions; this can be done using RDF named graphs.
As an example, GET https://example.com/conceptResourceA
in one configuration context might
return:
:conceptResourceA-version23 a oslc_config:VersionResource ; dcterms:isVersionOf :conceptResourceA . # dcterms:isVersionOf relates the version resource itself to its concept resource :conceptResourceA a :someType ; oslc_config:versionId "23" ; dcterms:title "Concept Resource A" ; :color "blue" ; dcterms:description "Concept resource A as it appears in the state with the URI :conceptResourceA-version23" .
while in a different configuration context it might return:
:conceptResourceA-version17 a oslc_config:VersionResource ; dcterms:isVersionOf :conceptResourceA . :conceptResourceA a :someType ; oslc_config:versionId "17" ; dcterms:title "Concept Resource A" ; :color "red" ; dcterms:description "Concept resource A as it appears in the state with the URI :conceptResourceA-version17" .
To keep track of which version represented which state of the conflicting color statements, use of RDF named graphs is recommended, as shown here using [[TriG]]:
GRAPH :conceptResourceA-version23 { :conceptResourceA-version23 a oslc_config:VersionResource ; dcterms:isVersionOf :conceptResourceA . :conceptResourceA a :someType ; oslc_config:versionId "23" ; dcterms:title "Concept Resource A" ; :color "blue" ; dcterms:description "Concept resource A as it appears in the state with the URI :conceptResourceA-version23" . } GRAPH :conceptResourceA-version17 { :conceptResourceA-version17 a oslc_config:VersionResource ; dcterms:isVersionOf :conceptResourceA . :conceptResourceA a :someType ; oslc_config:versionId "17" ; dcterms:title "Concept Resource A" ; :color "red" ; dcterms:description "Concept resource A as it appears in the state with the URI :conceptResourceA-version17" . }
Updating a versioned resource is typically performed in a stream, and usually results in the creation of a new version of the same concept resource. In some systems, a related batch of changes to one or more resources can be grouped into a change set.
Since concept resource URIs for versioned resources do not inherently identify a specific version of that resource, a client needs to provide a configuration context within which the concept resource is resolved to a specific version.
A client requests a specific configuration context in a header or a query string.
OSLC Configuration Management defines the namespace URI of http://open-services.net/ns/config#
with
a namespace prefix of oslc_config
.
All resources described in this specification are RDF resources. Servers SHOULD follow the [[!LDP]] recommendation for handling non-RDF data sources.
The following individuals have participated in the creation of this specification and are gratefully acknowledged:
David Honey (Persistent)
Ian Green (Persistent)
Geoff Clemm (Persistent)
Mike Loeffler (GM)
Martin Sarabura (PTC)