A functional property is a property that can have only one (unique) value y
for each instance x, i.e. there cannot be two distinct values y1 and y2 such
that the pairs (x,y1) and (x,y2) are both instances of this property. Both
object properties and datatype properties can be declared as "functional". For
this purpose, OWL defines the built-in class owl:FunctionalProperty
as a special subclass of the RDF class rdf:Property.
<rdfs:Class rdf:ID="FunctionalProperty">
<rdfs:label>FunctionalProperty</rdfs:label>
<rdfs:subClassOf rdf:resource="&rdf;Property"/>
</rdfs:Class>
The following axiom states that the husband property is
functional, i.e., a woman can have at most one husband (a good example
of culture dependence of ontologies):
<owl:ObjectProperty rdf:ID="husband">
<rdf:type rdf:resource="&owl;FunctionalProperty" />
<rdfs:domain rdf:resource="#Woman" />
<rdfs:range rdf:resource="#Man" />
</owl:ObjectProperty>
As always, there are syntactic variations. The example above is semantically equivalent to the one below:
<owl:ObjectProperty rdf:ID="husband">
<rdfs:domain rdf:resource="#Woman" />
<rdfs:range rdf:resource="#Man" />
</owl:ObjectProperty>
<owl:FunctionalProperty rdf:about="#husband" />