- From: Michael Schneider <m_schnei@gmx.de>
- Date: Wed, 13 Dec 2006 16:24:53 +0100
- To: fdijkstr@science.uva.nl
- CC: semantic-web@w3.org
Hi! Freek Dijkstra wrote: > Holger Knublauch wrote: > >> These XSD facets are exactly the solution proposed for representing >> user-defined datatypes in OWL 1.1 [1] >> >> [1] http://owl1_1.cs.manchester.ac.uk/ > > Beside that I fully realize that the proposed text is still a draft, > Yes, it's a draft, but you can already work with it: I found that there is a release candidate of Pellet 1.4, which implements most of the new features of OWL1.1, including user-defined datatypes. And there is also a version of the ontology browser SWOOP, which contains this new Pellet version, and which, AFAICS, is able to understand and present such datatype definitions. You can get both, Pellet and SWOOP, from: http://pellet.owldl.com/#Download Also, the SWOOP dist contains an example ontology "family.owl" which shows some of the new OWL1.1 features, included datatype definitions. [FIXME: The vocabulary used within Pellet1.4RC (as shown by "family.owl") seems to be different from that one given in the OWL1.1 document at <http://owl1_1.cs.manchester.ac.uk>. For instance, while Pellet accepts the term "DataRangeRestriction", the OWL1.1 document uses "DatatypeRestriction", see <http://owl1_1.cs.manchester.ac.uk/owl_specification.html#4.3>] > I'm not 100% sure if it can also support what I called "numerical > sets" in my previous mail: > >> My final goal would be to allow efficient (with few statements) >> description of numerical sets. For example, [1..4, 8, 16..37] Hm, something seems to miss in the OWL1.1 spec?! After playing around a little, I am now able to create at least single integer intervals like "[1..4]" in the following way (following the examples from "family.owl"): <!-- [1..4]: first restricting xsd:integer to [1..], and then restricting [1..] to [1..4] --> <owl:DataRangeRestriction rdf:about="#Interval_1-4"> <owl:onDataRange> <owl:DataRangeRestriction> <owl:onDataRange rdf:resource="&xsd;integer"/> <owl:minInclusive>1</owl:minInclusive> </owl:DataRangeRestriction> <owl:maxInclusive>4</owl:maxInclusive> </owl:onDataRange> </owl:DataRangeRestriction> Using this method, I can of course also represent the singleton class "{8}" in the form of an interval "[8..8]" (though is seems to be more optimal to use the "DataOneOf" constructor for this purpose). Now, my idea was to first build integer intervals [1..4], [8..8] and [16..37] and then create some /union/ of these three intervals. But how can I do this? I probably cannot just use 'owl:unionOf', because this constructor is for owl:ClassEs, and not for owl:DataRangeS, right? Well, if it were only /two/ intervals, say [1..4] and [16..37], I could have done something like 1) restrict xsd:integer to some interval I1 := [5..15] 2) build datarange I2 := [..4] U [16..] from I1 by applying constructor 'DataComplementOf' 3) restrict I2 to [1..4] U [16..37] by setting 'minInclusive' to 1 and 'maxInclusive' to 37. But I do not see how I can cope with more complex cases. So where are the ? 'DataUnionOf' ? 'DataIntersectionOf' constructors in the OWL 1.1 approach? Sorry, Freek, that I couldn't help any further. And I, too, do not understand what the "arity" of a datarange, mentioned in the OWL1.1 document, is. But, perhaps, some of the OWL1.1 folks in the SWIG list can give some explanation to my question above, and this would then probably answer your original question, too. Let's see! Cheers, Michael
Received on Wednesday, 13 December 2006 15:31:56 UTC