LD/SW Modelling and Linking Guide modelling styles Michel Böhms
Meta concepts In general Instances of Concepts Value Types Attributes* for Concepts/Individuals having Value Types as range Relationships between Concepts/Instances Constraints with respect to values or cardinalities * quantitative or qualitative 11-1-2019
Meta concepts in RDF/RDFS/OWL rdfs:Class owl:Class owl:Restriction rdfs:Datatype (reusing basic XSD datatypes) rdf:Property owl:DatatypeProperty owl:ObjectProperty owl:NamedIndividual 11-1-2019
Two main Modelling styles Style 1: The Simple Way Attributes as owl:DatatypeProperties, Relationships as owl:ObjectProperties All Value Types to rdfs:Datatype (including enumeration types) + : Most direct/simple - : Limited property annotation capabilities QUDT2.0 standard base/derived units used as rdfs:Datatypes Style 2: The Powerful Way Attributes and Relationships (and enumeration Value Types) as owl:Classes QUDT2.0 units used for standard base/derived units more explicitly + : More powerful - : More indirect/complex, needing own extra meta level language constructs 11-1-2019
Example situation There are three concepts: physical objects, specialized into bridges and vehicles. Bridges are described with exactly one height attribute and vehicles have an optional velocity attribute. Vehicles always have an optional loadLevel attribute which can be Light, Normal or Heavy. Bridges furthermore serve certain vehicles (at a certain point in time). We have one instance of a bridge, with a height of 100 meters serving an instance of Vehicle, with loadLevel being Heavy and having a velocity of 128 km/hour. 11-1-2019
The Simple Way /classes :PhysicalObject rdf:type owl:Class . :Bridge rdf:type owl:Class ; rdfs:subClassOf :PhysicalObject . rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty :height ; ] . :Vehicle Just one helper construct: qudt:Unit rdfs:subClassOf rdfs:Datatype ; . 11-1-2019
The Simple Way /properties :height rdf:type owl:DatatypeProperty ; rdfs:range: unit:M . :actualVelocity rdf:type owl:DatatypeProperty ; rdfs:range unit:KM-PER-HR . :loadLevel rdf:type owl:DatatypeProperty; rdfs:range [ rdf:type rdfs:Datatype ; owl:oneOf ( "Light" "Normal" “Heavy” ) ; ] . :currentlyServingVehicle rdf:type owl:ObjectProperty ; rdfs:range :Vehicle . Note: If multi-linguality is needed the load level value type can also be modelled as a LoadLevel class in combination with a hasLoadLevel object property 11-1-2019
The Simple Way /individuALS :Bridge_1 rdf:type :Bridge ; :height “100.0”^^unit:M ; :currentlyServingVehicle :Vehicle_1 . :Vehicle_1 rdf:type :Vehicle ; :loadLevel “Heavy”^^xsd:string ; :actualVelocity “128.0”^^unit:KM-PER-HR . 11-1-2019
THE powerful way /META CONSTRUCTS/1 # helper/meta classes/properties :hasAttributeValue rdf:type owl:ObjectProperty ; rdfs:range :AttributeValue . :AttributeValue owl:unionOF …. :QualityValue, qudt:QuantityValue :QualityValue rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality "0"^^xsd:nonNegativeInteger ; owl:onProperty :stringValue ; ] ; owl:onProperty :booleanValue ; ] . :stringValue rdf:type owl:DatatypeProperty ; rdfs:range xsd:string . :booleanValue rdfs:range xsd:boolean . 11-1-2019
The powerful way /META CONSTRUCTS/2 :Relationship rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty :hasSource ; ] ; owl:onProperty :hasTarget ; ] . :hasSource rdf:type owl:ObjectProperty ; rdfs:domain :Relationship . :hasTarget 11-1-2019
The powerful way /META CONSTRUCTS/3 qudt:Unit … qudt:QuantityValue qudt:unit qudt:numericValue unit:M rdf:type qudt:Unit . unit: KM-PER-HR … : for details see example code of power.ttl 11-1-2019
The powerful way /clASSES :LoadLevel rdf:type owl:Class . :Light rdf:type :LoadLevel . :Normal rdf:type :LoadLevel . :Heavy rdf:type :LoadLevel . :Height rdf:type owl:Class ; rdfs:subClassOf qudt:QuantityValue . :Velocity :CurrentlyServingVehicle rdfs:subClassOf :cmo:Relationship . :HasLoadLevel :PhysicalObject rdf:type owl:Class . :Bridge rdf:type owl:Class ; rdfs:subClassOf :PhysicalObject ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty :hasAttributeValue ; owl:onClass :Height ; ] . :Vehicle rdfs:subClassOf :PhysicalObject . 11-1-2019
The powerful way /individuals :Bridge_1 rdf:type :Bridge ; :hasAttributeValue :Height_1 . :Vehicle_1 rdf:type :Vehicle ; :hasAttributeValue :Velocity_1 . :CurrentlyServingVehicle_1 rdf:type :CurrentlyServingVehicle ; :hasSource :Bridge_1 ; :hasTarget :Vehicle_1 . :HasLoadLevel_1 rdf:type :HasLoadLevel ; :hasSource: :Vehicle_1 ; :hasTarget :Heavy . :Height_1 rdf:type :Height ; qudt:numericValue "100.0"^^unit:M ; qudt:unit unit:M . :Velocity_1 rdf:type :Velocity ; qudt:numericValue "128.0"^^unit:KM-PER-HR ; qudt:unit unit:KM-PER-HR . 11-1-2019
preference Use the Simple style and the Powerful style in combination Reusing QUDT2.0 in both styles where possible Define a complete ‘lossless’ bi-directional mapping between the two styles (TO BE DONE!) Using a Link Set in RDF/RDFS/OWL or when needed more advanced specifications involving other rule languages like SPIN, SWRL, etc. 11-1-2019
Extended Simple Exampe (decomposition) :Bridge rdf:type owl:Class ; rdfs:subClassOf :PhysicalObject ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty :height ; ] ; owl:onProperty cmo:hasDirectPart ; owl:onClass :Deck ; ] . :Deck rdf:type owl:Class ; rdfs:subClassOf :PhysicalObject ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minCardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty cmo:hasDirectPart ; owl:onClass :Slab ; ] . :Slab rdfs:subClassOf :PhysicalObject . 11-1-2019
Extended Simple Exampe (decomposition) :Bridge_1 rdf:type :Bridge ; :height "100.0"^^unit:M ; cmo:hasDirectPart :Deck_1 ; :currentlyServingVehicle :Vehicle_1 . :Deck_1 rdf:type :Deck ; cmo:hasDirectPart :Slab_1, :Slab_2, :Slab_3 :Slab_1 rdf:type :Slab . :Slab_2 :Slab_3 11-1-2019
Extended Simple Exampe (decomposition) – VIEW IN tbc Added Associations view based on cmo:hasDirectpart 11-1-2019
Thank you for your attention Take a look: TIME.TNO.NL