Ontology Issues: Basics of RDF Properties

A few basic points about the implications of RDF properties in your ontology

We ran into some interesting questions relating to RDF properties and how they work. These require some thought in our ontology.  For example take these two triples:

    <owl:ObjectProperty rdf:about="http://mmisw.org/ont/mmi/device/hasManufacturer">
        <rdfs:domain rdf:resource="http://mmisw.org/ont/mmi/device/System"/>
        <rdfs:range rdf:resource="http://mmisw.org/ont/mmi/device/Manufacturer"/>

By saying System is the domain of hasManufacturer, and Manufacturer is the range of hasManufacturer, this is telling us a "System hasManufacturer Manufacturer", which seems straightforward. But these statements are about the property hasManufacturer, not about the object System. So, these statements also mean that any time I make a statement "A hasManufacturer B", it can be inferred that A is a System and B is a Manufacturer. In other words, any time we give a property a domain or a range, we are saying every single use of that property can only use things from that domain or range.

So in the case above, this may be appropriate, because we are only talking about the hasManufacturer property in the device ontology, and maybe we want everything in our ontology that hasManufacturer to be of type System. If someone tries to use this ontology to describe clothing, and they used device:hasManufacturer but learned that their shirts are now Systems, that would be their problem.

Looking more carefully at our own uses of domain and range, we have a few cases that are not so obvious. For example,

    <owl:FunctionalProperty rdf:about="http://mmisw.org/ont/mmi/device/startDate">
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/>
        <rdfs:domain rdf:resource="http://mmisw.org/ont/mmi/device/Deployment"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
    </owl:FunctionalProperty>

While we agree that a Deployment can have but one startDate, do we agree that nothing else can have a startDate other than a Deployment? If not, we need to change this statement. But how?

There are a few options.  One is to use an owl:Restriction, also called a Restriction Class, which extends an existing owl:Class by qualifying it to have certain properties. In this case, we could say ...  

A second is to create a subproperty endDeploymentDate of endDate, and use Deployment as the domain; now we are saying an endDeploymentDate only applies to deployments.  And, because endDeploymentDate is a subproperty of endDate, anything that has an endDeploymentDate of X will also have an endDate of X.

So in the general case, if we are looking for trouble, the question becomes "can anything else fit in this property (at least within our context)?"  And in our ontology, we have the following cases to consider.  Remember that the Property is the place to start: Does every use of that property have the given domain or range?  Check marks indicate properties that seem fine:

CR: I've added the rdfs:label column. The intend is to be able to better qualify the name of the property (for example, startDeploymentDate) and use the label mechanism for display purposes (startDate). This approach is based on the fact that URIs are oriented to machines while *labels* are expressly oriented to humans. This approach is a possible mechanism to avoid the issue mentioned above, well, at least in some cases.

Domain Property Range rdfs:label Comments
System hasManufacturer √ Manufacturer    
System hasSerialNumber √      
System hasSystemDimension √
Dimension  hasDimension  
System hasOperationalRestriction  OperationalRestriction     
System hasComponent √ System    
Sensor

hasMeasurementCapabilities √
(subPropertyOf hasCapabilities)

MeasurementCapabilities    
System hasCapabilities Capabilities    
Deployment deployedSystem √ System    
System hasDeployment Deployment    
Deployment hasBasePlatform √
Platform    
System canBeDeployedOn √
Platform    
System hasDeployedMedium √ Medium    
System hasMeasuredMedium Medium    
Process hasInput √ ProcessInput    
Process hasOutput √ ProcessOutput    
Process processID √      
Platform platformID √      
Manufacturer hasWebSite      
Manufacturer hasOriginalName      
System isConsumableSystem (boolean) isConsumable  
CalibrationSchedule hasMinimumFrequency      
Deployment endDeploymentDate √
(date) endDate  
Deployment startDeploymentDate √
(date) startDate  
CalibrationSchedule hasProvider      
CalibrationSchedule hasEnforcementQuality      
Sensor hasCalibrationSchedule CalibrationSchedule    
System hasModel √ Model    
Model hasIdentifier      
Feature hasProperty Property