Problem with DataRange atoms in SWRL

The SWRL abstract syntax allows for data range atoms of the type

dataRange '(' d-object ')'

where d-object is

d-object ::= d-variable | dataLiteral


swrl.owl defines

<owl:ObjectProperty rdf:ID="argument1"/>

<owl:Class rdf:ID="DataRangeAtom">
  <rdfs:subClassOf rdf:resource="#Atom"/>
  <rdfs:comment>consists of a dataRange and argument1</rdfs:comment>
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#dataRange"/>
      <owl:allValuesFrom rdf:resource="&owl;#DataRange"/>
    </owl:Restriction>
  </rdfs:subClassOf>
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#dataRange"/>
      <owl:cardinality>1</owl:cardinality>
    </owl:Restriction>
  </rdfs:subClassOf>
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#argument1"/>
      <owl:allValuesFrom rdf:resource="&owl;#Thing"/>
    </owl:Restriction>
  </rdfs:subClassOf>
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#argument1"/>
      <owl:cardinality>1</owl:cardinality>
    </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

<owl:ObjectProperty rdf:ID="dataRange"/>


So, argument1 is here restricted to OWL individuals, but we should be able to use "dataLiteral" 
for the property value. For example, as I understand it, we should be able to say

xsd:string('hi')

But we can't do this with this OWL syntax. 

I would suggest changing argument1 and dataRange from ObjectProperty to Property, and removing the restriction
to owl:Thing above.

Or did I misunderstand how data range atoms are supposed to be used?

Daniel

Received on Tuesday, 14 June 2005 18:15:07 UTC