Back to SkosDev.
This is a proposed management system for the SKOS-Core RDF Schema.
SKOS RDF Schema Management Policy
Currently the SKOS-Core RDF schema resides under the namespace http://www.w3.org/2004/02/skos/core#.
It is proposed that there be no short or medium term versioning of this schema using different namespaces ... i.e. the terms of the schema will be maintained under the current namespace for the forseeable future.
Term Status Management
To manage the status of SKOS-Core RDF schema it is proposed that the Vocab Status RDF schema is used. ... This involves assigning every SKOS class and property a 'term_status' value, which is formally expressed as part of the schema.
For example ...
<rdfs:Class rdf:ID="ConceptScheme"> <rdfs:label>Concept Scheme</rdfs:label> <rdfs:comment>A concept scheme is a collection of concepts.</rdfs:comment> <ts:term_status>stable</ts:term_status> </rdfs:Class>
<rdf:Property rdf:ID="prefSymbol"> <rdfs:label>preferred symbol</rdfs:label> <rdfs:domain rdf:resource="&rdf;Resource"/> <rdfs:range rdf:resource="&foaf;Image"/> <rdfs:comment>Use this property to indicate a preferred symbolic representation for a resource.</rdfs:comment> <ts:term_status>testing</ts:term_status> </rdf:Property>
<rdf:Property rdf:ID="broaderInstantive"> <rdfs:label>instance of</rdfs:label> <rdfs:subPropertyOf rdf:resource="#broader"/> <rdfs:subPropertyOf rdf:resource="&rdf;type"/> <rdfs:comment>An extension of the 'broader' property to specify the instantiation (instance of) relationship between two concepts. This property is semantically equivalent to the 'rdf:type' property.</rdfs:comment> <ts:term_status>unstable</ts:term_status> </rdf:Property>
The 'term_status' property may take one of three values: 'unstable' 'testing' or 'stable'.
These values correspond to the 'alpha' 'beta' and 'stable' values given to software releases. However, it is not entirely clear what these values should imply for RDF schema terms.
I suggest the following definitions, as a starting point ... to be clarified and refined:
unstable ... this term has been newly added, and no testing has been carried out. Implementations using this term should realise that its meaning may be expected to change, or it may be removed at any time.
testing ... this term is currently undergoing testing and evaluation. This means that it will probably persist, although its exact meaning may change.
stable ... this term is stable and has been subjected to testing and evaluation. Implementers can expect this term to persist, and for its meaning to remain unchanged.
All status changes within SKOS RDF schemas will be reported on the SKOS change log.
Some comments from a mail from danbri:
> unstable ... this term has been newly added, and no testing has been carried > out. Implementations using this term should realise that its meaning may be > expected to change, or it may be removed at any time.
I think the 2nd part is key. Something could be unstable for months ('newly' is vague; do we read it as days, months, years...?). It is all about whether 3rd parties should build mission critical things that depend on its current form. The 'unstable' flag is a way of saying 'this might change', 'might be poorly defined', 'feedback welcomed'.
> testing ... this term is currently undergoing testing and evaluation. This > means that it will probably persist, although its exact meaning may change.
Yep, 'seems to be firming up.', 'gone beyond the raw proposal stage, might still change of course but that's life', 'we'll bear in mind the cost to early implementors when considering changes, but won't be overly bound by such concerns if wider interop / long term stability is at stake', etc.
> stable ... this term is stable and has been subjected to testing and > evaluation. Implementers can expect this term to persist, and for its > meaning to remain unchanged.
stable means 'No substantive (meaning changing) alterations planned', 'time to get a tattoo!', ...
Deprecation and Replacement of Terms
To manage the deprecation and replacement of terms within the schema, I propose the use of the
owl:[[DeprecatedProperty]] classes. ... the
owl:versionInfo property is then used to indicate what class or property should now be used instead.
For example ...
<owl:DeprecatedClass rdf:ID="TopConcept"> <rdfs:label>Top Concept</rdfs:label> <rdfs:comment>A concept that sits at the top of the concept hierarchy.</rdfs:comment> <owl:versionInfo>This class is now deprecated. To indicate the top concepts for a particular scheme, use the new skos:hasTopConcept property instead.</owl:versionInfo> </owl:DeprecatedClass>