Conditions are another mechanism applied to senses to restrict the mapping between the syntactic and semantic layers. Conditions are something that can be generally tested to check whether a given lexical entry is appropriate to an ontology reference or vica versa. One of the main usage of conditions is to describe the necessary constructs that are beyond the true “sense” of the lexical entry, but are essential to understanding the mapping. For example the German verb “essen” is generally used for humans, whereas “fressen” is generally used when the subject is an animal. This can be modeled by saying the two verbs are restricted with the propertyDomain and propertyRange. This is a condition that applies only if the object/subject of the triple in question is in the appropriate class. In fact, as lemon is based on RDF(S) and OWL and thus makes an open world assumption, such conditions are only false if it is provable that the object/subject is not in the appropriate class.
:essen lemon:sense [ lemon:reference ontology:eat ; lemon:propertyDomain ontology:Human ] . :fressen lemon:sense [ lemon:reference ontology:eat ; lemon:propertyDomain ontology:NonHuman ] .
lemon only contains these two properties however we may also extends the condition property to new conditions as is required. For example, we take the Spanish “párajo”, which means “bird” but is used only for small birds that can fly. So we may introduce a property notUsedFor to indicate particular subclasses that the term may not be used for, e.g., here we indicate that it is not used for ratites (order struthioniformes), the taxon containing ostriches, emus, rheas and kiwis:
:parajo lemon:canonicalForm [ lemon:writtenRep "bird"@es ]; lemon:sense [ lemon:reference ontology:Bird ; :notUsedFor ontology:Ratite ] . :notUsedFor rdfs:subPropertyOf lemon:condition .
We can even include full logical conditions that can be used to test if a sense should be used by specifying a rule in some logic that can be evaluated. We present such an example below; it should be read as “does there exist a ?y such that for some individual ?x, flowsInto(?x,?y) and River(?y) hold)/
:riviere lemon:sense [ lemon:reference ontology:River ; lemon:condition [ lemon:value "exists ?y : flowsInto(?x,?y), River(?y)" ] ] . :fleuve lemon:sense [ lemon:reference ontology:River ; lemon:condition [ lemon:value "exists ?y : flowsInto(?x,?y), Sea(?y)" ] ] .
Readers should note we use a new property value here with a blank node. This is because we require that the range of condition are individuals in order to guarantee the model is OWL DL compatible. We discuss value more in section .
There is some overlap between conditions and contexts, however as a rule of thumb, the use of a lexical entry for an ontology entity that violates the context would be considered “inappropriate” by a reader, where as if the condition is violated it would be considered “incorrect.”
John McCrae 2012-07-31