@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix : <http://www.w3.org/2001/tag/fdesc54/webarch#> .
@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix mu: <modelling-utilities@@#> .

:Agent a owl:Class; s:label "Agent".
:Person a owl:Class; s:subClassOf :Agent; s:label "Person".

:Message a owl:Class; s:label "Message".
:Request a owl:Class; s:label "Request";
  s:subClassOf :Message.
:Response a owl:Class; s:label "Response";
  s:subClassOf :Message.


:party a owl:ObjectProperty; s:label "party";
  s:domain :Message; s:range :Agent.

:sender s:label "sender";
  s:subPropertyOf :party;
  s:domain :Message; s:range :Agent.

:userAgent s:label "user agent";
  s:domain :Person; s:range :Agent.

:before a owl:TransitiveProperty; s:label "before";
  s:comment "partial order on messages";
  s:domain :Message; s:range :Message.

:body a owl:FunctionalProperty; s:label "body";
  s:domain :Message;
  s:range :Representation.

:subject s:label "subject"; a owl:FunctionalProperty;
  s:domain :Message;
  s:range :URI.

###
# connecting logic with protocols...
:eval a owl:FunctionalProperty;
  s:label "eval";
  s:domain [ a owl:Class; s:label "Msg X URI";
    mu:components (:Message :URI)
    ];
  s:range :Resource.
