diff --git a/ontology/catalog-v001.xml b/ontology/catalog-v001.xml
new file mode 100644
index 0000000..7e627fc
--- /dev/null
+++ b/ontology/catalog-v001.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ontology/entity_soft7.ttl b/ontology/entity_soft7.ttl
index 048ef64..0b428d1 100644
--- a/ontology/entity_soft7.ttl
+++ b/ontology/entity_soft7.ttl
@@ -12,98 +12,179 @@
# Object Properties
#################################################################
-### http://www.quaat.com/ontologies#hasDimension
-:hasDimension rdf:type owl:ObjectProperty ;
- rdfs:domain :Entity ;
- rdfs:range :Dimension ;
- rdfs:label "hasDimension"@en .
-
-
-### http://www.quaat.com/ontologies#hasDimensionExpression
-:hasDimensionExpression rdf:type owl:ObjectProperty ;
- rdfs:domain :Shape ;
- rdfs:range :DimensionExpression ;
- rdfs:label "hasDimensionExpression"@en .
-
-
-### http://www.quaat.com/ontologies#hasNextShape
-:hasNextShape rdf:type owl:ObjectProperty ,
- owl:FunctionalProperty ,
- owl:InverseFunctionalProperty ,
- owl:AsymmetricProperty ,
- owl:IrreflexiveProperty ;
- rdfs:domain :Shape ;
- rdfs:range :Shape ;
- rdfs:label "hasNextShape"@en .
-
-
-### http://www.quaat.com/ontologies#hasProperty
-:hasProperty rdf:type owl:ObjectProperty ;
- rdfs:domain :Entity ;
- rdfs:range :Property ;
- rdfs:label "hasProperty"@en .
+### http://www.quaat.com/ontologies#hasDirectPart
+:hasDirectPart rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :hasPart ;
+ rdf:type owl:InverseFunctionalProperty ,
+ owl:AsymmetricProperty ,
+ owl:IrreflexiveProperty ;
+ rdfs:comment "A non-transitive parthood relation."@en ,
+ "Direct parthood allows to build strict parthood hierarchies. It also enables countability. By combining it with the topological isConnectedWith, ordering can be defined."@en ,
+ "The whole cannot be a direct part of itself (direct parthood is a proper)."@en ;
+ rdfs:label "hasDirectPart"@en .
+
+
+### http://www.quaat.com/ontologies#hasFirstDimension
+:hasFirstDimension rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :hasFirstElement ;
+ rdfs:domain :Entity ;
+ rdfs:range :Dimension ;
+ rdfs:comment "Refers to the first dimension of an entity."@en ;
+ rdfs:label "hasFirstDimension"@en .
+
+
+### http://www.quaat.com/ontologies#hasFirstDimensionValue
+:hasFirstDimensionValue rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :hasFirstElement ;
+ rdfs:domain :Object ;
+ rdfs:range :DimensionValue ;
+ rdfs:comment "Refers to the first dimension value of a data object."@en .
+
+
+### http://www.quaat.com/ontologies#hasFirstElement
+:hasFirstElement rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :hasDirectPart ;
+ rdf:type owl:InverseFunctionalProperty ,
+ owl:AsymmetricProperty ,
+ owl:IrreflexiveProperty ;
+ rdfs:domain :Arrangement ;
+ rdfs:range :OrderedElement ;
+ rdfs:comment "The first of an ordered set of direct parts."@en ;
+ rdfs:label "hasFirstElement"@en .
+
+
+### http://www.quaat.com/ontologies#hasFirstProperty
+:hasFirstProperty rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :hasFirstElement ;
+ rdfs:domain :Entity ;
+ rdfs:range :Property ;
+ rdfs:comment "Refers to the first property value of an entity."@en .
+
+
+### http://www.quaat.com/ontologies#hasFirstPropertyValue
+:hasFirstPropertyValue rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :hasFirstElement ;
+ rdfs:domain :Object ;
+ rdfs:range :PropertyValue ;
+ rdfs:comment "Refers to the first property value of a data object."@en .
+
+
+### http://www.quaat.com/ontologies#hasModel
+:hasModel rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :hasSign ;
+ rdfs:comment "The object of 'hasModel' is a model that is a simplified representation of the subject aimed to assist describing the subject or to predict its behaviour."@en ;
+ rdfs:label "hasModel"@en .
+
+
+### http://www.quaat.com/ontologies#hasNextElement
+:hasNextElement rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :isConnectedWith ;
+ rdf:type owl:AsymmetricProperty ,
+ owl:IrreflexiveProperty ;
+ rdfs:domain :OrderedElement ;
+ rdfs:range :OrderedElement ;
+ rdfs:comment "The next element in an ordered list."@en ;
+ rdfs:label "hasNextElement"@en .
+
+
+### http://www.quaat.com/ontologies#hasPart
+:hasPart rdf:type owl:ObjectProperty ,
+ owl:TransitiveProperty ;
+ rdfs:comment "Generic parthood relation. Defines parts of a whole."@en ,
+ "The whole may be a part of itself."@en ;
+ rdfs:label "hasPart"@en .
### http://www.quaat.com/ontologies#hasShape
-:hasShape rdf:type owl:ObjectProperty ,
- owl:FunctionalProperty ;
+:hasShape rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :hasDirectPart ;
rdfs:domain :Property ;
rdfs:range :Shape ;
+ rdfs:comment "The shape of a property."@en ;
rdfs:label "hasShape"@en .
+### http://www.quaat.com/ontologies#hasSign
+:hasSign rdf:type owl:ObjectProperty ;
+ rdfs:comment "In EMMO, a sign would relate to what it stand for through a semiotic process."@en ,
+ "The object of the 'hasSign' relation is a sign that stands for the subject."@en ;
+ rdfs:label "hasSign"@en .
+
+
### http://www.quaat.com/ontologies#hasType
-:hasType rdf:type owl:ObjectProperty ,
- owl:FunctionalProperty ;
+:hasType rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :hasDirectPart ;
rdfs:domain :Property ;
rdfs:range :Type ;
+ rdfs:comment "The type of a property."@en ;
rdfs:label "hasType"@en .
-### http://www.quaat.com/ontologies#hasUnit
-:hasUnit rdf:type owl:ObjectProperty ,
- owl:FunctionalProperty ;
- rdfs:domain :Property ;
- rdfs:range :Unit ;
- rdfs:label "hasUnit"@en .
+### http://www.quaat.com/ontologies#isConnectedWith
+:isConnectedWith rdf:type owl:ObjectProperty ,
+ owl:SymmetricProperty ;
+ rdfs:comment "Generic topological relation. Defines how things are connected with each other."@en ;
+ rdfs:label "isConnectedWith"@en .
+
+
+### http://www.quaat.com/ontologies#isInstanceOf
+:isInstanceOf rdf:type owl:ObjectProperty ;
+ rdfs:subPropertyOf :hasModel ;
+ rdfs:label "isInstanceOf"@en .
#################################################################
# Data properties
#################################################################
+### http://www.quaat.com/ontologies#hasBoolValue
+:hasBoolValue rdf:type owl:DatatypeProperty ;
+ rdfs:range xsd:boolean ;
+ rdfs:comment "hasBoolValue"@en .
+
+
### http://www.quaat.com/ontologies#hasDescription
-:hasDescription rdf:type owl:DatatypeProperty ,
- owl:FunctionalProperty ;
+:hasDescription rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :hasStringValue ;
+ rdf:type owl:FunctionalProperty ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :Dimension
- :Entity
+ :Object
:Property
)
] ;
rdfs:range xsd:string ;
- rdfs:comment "An human readable description."@en ;
+ rdfs:comment "A human readable description."@en ;
rdfs:label "hasDescription"@en .
-### http://www.quaat.com/ontologies#hasDimensionRef
-:hasDimensionRef rdf:type owl:DatatypeProperty ;
- rdfs:domain :DimensionExpression ;
- rdfs:range xsd:string ;
- rdfs:comment "Refers to a label of a dimension belonging to the same entity."@en ;
- rdfs:label "hasDimensionRef"@en .
+### http://www.quaat.com/ontologies#hasExpression
+:hasExpression rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :hasStringValue ;
+ rdfs:domain :Shape ;
+ rdfs:range xsd:string ;
+ rdfs:comment "A mathematical expression for the shape of a property along one dimension. It is expressed as a function of the entity dimension names."@en ;
+ rdfs:label "hasExpression"@en .
+
+
+### http://www.quaat.com/ontologies#hasFloatValue
+:hasFloatValue rdf:type owl:DatatypeProperty ;
+ rdfs:comment "Floats are a subset of reals that can be written as `i * 2^n`, where `i` and `n` are integers."@en ,
+ "Has a floating point value."@en ,
+ "There is not exact match for floats with arbitrary precision in the xsd namespace, but xsd:decimal is close. xsd:double may in most cases be a good substitute."@en ;
+ rdfs:label "hasFloatValue"@en .
-### http://www.quaat.com/ontologies#hasExpressionString
-:hasExpressionString rdf:type owl:DatatypeProperty ;
- rdfs:domain :Shape ;
- rdfs:range xsd:string ;
- rdfs:label "hasExpressionString"@en .
+### http://www.quaat.com/ontologies#hasIntegerValue
+:hasIntegerValue rdf:type owl:DatatypeProperty ;
+ rdfs:range xsd:integer ;
+ rdfs:label "hasIntegerValue"@en .
### http://www.quaat.com/ontologies#hasLabel
-:hasLabel rdf:type owl:DatatypeProperty ,
- owl:FunctionalProperty ;
+:hasLabel rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :hasStringValue ;
+ rdf:type owl:FunctionalProperty ;
rdfs:domain [ rdf:type owl:Class ;
owl:unionOf ( :Dimension
:Property
@@ -115,44 +196,162 @@
rdfs:label "hasLabel"@en .
+### http://www.quaat.com/ontologies#hasMeta
+:hasMeta rdf:type owl:DatatypeProperty ;
+ rdfs:domain :Object ;
+ rdfs:range xsd:anyURI ;
+ rdfs:comment "An URI that uniquely identifies the metadata of the Object."@en ;
+ rdfs:label "hasMeta"@en .
+
+
+### http://www.quaat.com/ontologies#hasObject
+:hasObject rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :hasStringValue ;
+ rdfs:comment "Refers to the object of a relation."@en ;
+ rdfs:label "hasObject"@en .
+
+
+### http://www.quaat.com/ontologies#hasPredicate
+:hasPredicate rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :hasStringValue ;
+ rdfs:comment "Refers to the predicate of a relation."@en ;
+ rdfs:label "hasPredicate"@en .
+
+
+### http://www.quaat.com/ontologies#hasStringValue
+:hasStringValue rdf:type owl:DatatypeProperty ;
+ rdfs:range xsd:string ;
+ rdfs:label "hasStringValue"@en .
+
+
+### http://www.quaat.com/ontologies#hasSubject
+:hasSubject rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :hasStringValue ;
+ rdfs:comment "Refers to the subject of a relation."@en ;
+ rdfs:label "hasSubject"@en .
+
+
### http://www.quaat.com/ontologies#hasURI
:hasURI rdf:type owl:DatatypeProperty ,
owl:FunctionalProperty ;
- rdfs:domain :Entity ;
+ rdfs:domain :Object ;
rdfs:range xsd:anyURI ;
rdfs:label "hasURI"@en .
-### http://www.quaat.com/ontologies#hasUnitSymbol
-:hasUnitSymbol rdf:type owl:DatatypeProperty ,
- owl:FunctionalProperty ;
- rdfs:domain :Unit ;
- rdfs:range xsd:string ;
- rdfs:comment """Examples:
+### http://www.quaat.com/ontologies#hasUUID
+:hasUUID rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :hasStringValue ;
+ rdfs:domain :Object ;
+ rdfs:range xsd:string ;
+ rdfs:comment "An UUID that uniquely identifies an object."@en ;
+ rdfs:label "hasUUID"@en .
+
+
+### http://www.quaat.com/ontologies#hasUnit
+:hasUnit rdf:type owl:DatatypeProperty ;
+ rdfs:subPropertyOf :hasStringValue ;
+ rdf:type owl:FunctionalProperty ;
+ rdfs:range xsd:string ;
+ rdfs:comment """Examples:
m
m/s"""@en ,
- "Refer to a valid unit symbol."@en .
+ "Refer to a valid unit symbol."@en ;
+ rdfs:label "hasUnit"@en .
+
+
+### http://www.quaat.com/ontologies#hasValue
+:hasValue rdf:type owl:DatatypeProperty ;
+ rdfs:range rdf:PlainLiteral ;
+ rdfs:label "Generic literal value."@en ,
+ "hasValue"@en .
#################################################################
# Classes
#################################################################
+### http://www.quaat.com/ontologies#Arrangement
+:Arrangement rdf:type owl:Class ;
+ rdfs:subClassOf [ rdf:type owl:Restriction ;
+ owl:onProperty :hasDirectPart ;
+ owl:someValuesFrom :OrderedElement
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasFirstElement ;
+ owl:someValuesFrom :OrderedElement
+ ] ;
+ rdfs:comment "A container whos direct parts are ordered elements."@en ;
+ rdfs:label "Arrangement"@en .
+
+
+### http://www.quaat.com/ontologies#Array
+:Array rdf:type owl:Class ;
+ rdfs:subClassOf :Arrangement ,
+ :DataModel ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasDirectPart ;
+ owl:someValuesFrom [ rdf:type owl:Class ;
+ owl:unionOf ( :Array
+ :Type
+ )
+ ]
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasFirstElement ;
+ owl:someValuesFrom [ rdf:type owl:Class ;
+ owl:unionOf ( :Array
+ :Type
+ )
+ ]
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasPart ;
+ owl:someValuesFrom :Type
+ ] ;
+ rdfs:comment "An ordered, possible multi-dimensional, container of data values - all of the same type."@en .
+
+
### http://www.quaat.com/ontologies#Blob
:Blob rdf:type owl:Class ;
+ owl:equivalentClass [ rdf:type owl:Restriction ;
+ owl:onProperty :hasStringValue ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:string
+ ] ;
rdfs:subClassOf :Type ;
+ rdfs:comment "A binary blob who's length is specified by Size."@en ;
rdfs:label "Blob"@en .
### http://www.quaat.com/ontologies#Bool
:Bool rdf:type owl:Class ;
+ owl:equivalentClass [ rdf:type owl:Restriction ;
+ owl:onProperty :hasBoolValue ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:boolean
+ ] ;
rdfs:subClassOf :Type ;
+ rdfs:comment "A boolian: true or false."@en ;
rdfs:label "Bool"@en .
+### http://www.quaat.com/ontologies#DataModel
+:DataModel rdf:type owl:Class ;
+ rdfs:comment "The superclass of all individuals that are part of a data model."@en ;
+ rdfs:label "DataModel"@en .
+
+
### http://www.quaat.com/ontologies#Dimension
:Dimension rdf:type owl:Class ;
- rdfs:subClassOf [ rdf:type owl:Restriction ;
+ rdfs:subClassOf :OrderedElement ,
+ :Type ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasNextElement ;
+ owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :Dimension
+ ] ,
+ [ rdf:type owl:Restriction ;
owl:onProperty :hasLabel ;
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
owl:onDataRange xsd:string
@@ -162,75 +361,170 @@ m/s"""@en ,
owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
owl:onDataRange xsd:string
] ;
+ rdfs:comment "Describes a dimension - characterised by a label and a human description."@en ;
rdfs:label "Dimension"@en .
### http://www.quaat.com/ontologies#DimensionExpression
:DimensionExpression rdf:type owl:Class ;
- rdfs:subClassOf [ rdf:type owl:Restriction ;
- owl:onProperty :hasDimensionRef ;
- owl:someValuesFrom xsd:string
- ] ,
+ rdfs:subClassOf :DataModel ,
[ rdf:type owl:Restriction ;
- owl:onProperty :hasExpressionString ;
+ owl:onProperty :hasExpression ;
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
owl:onDataRange xsd:string
] ;
rdfs:comment """A mathematical expression that has dimension references as variables. The name of these variables should equal an existing dimension label of the current Entity.
-The `hasExpressionString` restriction relates to the expression itself as a string.
-
-The `hasDimensionRef` restrictions relates to the dimension reference variables."""@en ,
+The `hasExpression` restriction relates to the expression itself as a string."""@en ,
"Valid examples include \"N\", \"N+1\" and \"N*M\" given that `N` and `M` are dimension labels of the current Entity."@en ;
rdfs:label "DimensionExpression"@en .
+### http://www.quaat.com/ontologies#DimensionValue
+:DimensionValue rdf:type owl:Class ;
+ rdfs:subClassOf :DataModel ,
+ :Integer ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isInstanceOf ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :Dimension
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasNextElement ;
+ owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :DimensionValue
+ ] ;
+ rdfs:comment "The value of a dimension. It corresponds to the number of elements along a given dimension."@en ;
+ rdfs:label "DimensionValue"@en .
+
+
### http://www.quaat.com/ontologies#Entity
:Entity rdf:type owl:Class ;
- rdfs:subClassOf [ rdf:type owl:Restriction ;
- owl:onProperty :hasDimension ;
+ rdfs:subClassOf :Object ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasDirectPart ;
owl:someValuesFrom :Dimension
] ,
[ rdf:type owl:Restriction ;
- owl:onProperty :hasProperty ;
+ owl:onProperty :hasDirectPart ;
owl:someValuesFrom :Property
] ,
[ rdf:type owl:Restriction ;
- owl:onProperty :hasURI ;
+ owl:onProperty :hasFirstDimension ;
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
- owl:onDataRange xsd:anyURI
+ owl:onClass :Dimension
] ,
[ rdf:type owl:Restriction ;
- owl:onProperty :hasDescription ;
- owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
- owl:onDataRange xsd:string
+ owl:onProperty :hasFirstProperty ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :Property
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasURI ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:anyURI
] ;
+ rdfs:comment "Entities should have a human description. However, this description would be a PropertyValue of the Entity defined by a Property of the meta-metadata (or metadata schema) that the Entity is an instance of. Hence, the description is not explicitely declared in the ontology."@en ,
+ "Metadata describing data objects (instances of the entity)."@en ;
rdfs:label "Entity"@en .
### http://www.quaat.com/ontologies#Float
:Float rdf:type owl:Class ;
+ owl:equivalentClass [ rdf:type owl:Restriction ;
+ owl:onProperty :hasFloatValue ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:double
+ ] ;
rdfs:subClassOf :Type ;
+ rdfs:comment "A floating point number with unspecified precision."@en ;
rdfs:label "Float"@en .
### http://www.quaat.com/ontologies#Integer
:Integer rdf:type owl:Class ;
+ owl:equivalentClass [ rdf:type owl:Restriction ;
+ owl:onProperty :hasIntegerValue ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:integer
+ ] ;
rdfs:subClassOf :Type ;
+ rdfs:comment "An integer represented by an unspecified number of bytes."@en ;
rdfs:label "Integer"@en .
+### http://www.quaat.com/ontologies#Object
+:Object rdf:type owl:Class ;
+ rdfs:subClassOf :Arrangement ,
+ :DataModel ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasDirectPart ;
+ owl:someValuesFrom :DimensionValue
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasDirectPart ;
+ owl:someValuesFrom :PropertyValue
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasFirstDimensionValue ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :DimensionValue
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasFirstPropertyValue ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :PropertyValue
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isInstanceOf ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :Entity
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasMeta ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:anyURI
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasUUID ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:string
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasURI ;
+ owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:anyURI
+ ] ;
+ rdfs:comment "An instance of a data item or metadata."@en ,
+ "An object is described by an entity (metadata). Entities themselves are objects described by a meta-entity (schema or meta-metadata)."@en ,
+ "It is an Arrangement because its dimension and property values are ordered."@en ;
+ rdfs:label "Object"@en .
+
+
+### http://www.quaat.com/ontologies#OrderedElement
+:OrderedElement rdf:type owl:Class ;
+ rdfs:subClassOf [ rdf:type owl:Restriction ;
+ owl:onProperty :hasNextElement ;
+ owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :OrderedElement
+ ] ;
+ rdfs:comment "An element in an ordered list of elements."@en ;
+ rdfs:label "OrderedElement"@en .
+
+
### http://www.quaat.com/ontologies#Property
:Property rdf:type owl:Class ;
- rdfs:subClassOf [ rdf:type owl:Restriction ;
+ rdfs:subClassOf :OrderedElement ,
+ :Type ,
+ [ rdf:type owl:Restriction ;
owl:onProperty :hasType ;
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
owl:onClass :Type
] ,
[ rdf:type owl:Restriction ;
- owl:onProperty :hasUnit ;
- owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
- owl:onClass :Unit
+ owl:onProperty :hasNextElement ;
+ owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :Property
] ,
[ rdf:type owl:Restriction ;
owl:onProperty :hasShape ;
@@ -242,79 +536,138 @@ The `hasDimensionRef` restrictions relates to the dimension reference variables.
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
owl:onDataRange xsd:string
] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasUnit ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:string
+ ] ,
[ rdf:type owl:Restriction ;
owl:onProperty :hasDescription ;
owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
owl:onDataRange xsd:string
] ;
+ rdfs:comment "Describes a property, characterised by a label, type, unit, shape and a human description. The unit, shape and description are optional."@en ;
rdfs:label "Property"@en .
+### http://www.quaat.com/ontologies#PropertyValue
+:PropertyValue rdf:type owl:Class ;
+ rdfs:subClassOf :DataModel ,
+ [ rdf:type owl:Class ;
+ owl:unionOf ( :Array
+ :Type
+ )
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isInstanceOf ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :Property
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasNextElement ;
+ owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :PropertyValue
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasValue ;
+ owl:someValuesFrom rdf:PlainLiteral
+ ] ;
+ rdfs:comment "The value of a property. It can either be a scalar (type) or an array of scalars."@en ;
+ rdfs:label "PropertyValue"@en .
+
+
### http://www.quaat.com/ontologies#Relation
:Relation rdf:type owl:Class ;
- rdfs:subClassOf :Type ;
+ rdfs:subClassOf :Type ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasObject ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:string
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasPredicate ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:anyURI
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasSubject ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:anyURI
+ ] ;
+ rdfs:comment "A (subject-predicate-object) triple."@en ;
rdfs:label "Relation"@en .
### http://www.quaat.com/ontologies#Shape
:Shape rdf:type owl:Class ;
- rdfs:subClassOf [ rdf:type owl:Restriction ;
- owl:onProperty :hasDimensionExpression ;
- owl:someValuesFrom :DimensionExpression
+ rdfs:subClassOf :Arrangement ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasDirectPart ;
+ owl:someValuesFrom :ShapeElement
] ,
[ rdf:type owl:Restriction ;
- owl:onProperty :hasNextShape ;
- owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
- owl:onClass :Shape
+ owl:onProperty :hasFirstElement ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :ShapeElement
] ;
+ owl:disjointWith :Type ;
+ rdfs:comment "Shape of a property. It is an ordered list of shape values."@en ;
rdfs:label "Shape"@en .
+### http://www.quaat.com/ontologies#ShapeElement
+:ShapeElement rdf:type owl:Class ;
+ rdfs:subClassOf :DataModel ,
+ :OrderedElement ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasDirectPart ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :DimensionExpression
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasNextElement ;
+ owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onClass :ShapeElement
+ ] ;
+ rdfs:comment "Element in a list of shapes."@en ;
+ rdfs:label "ShapeElement"@en .
+
+
### http://www.quaat.com/ontologies#String
:String rdf:type owl:Class ;
+ owl:equivalentClass [ rdf:type owl:Restriction ;
+ owl:onProperty :hasStringValue ;
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
+ owl:onDataRange xsd:string
+ ] ;
rdfs:subClassOf :Type ;
+ rdfs:comment """An UTF-encoded and NUL-terminated string.
+
+The Size can be calculated from the length of initial sequence of non-NUL characters plus the terminating NUL character."""@en ;
rdfs:label "String"@en .
### http://www.quaat.com/ontologies#Type
:Type rdf:type owl:Class ;
+ rdfs:subClassOf :DataModel ;
+ rdfs:comment "A data type whos individual are the actual values. It is characterised by its subclasses and its size (number of bytes one element of this type occupies in memory)."@en ;
rdfs:label "Type"@en .
-### http://www.quaat.com/ontologies#Unit
-:Unit rdf:type owl:Class ;
- rdfs:subClassOf [ rdf:type owl:Restriction ;
- owl:onProperty :hasUnitSymbol ;
- owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
- owl:onDataRange xsd:string
- ] ;
- rdfs:label "Unit"@en .
-
-
#################################################################
# General axioms
#################################################################
[ rdf:type owl:AllDisjointClasses ;
- owl:members ( :Blob
- :Bool
+ owl:members ( :Bool
+ :Dimension
:Float
:Integer
+ :Property
:Relation
:String
)
] .
-[ rdf:type owl:AllDisjointClasses ;
- owl:members ( :Dimension
- :Entity
- :Property
- :Shape
- :Type
- :Unit
- )
-] .
-
-
-### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi
+### Generated by the OWL API (version 4.2.8.20170104-2310) https://github.com/owlcs/owlapi
diff --git a/ontology/example_individual.ttl b/ontology/example_individual.ttl
new file mode 100644
index 0000000..bfca47e
--- /dev/null
+++ b/ontology/example_individual.ttl
@@ -0,0 +1,224 @@
+@prefix : .
+@prefix owl: .
+@prefix rdf: .
+@prefix xml: .
+@prefix xsd: .
+@prefix rdfs: .
+@base .
+
+ rdf:type owl:Ontology ;
+ owl:versionIRI ;
+ owl:imports ;
+ rdfs:comment "An example of how to express the entity schema using the datamodel ontology."@en .
+
+#################################################################
+# Annotation properties
+#################################################################
+
+### http://www.quaat.com/ontologies#hasDescription
+:hasDescription rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasDirectPart
+:hasDirectPart rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasExpression
+:hasExpression rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasFirstDimension
+:hasFirstDimension rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasFirstElement
+:hasFirstElement rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasFirstProperty
+:hasFirstProperty rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasLabel
+:hasLabel rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasMeta
+:hasMeta rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasNextElement
+:hasNextElement rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasShape
+:hasShape rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasType
+:hasType rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasURI
+:hasURI rdf:type owl:AnnotationProperty .
+
+
+### http://www.quaat.com/ontologies#hasUUID
+:hasUUID rdf:type owl:AnnotationProperty .
+
+
+#################################################################
+# Classes
+#################################################################
+
+### http://www.quaat.com/ontologies#DimensionExpression
+:DimensionExpression rdf:type owl:Class .
+
+
+### http://www.quaat.com/ontologies#ShapeElement
+:ShapeElement rdf:type owl:Class .
+
+
+### http://www.quaat.com/ontologies#String
+:String rdf:type owl:Class .
+
+
+#################################################################
+# Individuals
+#################################################################
+
+### http://www.quaat.com/ontologies#dimension
+:dimension rdf:type owl:NamedIndividual ,
+ :Dimension .
+
+
+### http://www.quaat.com/ontologies#entity_schema
+:entity_schema rdf:type owl:NamedIndividual ,
+ :Entity ;
+ :hasFirstDimension :entity_schema_dim0 ;
+ :hasFirstProperty :entity_schema_prop0 ;
+ :hasMeta "http://meta.sintef.no/0.1/BasicMetadataSchema" ;
+ :hasURI "http://meta.sintef.no/0.3/EntitySchema" ;
+ :hasUUID "57742a73-ba65-5797-aebf-c1a270c4d02b" .
+
+
+### http://www.quaat.com/ontologies#entity_schema_dim0
+:entity_schema_dim0 rdf:type owl:NamedIndividual ,
+ :Dimension ;
+ :hasDescription "Number of dimensions."@en ;
+ :hasLabel "ndimensions" ;
+ :hasNextElement :entity_schema_dim1 .
+
+
+### http://www.quaat.com/ontologies#entity_schema_dim1
+:entity_schema_dim1 rdf:type owl:NamedIndividual ,
+ :Dimension ;
+ :hasDescription "Number of properties."@en ;
+ :hasLabel "nproperties" .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop0
+:entity_schema_prop0 rdf:type owl:NamedIndividual ,
+ :Property ;
+ :hasDescription "Entity name."@en ;
+ :hasLabel "name" ;
+ :hasNextElement :entity_schema_prop1 ;
+ :hasType :string ;
+ rdfs:comment "The name can be inferred from the URI of the entity described. Hence, this property is redundant."@en .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop1
+:entity_schema_prop1 rdf:type owl:NamedIndividual ,
+ :Property ;
+ :hasDescription "Entity version. Ex: \"0.2.3\""@en ;
+ :hasLabel "version" ;
+ :hasNextElement :entity_schema_prop2 ;
+ :hasType :string ;
+ rdfs:comment "The version can be inferred from the URI of the entity described. Hence, this property is redundant."@en .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop2
+:entity_schema_prop2 rdf:type owl:NamedIndividual ,
+ :Property ;
+ :hasDescription "Entity namespace. Ex: \"http://sintef.no/meta\""@en ;
+ :hasLabel "namespace" ;
+ :hasNextElement :entity_schema_prop3 ;
+ :hasType :string ;
+ rdfs:comment "The namespace can be inferred from the URI of the entity described. Hence, this property is redundant."@en .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop3
+:entity_schema_prop3 rdf:type owl:NamedIndividual ,
+ :Property ;
+ :hasDescription "Human description of the entity."@en ;
+ :hasLabel "description" ;
+ :hasNextElement :entity_schema_prop4 ;
+ :hasType :string .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop4
+:entity_schema_prop4 rdf:type owl:NamedIndividual ,
+ :Property ;
+ :hasDescription "List of entity dimensions."@en ;
+ :hasLabel "dimensions" ;
+ :hasNextElement :entity_schema_prop5 ;
+ :hasShape :entity_schema_prop4_shape ;
+ :hasType :dimension .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop4_dimexpr0
+:entity_schema_prop4_dimexpr0 rdf:type owl:NamedIndividual ,
+ :DimensionExpression ;
+ :hasExpression "ndimensions" .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop4_shape
+:entity_schema_prop4_shape rdf:type owl:NamedIndividual ,
+ :Shape ;
+ :hasFirstElement :entity_schema_prop4_shape0 .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop4_shape0
+:entity_schema_prop4_shape0 rdf:type owl:NamedIndividual ,
+ :ShapeElement ;
+ :hasDirectPart :entity_schema_prop4_dimexpr0 .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop5
+:entity_schema_prop5 rdf:type owl:NamedIndividual ,
+ :Property ;
+ :hasDescription "List of entity properties."@en ;
+ :hasLabel "properties" ;
+ :hasShape :entity_schema_prop5_shape ;
+ :hasType :property .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop5_dimexpr0
+:entity_schema_prop5_dimexpr0 rdf:type owl:NamedIndividual ,
+ :DimensionExpression ;
+ :hasExpression "ndimensions" .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop5_shape
+:entity_schema_prop5_shape rdf:type owl:NamedIndividual ,
+ :Shape ;
+ :hasFirstElement :entity_schema_prop5_shape0 .
+
+
+### http://www.quaat.com/ontologies#entity_schema_prop5_shape0
+:entity_schema_prop5_shape0 rdf:type owl:NamedIndividual ,
+ :ShapeElement ;
+ :hasDirectPart :entity_schema_prop5_dimexpr0 .
+
+
+### http://www.quaat.com/ontologies#property
+:property rdf:type owl:NamedIndividual ,
+ :Property .
+
+
+### http://www.quaat.com/ontologies#string
+:string rdf:type owl:NamedIndividual ,
+ :String .
+
+
+### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi