W3C home > Mailing lists > Public > public-ws-semann@w3.org > June 2006

Re: why distinguish between simple and complex types? (issue 11)

From: Jacek Kopecky <jacek.kopecky@deri.org>
Date: Mon, 12 Jun 2006 17:05:10 +0200
To: Laurent Henocque <laurent.henocque@gmail.com>
Cc: Rama Akkiraju <akkiraju@us.ibm.com>, SAWSDL public list <public-ws-semann@w3.org>
Message-Id: <1150124710.6700.77.camel@localhost>

Laurent, 

On Tue, 2006-06-06 at 22:19 +0200, Laurent Henocque wrote:
> ok, but we can have
> <element name="fullName" type="xsd:string">
>      <sawsdl:modelReference="ontology#FullName">
>      <sawsdl:modelReference="ontology#FirstName">
>      <sawsdl:modelReference="ontology#LastName">
> </element>
> can't we? (just to make sure :-))

Sorry to say that this is not really XML. We could possibly turn
sawsdl:modelReference from an attribute to an element, then it would be
something like 

<element name="fullName" type="xsd:string">
     <sawsdl:modelReference>ontology#FullName</sawsdl:modelReference>
     <sawsdl:modelReference>ontology#FirstName</sawsdl:modelReference>
     <sawsdl:modelReference>ontology#LastName</sawsdl:modelReference>
</element>

However, there seems to be a problem with XML Schema extensibility that
would complicate matters. I'd say that a single attribute with multiple
values separated by white space is better, and it would have the same
expressiveness.

> > It seems that you have in mind some kind of specification of what
> > modelReference actually means, related to your request about
> > schemaMapping being a bijection.
> 
> Yes, I tend to think that an element is an instantiation for its modelReference(s). From a software engineering
> standpoint, I would feel very comfortable for explaining what semantic annotations are if I could say:
> 
> "if you annotate element E with concept C, you mean that this E is a kind of C" (as we are used to for inheritance for
> example)
> 
> I cannot say "a 'fullName' is an 'ontology#FirstName'" nor the opposite.
> 
> If we are to keep this possibility, I vote for making it explicit, so that searching tools are not mislead.

Well, so far we didn't constrain the semantic models that we point to
much, and you would say that what's pointed to is, in some way, a class.
I could imagine using modelReference on interface or operation to point
to WSML webService construct, which may or may not be viewed as a
class-like thing, depending on how you look. I fear it could be hard to
write an unambiguous specification without constraining the models too
much. But I welcome concrete proposals. 8-)

> > 
> > I always viewed modelReference as something relatively vague, like "this
> > schema or wsdl component describes a thing that is also described by the
> > model reference", which in case of composite values could also mean that
> > the model reference describes a part of (or a bigger thing than) the
> > schema or wsdl component.
> I think the group must formulate a very precise statement about what it means to 'semantically annotate', because I do
> not agree with your point. If you remove 'semantically', ok, but here, no.

Any concrete suggestions for the WG to consider? 8-)

> > For example, on WSDL operation level, one model reference could describe
> > the precondition, other could describe the effect; and similarly on a
> > composite simpleType (like the fullName above) one model reference could
> > describe the last name part and other could describe the first name
> > part.
> 
> I'd rather use one model reference to describe an 'aggregation of' the first name and last name. If a string is
> structured, why would we lose this structure in the semantics? This seems counterproductive, don't you think?

Apart from the fact that so far we do not actually define what
modelReference actually and practically means, do you have a situation
in mind that would not work if we allowed modelReference to point to all
those parts?

I think I can see a situation where such multiple annotations like
<element name="fullName" type="xsd:string" 
  sawsdl:modelReference="ontology#FullName ontology#FirstName ontology#LastName"/>
would in fact be useful:

Let's assume something like this: we use a schema that conflates
fullName in one string, and that we use an ontology that defines only
firstName and lastName, not fullName. Because both the schema and the
ontology are shared, we cannot change them to introduce fullName
concept. We can introduce a new ontology that extends the old one and
adds fullName that contains both lastName and firstName.

If we only annotate the string with fullName, there may be applications
out there that are not aware of our new ontology* and therefore will
ignore the fullName, yet they might benefit from annotations pointing to
lastName and firstName separately, with a schemaMapping to help with the
actual transformation.

(*) I'm not sure if the reasoners are not supposed to be able to learn
about our new ontology, but there may be trust issues involved.

Hope this makes sense,

Jacek
Received on Monday, 12 June 2006 15:05:20 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 19:58:45 UTC