@prefix r: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#>.

@prefix dc: <http://purl.org/dc/elements/1.1/> . #@@ missing hash
@prefix sumo: <http://www.ontologyportal.org/translations/SUMO.owl#>.

@prefix mime: <mime#>.
@prefix fs: <semweb#>.
@prefix charmod: <charmod#>.

@prefix : <changePolicy#>.
@prefix ev: <ext-vers-uml.rdf#>. #hmm... .rdf

<> dc:title """change policy vocabulary and rules""";
 s:seeAlso <http://www.w3.org/2000/10/swap/util/changePolicy.n3>;
 owl:versionInfo "$Id: changePolicy.n3,v 1.1 2006/09/08 04:31:34 connolly Exp $";
 s:seeAlso <http://www.w3.org/2001/tag/webarch/#language-extensibility>,
   <http://www.w3.org/1999/10/nsuri>.


:effect s:label "effect"; sumo:partialOrderingOn ev:Communication;
  s:comment """sorta like :before, but using the esw:RoleNoun convention""".

# :Document is replaced by charmod:Text

:specification s:label "specification";
  a owl:InverseFunctionalProperty;
  s:comment """This property is for the case of unambiguous language
	specifications. If a spec specifies more than one language,
	don't use this property!""";
  s:domain ev:Language;
  s:range ev:Communication.



:TerminalStateCommunication s:label "terminal state communication";
 s:subClassOf :Communication;
 s:comment "permanently cacheable, a la http:expires never",
   "hmm... what about http:vary, conneg? excluded, for now".
{ [] :stateCommunication ?C1, ?C2.
  ?C1 :effect ?C2.
  ?C1 a :TerminalStateCommunication; :intent ?I.
} => { ?C2 :intent ?I }.

:stableSpecification;
  s:isDefinedBy <http://www.w3.org/1999/10/nsuri>;
  s:subPropertyOf :specification,
    :monotonicIntentSpecification, :monotonicImpactSpecification;
  s:comment """This namespace name may be reused in any update of the
	specification which is made for the purpose of clarification
	or bug fixes. These changes will be minor in that they do not
	(a) change the meaning or validity of existing documents
	written using the namespace, or (b) affect the operation of
	existing software written to process such documents.""";
  s:comment "hmm... 'the specification'?".

{
  [] :stateCommunication ?SPEC, ?REV.
  ?SPEC :effect ?REV.
  ?LANG :stableSpecification ?SPEC
} => { ?LANG :specification ?REV }.


:monotonicIntentSpecification s:subPropertyOf :specification;
    s:isDefinedBy <http://www.w3.org/1999/10/nsuri>;
    s:comment """the language will only get larger; once you
      write a correct document, its impact will remain constant""";
    s:comment """opposite: Warning: Until the specification reaches W3C
    Candidate Recommendation (CR) status, this namespace name may be
    reused by any update in such a way as to cause documents written
    using the namespace to become invalid or to change in meaning."""
  .
{
  [] :stateCommunication ?SPEC, ?REV.
  ?SPEC :effect ?REV.
  ?LITTLE :monotonicIntentSpecification ?SPEC.
  ?BIG :specification ?REV.
} => { ?LITTLE is :sublanguage of ?BIG }.

:monotonicImpactSpecification s:subPropertyOf :specification;
  s:comment """the language will only get smaller; once you have
   implemented a correct consumer, that consumer will remain correct.""";
    s:isDefinedBy <http://www.w3.org/1999/10/nsuri>;

    s:comment """opposite: 3. [Warning: Until the specification reaches W3C CR
    status, this namespace name may be reused by any update in such a
    way as to affect the operation of existing software written to
    process documents written according to this specification.]""".
{
  ?IR :stateCommunication ?SPEC, ?REV.
  ?SPEC :effect ?REV.
  ?LANG1 :monotonicImpactSpecification ?SPEC.
  ?LANG2 :specification ?REV.
} => { ?LANG2 is :sublanguage of ?LANG1 }.




