Nelson writes;

Each of the individual applications using RDF I know of could have been done more easily with plain XML

Absolutely and unapologetically true.

But the statement misses the critical lesson of software architecture (and architecture in general); only by applying constraints can one realize useful properties. RDF/XML based apps have more useful properties than does an XML based app; specifically, “data silos” are avoided.

Don Box asks;

In a world in which all SOAP messages have <wsa:Action> header blocks, why do my Body elements need XML namespace qualification?

First order answer; I’d say simply because an intermediary that doesn’t know the value of the Action header might want to look at the payload.

Second order answer; I think it’s a fairly small & uninteresting world where it would it make sense to have Action headers within the SOAP envelope. In order for SOAP to make proper use of application protocols (well, transfer protocols at least), SOAP headers should be constrained to containing representation data and metadata, as that’s the data that remains constant between hops over different application protocols. For example, through a HTTP to SMTP bridge, a SOAP envelope should remain constant. “Action” is message metadata, and therefore does not necessarily remain constant between different protocols; it’s hop-by-hop.

Where it would make sense to put the Action header (and other non-representation headers) in the SOAP envelope, is when SOAP is used with transport protocols. But I don’t think there’s much value to that, at least in the short/medium term; the value of reusing established application protocols is too great.

Don’t get hung up on the “object” there; it’s a logical view.

The picture is meant to capture the essence of what I see as the fundamental misunderstanding/mistake of Web services. This misunderstanding goes by several names;

  • transport vs. transfer; transfer gets you all the way to the business logic, while transport only gets you as far as the interface.
  • tunneling
  • uniform vs. specific interfaces
  • late binding; an identifier is sufficient to get you direct access to the state & logic
  • a priori information; see late binding; deployed agreement on HTTP & URIs suffices

When I hear “application integration”, I’m thinking the bottom picture, not the top, because APIs just get in the way.

Don Box responds to Jon Udell regarding XAML. He writes;

XAML is just an XML-based way to wire up CLR types – no more no less.

That’s not how XAML comes off at all. In the examples, there are names such as “TextPanel” and “Heading” in the XAML namespace; those aren’t the sort of things I’d expect in a binding language.

But if the examples are just misleading, and Don’s statement is taken at face value, what XAML would actually be aiming to replace isn’t HTML/CSS, it’s RDF/RDF-Schema;

<Object def:Class="MyClass" />

is essentially equivalent to;

<my:MyClass>
  <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Resource"/>
</my:MyClass>

Hmm.

Over the weekend, I found a great article by Steve Loughran on the impact of Sitefinder on Web services tools. It’s very well written, and covers the entire space.

I was particularly impressed by the indepth analysis of the issues regarding BCP 56 (aka RFC 3205) “On the use of HTTP as a Substrate”, which Verisign used to defend its position. Steve saw right through that, which is easier said than done; there’s a lot of subtlety there, as the XML Protocol WG response to the IESG (which I co-authored) describes.

Norm asks;

Given a random XML document, one of the things you might want to know about it is, “What is an appropriate schema to apply”? Now, for DTDs, this is a simple question: look at the document type declaration. If it has one, the public and system identifiers will tell you what DTD to apply; if it doesn’t have one, there’s no DTD to apply.

Sounds like a job for RDDL.

I’m in the middle (or perhaps its the end) of a conversation with Savas Parastatidis regarding a “radical” new form of Web service constraint. Consider his plan to send along this as a message;

<orderForm1>
  <carOrMotorcycle>car</carOrMotorcycle>
  <colour>blue</colour>
  <cc>1800</cc>
  <model>blabla</model>
</orderForm1>

Sure, there’s no symbol visible that can be mapped to an operation, but in order to understand what is being asked of a recipient of that message, something somewhere has to say what is being asked. Otherwise it would inherit the semantics of any underlying application protocol that transferred it – consider that it would mean different things to send it with HTTP PUT and POST – and therefore wouldn’t really be a message, just a piece of a message (representation anyone?).

Based on what Savas explains he wants that message to mean though, what he describes is semantically equivalent to HTTP POST, only without URI targetting, and with an implicit operation rather than an explicit one. I claim that this is a better version of his message;

POST some-uri HTTP/1.1
Content-Type: application/order-form+xml
<orderForm1>
  <carOrMotorcycle>car<carOrMotorcycle>
  <colour>blue<colour>
  <cc>1800<cc>
  <model>blabla<model>
<orderForm1>

It’s pretty funny to see pieces of Web architecture being rediscovered by Web services folks. Once the enormity of the big picture of the Web hits home with them, well … let’s just say that there’s a whole lot of walls on which I’d love to be a fly.

P.S. more uniform interface goodness from Bill.

BEA CTO Scott Dietzen gave one of those typical Q&A interviews in which he says a lot of the usual stuff you’d expect him, or any Web services proponent, to say about Web services. But he does say something interesting about UDDI;

I took an informal survey of our highest-end customers. We had our top 50 or top 40 end users in a user group together and I was astonished that all of them claimed they had transactional Web services in production and 60 to 70 percent had transactional Web services running between .NET and WebLogic in production. The UDDI[sic] adoption was much less.[sic] People were basically using URIs and URLs as their model for locating and binding into Web services.

and later,

I think it’s also clear that UDDI has been oversold.

Right. So Paul and I were right then?

I think there’s a critically important point being explained here; even in the face of hype-up-the-wazoo, customers will generally opt for simplicity. This is why it is possible for Web services/SOA to fail. All it takes is for customers to understand how to do things the simpler way. The use of URIs and GET is really very simple, so there’s no surprise it was first. Knowing how to use POST and URIs (without operations in the body) is tougher. But it’s just a matter of time before they figure it out, IMO.

A proposal of mine was recently accepted by the RDF Core WG which IMO, will help explain what RDF is for to a lot of people who don’t yet understand the important role it plays in the World Wide Web project. I believe this because I’ve used the RDF it permits, to successfully explain what RDF adds over vanilla XML to Exec types.

Consider the following. Is it XML or RDF?

<Person xmlns="http://example.org/foofoo/">
  <name>Mark Smith</name>
  <age>55</age>
</Person>

Answer? It’s both. Depending upon which media type it’s described with, it means different things.

To an XML application that isn’t hardcoded to know about that language, it’s an almost entirely opaque blob, except for the namespace.

To an RDF/XML application that isn’t hardcoded to know about that language, it knows what the XML app knows, plus;

  • that there exists a resource of type “http://example.org/foofoo/Person” someplace, with properties “http://example.org/foofoo/name” and “http://example.org/foofoo/age” with those values
  • that additional properties can be added without impacting the meaning of the former interpretation, i.e. potentially breaking some application somewhere. An XML app can’t assume this; it might be breaking its validity against some schema someplace
  • various other possible syntactic additions or modifications which can be used to extend the current semantics in a backwards compatible way, if desired.

This is the value of partial understanding.

In a report on Web services tools, PC Magazine‘s Robert P. Lipschutz writes;

Data-based strategies such as Roy Fielding’s REST (REpresentation State Transfer) replace SOAP and put the content, Uniform Resource Identifiers (URIs), and XML at the center of the equation. It’s too early to make the call on REST, but don’t rule this option out.