I am trying to describe the property "person.name" which has
rdfs:range="#PersonName" in order to model the ASTM E2182 XML Clinical
Document standard ... the ontology I am trying to develop is at
http://www.openhealth.org/ASTM/E31.28-model.daml (see <Class
rdf:ID="PersonName">)
I want to say that a "PersonName" consists of an ordered sequence of name
parts, each of which is a string. The XQuery formal type description:
type PersonName =
element person.name {
(element family{text} |
element given{text} |
element middle{text} |
element prefix{text} |
element suffix{text} |
element delimiter{text}
)*}
describes an XML structure:
<person.name>
<prefix>Dr.</prefix>
<given>Jonathan</given>
<family>Jones</family>
<delimiter>-</delimiter>
<family>Borden</family>
<suffix>M.D.</suffix>
<delimiter>,</delimiter>
<suffix>Ph.D.</suffix>
</person.name>
I am stuck on how to do this in DAML. It seems that I want to describe
something that has rdf:parseType="daml:collection" and each of whose
elements are <oneOf> ... </oneOf>.
On the other hand, if we were to incorporate the XQuery formal language,
this would be easy:
<Property rdf:ID="person.name">
<rdfs:range>element person.name{(element family{text}|
...}</rdfs:range>
alternatively using XML Schema named types:
<rdfs:range rdf:resource="myschema:person.name">
alternatively using XML Schema inline
<rdfs:range><xschema:complexType>
...</xschema:complexType></rdfs:range>
It seems beneficial to be able to describe these sorts of restrictions
directly in OWL. Am I way off base here?
Note: the difference between XQuery types and XML Schema types is that:
1) XQuery types have a compact (non-XML) description
2) XQuery types are formally described
3) XML Schema types
Jonathan