tibonto / mato

Machine and Tool Ontology
GNU General Public License v3.0
0 stars 0 forks source link

structural changes #12

Closed andrecastro0o closed 3 years ago

andrecastro0o commented 3 years ago

There are a few issues with the structure of mato as represented by the initial t-box created by @ShevelTatyana

I will be proposing a few changes in order to clarify and simply aspects it.

As it is a new ontology, it is better to start simple and add complexity as we go, so that we avoid backwards incompatibility issues of data that is annotated with a structure that is changed.

I will write a comment and respective commit per issue

image2021-5-6_12-33-36

andrecastro0o commented 3 years ago

removal of the sosa:Sensor and make mato:Equipment subClassOf ssn:System Already done in #14

As sosa:Sensor

sosa:Sensor a rdfs:Class , owl:Class ;
  rdfs:label "Sensor"@en ;
  skos:definition "Device, agent (including humans), or software (simulation) involved in, or implementing, a Procedure. Sensors respond to a stimulus, e.g., a change in the environment, or input data composed from the results of prior Observations, and generate a Result. Sensors can be hosted by Platforms."@en ;
  rdfs:comment "Device, agent (including humans), or software (simulation) involved in, or implementing, a Procedure. Sensors respond to a stimulus, e.g., a change in the environment, or input data composed from the results of prior Observations, and generate a Result. Sensors can be hosted by Platforms."@en ;
  skos:example "Accelerometers, gyroscopes, barometers, magnetometers, and so forth are Sensors that are typically mounted on a modern smart phone (which acts as Platform). Other examples of sensors include the human eyes."@en ;
  rdfs:isDefinedBy sosa: .
###  http://www.w3.org/ns/ssn/System
ssn:System a owl:Class ;
  rdfs:label "System"@en ;
  skos:definition "System is a unit of abstraction for pieces of infrastructure that implement Procedures. A System may have components, its subsystems, which are other systems."@en ; 
  rdfs:comment "System is a unit of abstraction for pieces of infrastructure that implement Procedures. A System may have components, its subsystems, which are other systems."@en ; 
  rdfs:subClassOf [ a owl:Restriction ; owl:onProperty sosa:isHostedBy ; owl:allValuesFrom sosa:Platform ]  ;
  rdfs:subClassOf [ a owl:Restriction ; owl:onProperty ssn:implements ; owl:allValuesFrom sosa:Procedure ] ;
  rdfs:subClassOf [ a owl:Restriction ; owl:onProperty ssn:hasSubSystem ; owl:allValuesFrom ssn:System ]  ;
  rdfs:subClassOf [ a owl:Restriction ; owl:onProperty [ owl:inverseOf ssn:hasSubSystem ] ; owl:allValuesFrom ssn:System ]  ;
  rdfs:subClassOf [ a owl:Restriction ; owl:onProperty ssn:hasDeployment ; owl:allValuesFrom ssn:Deployment ]  ;
  rdfs:isDefinedBy ssn: .

Note that ssn:System is subClassOf all Values of the property ssn:implements (Relation between an entity that implements a Procedure the Procedure) that are instances of sosa:Procedure rdfs:subClassOf [ a owl:Restriction ; owl:onProperty ssn:implements ; owl:allValuesFrom sosa:Procedure ] ;

andrecastro0o commented 3 years ago

in 94f684e169e1c2b14d1660a5484f99104a00638f I added the object property mato:isResponsibleFor with

###  https://github.com/tibonto/mato#isResponsibleFor
mato:isResponsibleFor rdf:type owl:ObjectProperty ;
                      rdfs:domain mato:Equipment ;
                      rdfs:range prov:Organization ,
                                 prov:Person .

###  http://www.w3.org/ns/prov#Agent
prov:Agent rdf:type owl:Class ;
           owl:disjointWith prov:InstantaneousEvent ;
           rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ;
           rdfs:label "Agent" ;
           prov:category "starting-point" ;
           prov:component "agents-responsibility" ;
           prov:definition "An agent is something that bears some form of responsibility for an activity taking place, for the existence of an entity, or for another agent's activity. "@en ;
           prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-agent"^^xsd:anyURI ;
           prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-Agent"^^xsd:anyURI .

###  http://www.w3.org/ns/prov#Organization
prov:Organization rdf:type owl:Class ;
                  rdfs:subClassOf prov:Agent ;
                  rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ;
                  rdfs:label "Organization" ;
                  prov:category "expanded" ;
                  prov:component "agents-responsibility" ;
                  prov:definition "An organization is a social or legal institution such as a company, society, etc." ;
                  prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-agent"^^xsd:anyURI ;
                  prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-types"^^xsd:anyURI .

###  http://www.w3.org/ns/prov#Person
prov:Person rdf:type owl:Class ;
            rdfs:subClassOf prov:Agent ;
            rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ;
            rdfs:label "Person" ;
            prov:category "expanded" ;
            prov:component "agents-responsibility" ;
            prov:definition "Person agents are people."@en ;
            prov:dm "http://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-agent"^^xsd:anyURI ;
            prov:n "http://www.w3.org/TR/2013/REC-prov-n-20130430/#expression-types"^^xsd:anyURI .

And since the concept of a person is covered by prov:Person I removed mato:Person from drawing and also dcterms:Agent and foaf:Agent in 77b9775155d1a75e0ae4cffdd0b000f5d8685a95

andrecastro0o commented 3 years ago

Location 053f8db8f14ec4075f0fcac69ce75684933b5dac

added data property mato:atLocation since, to to use prov:atLocation object Property to indicate the location of a mato:Equipment instance is tricky as it is both an Object Property and has range prov:Location ;\ which would require each location to an instance of prov:Location

###  http://www.w3.org/ns/prov#atLocation
prov:atLocation rdf:type owl:ObjectProperty ;
                rdfs:domain [ rdf:type owl:Class ;
                              owl:unionOf ( prov:Activity
                                            prov:Agent
                                            prov:Entity
                                            prov:InstantaneousEvent
                                          )
                            ] ;
                rdfs:range prov:Location ;
                rdfs:comment "The Location of any resource."@en ,
                             "This property has multiple RDFS domains to suit multiple OWL Profiles. See <a href=\"#owl-profile\">PROV-O OWL Profile</a>." ;
                rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ;
                rdfs:label "atLocation" ;
                prov:category "expanded" ;
                prov:editorialNote "The naming of prov:atLocation parallels prov:atTime, and is not named prov:hadLocation to avoid conflicting with the convention that prov:had* properties are used on prov:Influence classes."@en ,
                                   "This property is not functional because the many values could be at a variety of granularies (In this building, in this room, in that chair)."@en ;
                prov:inverse "locationOf" ;
                prov:sharesDefinitionWith prov:Location .

Hence I propose the creation of the data property mato:atLocation which will allow for statements such as

MachineX mato:atLocation "BuildindXYZ" 

without the building requiring a URI

and the removal of mato:isLocatedIn - as it is redundant

###  https://github.com/tibonto/mato#atLocation
mato:atLocation rdf:type owl:DatatypeProperty ;
                rdfs:domain mato:Equipment ;
                rdfs:label "The location of an Equipment"@en ;
                skos:relatedMatch prov:atLocation .
andrecastro0o commented 3 years ago

ccf375035a4689787d4c903ddff0e3fd412d2e64 added ObjectProperty mato:depicted_by to allow a visual representation of the device to be created

###  https://github.com/tibonto/mato#depicted_by
mato:depicted_by rdf:type owl:ObjectProperty ;
                 rdfs:domain ssn:System ;
                 rdfs:label "depicted by"@en ;
                 skos:closeMatch <http://xmlns.com/foaf/0.1/depicted_by> .
andrecastro0o commented 3 years ago