W3C home > Mailing lists > Public > www-webont-wg@w3.org > July 2002

Re: LANG: new version of abstract syntax/translation document

From: Peter F. Patel-Schneider <pfps@research.bell-labs.com>
Date: Wed, 17 Jul 2002 17:33:02 -0400
To: connolly@w3.org
Cc: www-webont-wg@w3.org
Message-Id: <20020717173302Y.pfps@research.bell-labs.com>

From: Dan Connolly <connolly@w3.org>
Subject: Re: LANG: new version of abstract syntax/translation document
Date: 17 Jul 2002 14:41:20 -0500

> On Sun, 2002-07-07 at 05:45, Peter F. Patel-Schneider wrote: 
> > Here is a new version of the document.
> http://lists.w3.org/Archives/Public/www-webont-wg/2002Jul/att-0031/01-specification.html

[...]

> == 1.2. Stances Taken on OWL Issues
> 
> "#  The document does not include ordered property values,
> assuming that issue 2.6 will be resolved against including
> ordered property values in OWL."
> 
> Hmmm... I'm pretty fond of the first/rest construct for
> ordered values.

This produces an ordered list, which is, I believe, different from ordered
property values.   I believe that ordered property values are something
like is possible in XML, with its document ordering.

> "#  The document does not have a construct for asserting that a name is
> the same as another name, assuming that issue 4.6 will be resolved 
> against including this feature in OWL."
> 
> Wow... no sameClassAs nor samePropertyAs at all?
> That seems to conflict with ontology mapping requirements.
> no, I see EquivalentClasses and such... even SameIndividual.
> I guess I don't understand what you're saying about 4.6.

sameClassAs and samePropertyAs do not state that a name is that same as
another name, only that their extensions are the same.  The document does
not have equivalentTo.  I will make this clearer.

[...]

> "*  The document assumes that literals can be either typed or untyped."
> 
> Hmm... I don't see what that means... maybe I need to read
> closer/again...

Typed literals are pairs consisting of a datatype and a lexical
representation.  Untyped literals are just the lexical representation.

From the document:

<p>
In this syntax data literals consist either of
a datatype and the lexical representation of a data value in that
datatype (a typed data literal),
or just the lexical representation of a data value
(an untyped data literal).
Allowing untyped data literals introduces some problems to the
formalism, and care has to be taken here.
In particular, <tt>OneOf</tt> only allows typed data literals.
</p>
<pre>
&lt;dataLiteral&gt; ::= &lt;typedDataLiteral&gt; | &lt;untypedDataLiteral&gt;
&lt;typedDataLiteral&gt; ::= &lt;datatypeID&gt;  &lt;lexical-form&gt;
&lt;untypedDataLiteral&gt; ::= &lt;lexical-form&gt;
</pre>

This change was made in response to an objection from, I believe, Chris Welty.

> <aside>
> "The abstract syntax is specified here by means of a version of Extended
> BNF."
> 
> It occured to me to try to write it in RELAX-NG's non-XML syntax,
> just to see what it would look like...
> 
> for reference: http://www.w3.org/2000/10/swap/relaxNG-gram.html
> </aside>
> 
> 
> == 4. Facts
> 
> I don't see any way to make existentially-quantified claims,
> ala "there is a book whose author's name is Fred"
> 
> 	_:aBook rdf:type :Book.
> 	_:aBook dc:author _:somebody.
> 	_:somebody ex:name "Fred".
> 
> 
> How is that sort of thing expressed in the abstract syntax?

ObjectProperty(dc:author)
DatatypeProperty(ex:name)

Individual(type=Book (dc:author (Individual (ex:name "Fred"))))


> 6. Mapping to the Triple Syntax
> 
> I'm finding this very slow going. How about an example or two?

OK, I'll add one or two.
<p>
The above rules transform
</p>
<pre>
  Individual(type=ex:Book (dc:author (Individual (ex:name "Fred"))))
</pre>
to
<pre>
  _:x rdf:type ex::Book .
  _:x dc:author _:x 1
  _:x1 ex:name "Fred" .
</pre>
<p>
and
</p>
<pre>
  Class(ex:Student complete ex:Person
                   restriction(ex:enrolledIn allValuesFrom=ex:School minCardinality(1))
</pre>
<p>to</p>
<pre>
  ex:Student rdf:type owl:Class .
  ex:Student owl:sameClassAs _:x .
  _:x owl:intersectionOf _:l1 .
  _:l1 rdf:type owl:List .
  _:l1 owl:first  _:lr .
  _:l1 owl:rest owl:nil .
  _:lr owl:intersectionOf _:lr1 .
  _:lr1 rdf:type owl:List .
  _:lr1 owl:first _:r1 .
  _:lr1 owl:rest _:lr2 .
  _:lr2 rdf:type owl:List .
  _:lr2 owl:first _:r2 .
  _:lr2 owl:rest owl:nil .
  _:r1 rdf:type owl:Restriction .
  _:r1 owl:onProperty ex:enrolledIn .
  _:r1 owl:allValuesFrom ex:School .
  _:r2 rdf:type owl:Restriction .
  _:r2 owl:onProperty ex:enrolledIn .
  _:r2 owl:minCardinality "1" .
</pre>

I also fixed a minor bug (added the "s above) in the transformation.

> What is T(x)? 

T(x) is the transformation of x, i.e., what is being defined by the table.
I've added a bit of explantion to make this clearer.

> ________________________________________________________________________
> -- 
> Dan Connolly, W3C http://www.w3.org/People/Connolly/

The updated version is available at the usual place.

peter
Received on Wednesday, 17 July 2002 17:33:12 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:57:51 GMT