N-ary data predicates (see ISSUE-5)

OWL 1.0 only supported unary data predicates (aka, datatypes). So you  
could, in principle, define a datatype "an integer <5" which would be  
true only of those integers less than 5. You could use these types in  
restrictions, e.g., (using Manchester syntax:

	hasAge only integer[< 18]

Functional syntax:
	DataAllValuesFrom(DataProperty(hasAge)
					    DatatypeRestriction(xsd:integer maxExclusive "18"^^xsd:int)

(RDF/XML...see the attached file.)

This could be used to define a "legal child". (I attach an example of  
an ontology using this and bijan hasAge 19 (yes, I *can* pass for  
19!) which Pellet finds inconsistent.)

Obviously, the unary restriction is pretty severe, we might want to  
say things like:

	"his IQ is larger than his shoe size"
or
	"the length is the same as the width"

To this end, OWL 1.1 supports n-ary datatype predicates, at least in  
principle:
	DataAllValuesFrom(DataProperty(hasIQ) DataProperty(hasShoeSize)
					     maxExclusiveInteger)

(I just made up maxExclusiveInteger. think of it as < over integers;  
it is a relative uri).

MAJOR RESTRICTION
==================

The data predicate facility only allows relations between values of  
properties with the *same root individual* (i.e., subject).

So, while I can define the set of individuals whose (own) height is  
greater than their (own) girth, but not the set of individuals whose  
own height is greater than their spouses girth (which is most of us!).

It is possible to extend this support to comparisons between property  
values rooted in different individuals (i.e., full concrete domain  
support --- Calling Carsten), though one must take more care to  
remain decidable. I think this would be a reasonable thing to  
support, but it's a definite extension on OWL 1.1.

PROBLEM 1
==========

There are no predefined more-than-unary datatype predicates. I think  
it's imperative that we define some, esp. as it's not clear how to  
allow user defined ones and make those accessible to the reasoner.

In principle, comparisons, plus, and some other operations should all  
be doable. I appeal to Uli for a fuller discussion.

PROBLEM 2
==========

ISSUE-5 points to a brief paper by Jeremy and David Turner:
	< http://lists.w3.org/Archives/Public/www-archive/2007Mar/0002.html>

Which critiques the approach in OWL 1.1. (Note that we don't actually  
use datatype *groups* per se, but that doesn't affect any points.)  
Basically, the problem is that it's possible to have non-conforming  
datatypes when you mix things together, and this leads to  
undecidability.

While true, I am unmoved. You can combine two OWL ontologies now and  
end up violating a decidability restriction (e.g., a role might be  
non-simple in one and used in a cardinality restriction in another)  
(thanks to Uli for this example). So nothing new there.

Similarly, I agree that there is room for more "procedural"  
calculation support. Indeed, I think this would be extremely  
valuable. But the right context for that seems to be a rule  
extension. This is similar to how the EasyKeys proposal is developing:

	<http://code.google.com/p/owl1-1/wiki/EasyKeyProposal>
	<http://lists.w3.org/Archives/Public/public-owl-dev/2007JulSep/ 
0211.html>

So, I don't see that the current n-ary support (or future extensions  
to full concrete domain support) interferes with providing the more  
procedural, data manipulation style support as well.

Thus, I don't think that the objections raised are sufficient to  
require removal of the feature.

I hope I've not misrepresented any critical aspects of the complaint.  
I encourage people to read the paper.

Cheers,
Bijan.

Received on Monday, 5 November 2007 14:36:02 UTC