PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX situation: <http://www.ontologydesignpatterns.org/cp/owl/situation.owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

situation:Situation a rdfs:Class ;
  rdfs:label "Situation"@en ;
  rdfs:comment """A view on a set of entities. It can be seen as a 'relational context', reifying a relation.
For example, a PlanExecution is a context including some actions executed by agents according to certain parameters and expected tasks to be achieved from a Plan; a DiagnosedSituation is a context of observed entities that is interpreted on the basis of a Diagnosis, etc.
Situation is also able to represent reified n-ary relations, where isSettingFor is the top-level relation for all binary projections of the n-ary relation. If used in a transformation pattern for n-ary relations, the designer should take care of:
- creating only one situation for each instance of an n-ary relation, otherwise the 'identification constraint' (Calvanese et al., IJCAI 2001) could be violated
- adding an 'exact cardinality' restriction corresponding to the arity of the n-ary relation, otherwise the designer would actually represent a polymorphic relation.""" .

situation:isSettingFor a rdf:Property ;
  rdfs:label "is setting for"@en ;
  rdfs:domain situation:Situation ;
  rdfs:range <https://w3id.org/linkml/Any> .

<https://w3id.org/linkml/Any> a rdfs:Class ;
  rdfs:comment "An unconstrained type or object" .

situation:hasSetting a rdf:Property ;
  rdfs:label "has setting"@en ;
  rdfs:comment "A relation between entities and situations, e.g. 'this morning I've prepared my coffee with a new fantastic Arabica' (i.e.: (an amount of) a new fantastic Arabica hasSetting the preparation of my coffee this morning)." ;
  rdfs:range situation:Situation .
