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

owlstar:StatementInterpretationModifier a rdfs:Class .

owlstar:AllNumberInterpretation a rdfs:Class ;
  rdfs:label "all-number interpretation modifier"@en ;
  rdfs:comment """
    A modifier on a triple that causes the triple to be interpreted as an OWL QCR.
    Note: we may want to exclude the maxCardinality=0 scenario here as
    this results in an unintuitive graph.
  """ ;
  rdfs:subClassOf owlstar:LogicalInterpretation .

owlstar:LogicalInterpretation a rdfs:Class ;
  rdfs:label "logical interpretation modifier"@en ;
  rdfs:comment "grouping" .

rdf:Statement a rdfs:Class .

owlstar:statementModifier a rdf:Property ;
  rdfs:label "statement modifier"@en ;
  rdfs:comment "a property on a statement that induces a semantic interpretation of that statement" ;
  rdfs:domain rdf:Statement ;
  rdfs:range <https://w3id.org/linkml/Any> .

owlstar:context a rdf:Property ;
  rdfs:label "has context"@en ;
  rdfs:comment """
    maps a statement to a context in which the statement is true. An example of a context is a temporal instant or duration.
    TODO decide on mapping.
    One option is to use IKL: <<S>> os:context c -> (context (that S) c)
    Another is to add additional argument: <<s p o>> os:context c -> p(s,o,t)
  """ ;
  rdfs:domain rdf:Statement ;
  rdfs:range owlstar:StatementInterpretationModifier ;
  rdfs:subPropertyOf owlstar:statementModifier .

owlstar:interpretation a rdf:Property ;
  rdfs:label "logical interpretation modifier"@en ;
  rdfs:comment "" ;
  rdfs:domain rdf:Statement ;
  rdfs:range owlstar:StatementInterpretationModifier ;
  rdfs:subPropertyOf owlstar:statementModifier .

owlstar:probability a rdf:Property ;
  rdfs:label "probability"@en ;
  rdfs:comment "maps a statement to a probability in which the statement is true." ;
  rdfs:domain rdf:Statement ;
  rdfs:range xsd:number ;
  rdfs:subPropertyOf owlstar:statementModifier .

owlstar:AllSomeInterpretation a rdfs:Class ;
  rdfs:label "all-some interpretation modifier"@en ;
  rdfs:comment "A modifier on a triple that causes the triple to be interpreted as an all-some statement" ;
  rdfs:subClassOf owlstar:LogicalInterpretation .

owlstar:AllSomeAllTimesInterpretation a rdfs:Class ;
  rdfs:label "all-some all-times interpretation modifier"@en ;
  rdfs:comment "A modifier on a triple that causes the triple to be interpreted as an all-some statement holding for all times at which the subject exists" ;
  rdfs:subClassOf owlstar:LogicalInterpretation .

owlstar:SomeSomeInterpretation a rdfs:Class ;
  rdfs:label "some-some interpretation modifier"@en ;
  rdfs:comment "A modifier on a triple that causes the triple to be interpreted as a some-some statement" ;
  rdfs:subClassOf owlstar:LogicalInterpretation .

owlstar:AllOnlyInterpretation a rdfs:Class ;
  rdfs:label "all-only interpretation modifier"@en ;
  rdfs:comment "A modifier on a triple that causes the triple to be interpreted as an all-only statement" ;
  rdfs:subClassOf owlstar:LogicalInterpretation .

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

owlstar:example a rdf:Property ;
  rdfs:label "example"@en ;
  rdfs:comment "An example of an owlstar mapping" ;
  rdfs:range xsd:string .

owlstar:folMapping a rdf:Property ;
  rdfs:label "for mapping"@en ;
  rdfs:comment "An owlstar mapping from an RDF* structure to an FOL axiom. TBD: Prover9 syntax vs CL" ;
  rdfs:range xsd:string .

owlstar:owlMapping a rdf:Property ;
  rdfs:label "owl mapping"@en ;
  rdfs:comment """
  An owlstar mapping from an RDF* structure to an OWL axiom encoded using the standard OWL to RDF mapping.
  The syntax is SOURCE -> TARGET, where SOURCE is RDF* turtle syntax, and TARGET is RDF syntax.
  The mapping can thus be easily converted to a SPARQL construct.
  """ ;
  rdfs:range xsd:string .
