@prefix :      <http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl#> .
@prefix timeindexedsituation: <http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl#> .
@prefix timeinterval: <http://www.ontologydesignpatterns.org/cp/owl/timeinterval.owl#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix cpannotationschema: <http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix situation: <http://www.ontologydesignpatterns.org/cp/owl/situation.owl#> .

timeindexedsituation:TimeIndexedSituation
        a                 owl:Class ;
        rdfs:comment      "A Situation that is explicitly indexed at some time for at least one entity." ;
        rdfs:isDefinedBy  <http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl> ;
        rdfs:label        "Time indexed situation"@en ;
        rdfs:subClassOf   situation:Situation ;
        rdfs:subClassOf   [ a                   owl:Restriction ;
                            owl:minCardinality  "1"^^xsd:nonNegativeInteger ;
                            owl:onProperty      timeindexedsituation:forEntity
                          ] ;
        rdfs:subClassOf   [ a                   owl:Restriction ;
                            owl:minCardinality  "1"^^xsd:nonNegativeInteger ;
                            owl:onProperty      timeindexedsituation:atTime
                          ] .

rdfs:isDefinedBy  a  owl:AnnotationProperty .

cpannotationschema:hasComponent
        a       owl:AnnotationProperty .

timeindexedsituation:isTimeIndexFor
        a                   owl:ObjectProperty ;
        rdfs:domain         timeinterval:TimeInterval ;
        rdfs:isDefinedBy    <http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl> ;
        rdfs:label          "is time index for"@en ;
        rdfs:range          timeindexedsituation:TimeIndexedSituation ;
        rdfs:subPropertyOf  situation:hasSetting ;
        owl:inverseOf       timeindexedsituation:atTime .

cpannotationschema:hasIntent
        a       owl:AnnotationProperty .

cpannotationschema:coversRequirements
        a       owl:AnnotationProperty .

situation:hasSetting  a  owl:ObjectProperty .

<http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl>
        a                               owl:Ontology ;
        rdfs:comment                    "A generic pattern usable for all situations that require a temporal indexing."^^rdf:PlainLiteral ;
        cpannotationschema:coversRequirements
                "At what time did a certain situation occur?,What situations occurred at a certain time?"^^rdf:PlainLiteral ;
        cpannotationschema:hasAuthor    "Aldo Gangemi"^^rdf:PlainLiteral ;
        cpannotationschema:hasComponent
                "TimeInterval"^^rdf:PlainLiteral ;
        cpannotationschema:hasConsequences
                "We can represent situations that have an explicit time parameter.\nIn principle, this can be done already with the Situation pattern, but this provides a handy composition with the TimeInterval pattern."^^rdf:PlainLiteral ;
        cpannotationschema:hasIntent    "To represent time indexed situations."^^rdf:PlainLiteral ;
        cpannotationschema:hasUnitTest  "SELECT ?x ?e ?t\nWHERE {\n?x :forEntity ?e .\n?x :atTime ?t }"^^rdf:PlainLiteral ;
        cpannotationschema:isSpecializationOf
                "Situation"^^rdf:PlainLiteral ;
        cpannotationschema:relatedCPs   "Time indexed participation,TimeIndexedClassification"^^rdf:PlainLiteral ;
        cpannotationschema:scenarios    "Mustafa's address in 2005 was in Brussels"^^rdf:PlainLiteral ;
        owl:imports                     <http://www.ontologydesignpatterns.org/cp/owl/timeinterval.owl> , <http://www.ontologydesignpatterns.org/cp/owl/situation.owl> , <http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl> ;
        owl:versionInfo                 "1.0\n- Revised, and added annotations for ODP publishing\n0.1\n- Created by Aldo Gangemi"^^xsd:string , "1.1 added rdfs:isDefinedBy for all named entities"^^xsd:string .

cpannotationschema:hasAuthor
        a       owl:AnnotationProperty .

rdfs:label  a   owl:AnnotationProperty .

cpannotationschema:hasConsequences
        a       owl:AnnotationProperty .

cpannotationschema:relatedCPs
        a       owl:AnnotationProperty .

rdfs:comment  a  owl:AnnotationProperty .

owl:Thing  a    owl:Class .

cpannotationschema:isSpecializationOf
        a       owl:AnnotationProperty .

owl:versionInfo  a  owl:AnnotationProperty .

timeindexedsituation:hasTimeIndexedSetting
        a                   owl:ObjectProperty ;
        rdfs:domain         owl:Thing ;
        rdfs:isDefinedBy    <http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl> ;
        rdfs:label          "has time indexed setting"@en ;
        rdfs:range          timeindexedsituation:TimeIndexedSituation ;
        rdfs:subPropertyOf  situation:hasSetting ;
        owl:inverseOf       timeindexedsituation:forEntity .

timeindexedsituation:forEntity
        a                   owl:ObjectProperty ;
        rdfs:domain         timeindexedsituation:TimeIndexedSituation ;
        rdfs:isDefinedBy    <http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl> ;
        rdfs:label          "for entity"@en ;
        rdfs:range          owl:Thing ;
        rdfs:subPropertyOf  situation:isSettingFor .

timeindexedsituation:atTime
        a                   owl:ObjectProperty ;
        rdfs:domain         timeindexedsituation:TimeIndexedSituation ;
        rdfs:isDefinedBy    <http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl> ;
        rdfs:label          "at time"@en ;
        rdfs:range          timeinterval:TimeInterval ;
        rdfs:subPropertyOf  situation:isSettingFor .

cpannotationschema:hasUnitTest
        a       owl:AnnotationProperty .

situation:Situation  a  owl:Class .

cpannotationschema:scenarios
        a       owl:AnnotationProperty .

timeinterval:TimeInterval
        a       owl:Class .

situation:isSettingFor
        a       owl:ObjectProperty .
