@prefix owl: . @prefix rdf: . @prefix xsd: . @prefix rdfs: . @prefix dc: . @prefix skos: . @prefix vann: . @prefix jane: . @prefix ottr: . rdf:type owl:Ontology ; owl:versionInfo "0.3" ; owl:versionIRI # ; owl:imports ; skos:editorialNote "The localnames of termtypes are unique, also when ignoring casing." # ; owl:priorVersion # ; owl:backwardCompatibleWith # ; owl:incompatibleWith ## See https://www.w3.org/TR/void/#dublin-core ; rdfs:label "Reasonable Ontology Templates - types" ; dc:title "Reasonable Ontology Templates - types" # ; rdfs:comment "description" # ; dc:description "description" ; dc:creator #; dc:contributor #; dc:publisher #; dc:source ; dc:date "2018-02-09" #; dc:created #; dc:issued #; dc:modified #; skos:changeNote # ; dc:rights . ############################################# ## Schema and entailment rules ottr:TermType a owl:Class . ottr:moreSpecificThan a owl:ObjectProperty, owl:ReflexiveProperty , owl:TransitiveProperty . rdfs:subClassOf a owl:TransitiveProperty , owl:ReflexiveProperty ; rdfs:subPropertyOf ottr:moreSpecificThan . # all types may be unified with their supertype. owl:disjointWith a owl:SymmetricProperty . [] # OWL reasoning rules, adapted # NOTE: do *not* use 'a' for rdf:type in rules. jane:rule "[symmetry: (?P rdf:type owl:SymmetricProperty) (?a ?P ?b) -> (?b ?P ?a) ]" , "[transitivity: (?P rdf:type owl:TransitiveProperty) (?a ?P ?b) (?b ?P ?c) -> (?a ?P ?c) ]" , "[inheritance-subproperty: (?P rdfs:subPropertyOf ?Q) (?a ?P ?b) -> (?a ?Q ?b) ]" , "[inheritance-disjoint: (?a owl:disjointWith ?b) (?c rdfs:subClassOf ?b) -> (?a owl:disjointWith ?c) ]" , "[reflexivity-onTermType: (?P rdf:type owl:ReflexiveProperty) (?a rdf:type ottr:TermType) -> (?a ?P ?a) ]" , """[allIncompatible-collection: (?ax rdf:type owl:AllDisjointClasses) (?ax owl:members ?list) (?a rdf:type ottr:TermType) (?b rdf:type ottr:TermType) listContains(?list, ?a) listContains(?list, ?b) notEqual(?a, ?b) -> (?a owl:disjointWith ?b) ]""" . ############################################# ## Types rdfs:Resource a ottr:TermType ; rdfs:label "RDFS Resource" ; rdfs:comment "All things described by RDF are called resources, and are instances of the class rdfs:Resource" . ottr:NonLiteral a ottr:TermType ; rdfs:label "NonLiteral" ; rdfs:subClassOf rdfs:Resource ; rdfs:comment "A NonLiteral is either a IRI or a BlankNode. It is not a Literal" . ottr:IRI a ottr:TermType ; rdfs:label "IRI" ; rdfs:subClassOf ottr:NonLiteral ; rdfs:comment "An IRI (Internationalized Resource Identifier) within an RDF graph is a Unicode string that conforms to the syntax defined in RFC 3987." . ottr:BlankNode a ottr:TermType ; rdfs:label "RDF Blank node" ; rdfs:subClassOf ottr:NonLiteral ; rdfs:comment "Blank nodes are disjoint from IRIs and literals. Otherwise, the set of possible blank nodes is arbitrary. RDF makes no reference to any internal structure of blank nodes." . owl:Class a ottr:TermType ; rdfs:label "OWL Class" ; rdfs:subClassOf ottr:NonLiteral ; ottr:moreSpecificThan ottr:IRI, ottr:BlankNode ; rdfs:comment "Classes can be understood as sets of individuals." . owl:NamedIndividual a ottr:TermType ; rdfs:label "OWL NamedIndividual" ; rdfs:subClassOf ottr:NonLiteral ; ottr:moreSpecificThan ottr:IRI, ottr:BlankNode ; rdfs:comment "Individuals in the OWL 2 syntax represent actual objects from the domain." . rdfs:Datatype a ottr:TermType ; rdfs:label "RDFS Datatype" ; rdfs:subClassOf ottr:NonLiteral ; ottr:moreSpecificThan ottr:IRI, ottr:BlankNode ; rdfs:comment "Datatypes are entities that refer to sets of data values. Thus, datatypes are analogous to classes, the main difference being that the former contain data values such as strings and numbers, rather than individuals" . rdf:Property a ottr:TermType ; rdfs:label "RDF Property" ; rdfs:subClassOf ottr:NonLiteral ; ottr:moreSpecificThan ottr:IRI . owl:ObjectProperty a ottr:TermType ; rdfs:label "OWL ObjectProperty" ; rdfs:subClassOf rdf:Property ; rdfs:comment "Object properties connect pairs of individuals." . owl:DatatypeProperty a ottr:TermType ; rdfs:label "OWL DatatypeProperty" ; rdfs:subClassOf rdf:Property ; rdfs:comment "Data properties connect individuals with literals. In some knowledge representation systems, functional data properties are called attributes." . owl:AnnotationProperty a ottr:TermType ; rdfs:label "OWL AnnotationProperty" ; rdfs:subClassOf rdf:Property ; rdfs:comment "Annotation properties can be used to provide an annotation for an ontology, axiom, or an IRI." . ### https://www.w3.org/TR/rdf11-concepts/#xsd-datatypes ### https://www.w3.org/TR/xmlschema11-2/#built-in-datatypes rdfs:Literal a ottr:TermType ; rdfs:label "RDFS Literal" ; rdfs:subClassOf rdfs:Resource ; rdfs:comment "The class rdfs:Literal is the class of literal values such as strings and integers" . ## strings xsd:string a ottr:TermType ; rdfs:label "XSD string" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Character strings (but not all Unicode character strings)" . xsd:normalizedString a ottr:TermType ; rdfs:label "XSD normalizedString" ; rdfs:subClassOf xsd:string ; rdfs:comment "Whitespace-normalized strings" . xsd:token a ottr:TermType ; rdfs:label "XSD token" ; rdfs:subClassOf xsd:normalizedString ; rdfs:comment "Tokenized strings" . xsd:language a ottr:TermType ; rdfs:label "XSD language" ; rdfs:subClassOf xsd:token ; rdfs:comment "Language tags per [BCP47]" . xsd:Name a ottr:TermType ; rdfs:label "XSD Name" ; rdfs:subClassOf xsd:token ; rdfs:comment "XML Names" . xsd:NCName a ottr:TermType ; rdfs:label "XSD NCName" ; rdfs:subClassOf xsd:Name ; rdfs:comment "XML NCNames" . xsd:NMTOKEN a ottr:TermType ; rdfs:label "XSD NMTOKEN" ; rdfs:subClassOf xsd:Name ; rdfs:comment "XML NMTOKENs" . ## numbers owl:real a ottr:TermType ; rdfs:label "OWL real" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "The set of all real numbers" . owl:rational a ottr:TermType ; rdfs:label "OWL rational" ; rdfs:subClassOf owl:real ; rdfs:comment "The set of all rational numbers" . xsd:decimal a ottr:TermType ; rdfs:label "XSD decimal" ; rdfs:subClassOf owl:rational ; rdfs:comment "Arbitrary-precision decimal numbers" . xsd:integer a ottr:TermType ; rdfs:label "XSD integer" ; rdfs:subClassOf xsd:decimal ; rdfs:comment "Arbitrary-size integer numbers" . xsd:long a ottr:TermType ; rdfs:label "XSD long" ; rdfs:subClassOf xsd:integer ; rdfs:comment "-9223372036854775808…+9223372036854775807 (64 bit)" . xsd:int a ottr:TermType ; rdfs:label "XSD int" ; rdfs:subClassOf xsd:long ; rdfs:comment "-2147483648…+2147483647 (32 bit)" . xsd:short a ottr:TermType ; rdfs:label "XSD short" ; rdfs:subClassOf xsd:int ; rdfs:comment "-32768…+32767 (16 bit)" . xsd:byte a ottr:TermType ; rdfs:label "XSD byte" ; rdfs:subClassOf xsd:short ; rdfs:comment "-128…+127 (8 bit)" . xsd:nonNegativeInteger a ottr:TermType ; rdfs:label "XSD nonNegativeInteger" ; rdfs:subClassOf xsd:integer ; rdfs:comment "Integer numbers ≥0" . xsd:positiveInteger a ottr:TermType ; rdfs:label "XSD positiveInteger" ; rdfs:subClassOf xsd:nonNegativeInteger ; rdfs:comment "Integer numbers >0" . xsd:unsignedLong a ottr:TermType ; rdfs:label "XSD unsignedLong" ; rdfs:subClassOf xsd:positiveInteger ; rdfs:comment "0…18446744073709551615 (64 bit)" . xsd:unsignedInt a ottr:TermType ; rdfs:label "XSD unsignedInt" ; rdfs:subClassOf xsd:unsignedLong ; rdfs:comment "0…4294967295 (32 bit)" . xsd:unsignedShort a ottr:TermType ; rdfs:label "XSD unsignedShort" ; rdfs:subClassOf xsd:unsignedInt ; rdfs:comment "0…65535 (16 bit)" . xsd:unsignedByte a ottr:TermType ; rdfs:label "XSD unsignedByte" ; rdfs:subClassOf xsd:unsignedShort ; rdfs:comment "0…255 (8 bit)" . xsd:nonPositiveInteger a ottr:TermType ; rdfs:label "XSD nonPositiveInteger" ; rdfs:subClassOf xsd:integer ; rdfs:comment "Integer numbers ≤0" . xsd:negativeInteger a ottr:TermType ; rdfs:label "XSD negativeInteger" ; rdfs:subClassOf xsd:nonPositiveInteger ; rdfs:comment "Integer numbers <0" . ## IEEE floating-point numbers xsd:double a ottr:TermType ; rdfs:label "XSD double" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "64-bit floating point numbers incl. ±Inf, ±0, NaN" . xsd:float a ottr:TermType ; rdfs:label "XSD float" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "32-bit floating point numbers incl. ±Inf, ±0, NaN" . ## Time and date xsd:date a ottr:TermType ; rdfs:label "XSD date" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Dates (yyyy-mm-dd) with or without timezone" . xsd:dateTime a ottr:TermType ; rdfs:label "XSD dateTime" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Date and time with or without timezone" . xsd:dateTimeStamp a ottr:TermType ; rdfs:label "XSD dateTimeStamp" ; rdfs:subClassOf xsd:dateTime ; rdfs:comment "Date and time with required timezone" . xsd:time a ottr:TermType ; rdfs:label "XSD time" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Times (hh:mm:ss.sss…) with or without timezone" . ## Recurring and partial dates xsd:gYear a ottr:TermType ; rdfs:label "XSD gYear" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Gregorian calendar year" . xsd:gMonth a ottr:TermType ; rdfs:label "XSD gMonth" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Gregorian calendar month" . xsd:gDay a ottr:TermType ; rdfs:label "XSD gDay" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Gregorian calendar day of the month" . xsd:gYearMonth a ottr:TermType ; rdfs:label "XSD gYearMonth" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Gregorian calendar year and month" . xsd:gMonthDay a ottr:TermType ; rdfs:label "XSD gMonthDay" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Gregorian calendar month and day" . xsd:duration a ottr:TermType ; rdfs:label "XSD duration" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Duration of time" . xsd:yearMonthDuration a ottr:TermType ; rdfs:label "XSD yearMonthDuration" ; rdfs:subClassOf xsd:duration ; rdfs:comment "Duration of time (months and years only)" . xsd:dayTimeDuration a ottr:TermType ; rdfs:label "XSD dayTimeDuration" ; rdfs:subClassOf xsd:duration ; rdfs:comment "Duration of time (days, hours, minutes, seconds only)" . ## Encoded binary data xsd:hexBinary a ottr:TermType ; rdfs:label "XSD hexBinary" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Hex-encoded binary data" . xsd:base64Binary a ottr:TermType ; rdfs:label "XSD base64Binary" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Base64-encoded binary data" . ## Misc xsd:boolean a ottr:TermType ; rdfs:label "XSD boolean" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "true, false" . xsd:anyURI a ottr:TermType ; rdfs:label "XSD anyURI" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "Absolute or relative URIs and IRIs" . rdf:HTML a ottr:TermType ; rdfs:label "RDF HTML " ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "HTML content" . rdf:XMLLiteral a ottr:TermType ; rdfs:label "RDF XMLLiteral" ; rdfs:subClassOf rdfs:Literal ; rdfs:comment "XML content" . [] a owl:AllDisjointClasses ; owl:members ( rdfs:Literal ottr:NonLiteral ) . [] a owl:AllDisjointClasses ; owl:members ( ottr:IRI ottr:BlankNode ) . [] a owl:AllDisjointClasses ; owl:members ( owl:Class rdf:Property owl:NamedIndividual rdfs:Datatype ) . [] a owl:AllDisjointClasses ; owl:members ( owl:ObjectProperty owl:DatatypeProperty owl:AnnotationProperty ) . [] a owl:AllDisjointClasses ; owl:members ( xsd:string owl:real xsd:double xsd:float xsd:date xsd:dateTime xsd:time xsd:gYear xsd:gMonth xsd:gDay xsd:gYearMonth xsd:gMonthDay xsd:duration xsd:hexBinary xsd:base64Binary xsd:boolean xsd:anyURI rdf:HTML rdf:XMLLiteral ) . [] a owl:AllDisjointClasses ; owl:members ( xsd:long xsd:nonNegativeInteger xsd:nonPositiveInteger ) . [] a owl:AllDisjointClasses ; owl:members ( xsd:dayTimeDuration xsd:yearMonthDuration ) . [] a owl:AllDisjointClasses ; owl:members ( xsd:language xsd:Name ) . [] a owl:AllDisjointClasses ; owl:members ( xsd:NCName xsd:NMTOKEN ) .