Tony Austin wrote:

>     XML will be one of the formats we can save to, but it is nearly
>     useless when writing new syntaxes which you want to compute with.
>     What XML is good at is only one thing really: platform independent
>     machine representation and machine-to-machine communication.
>
> That's two!

we have a different counting system in the antipodes;-)

> For example, OWL has an abstract syntax - see 
> http://www.w3.org/TR/owl-semantics/syntax.html - you might notice that 
> raw RDF is nearly impossible for humans to read or think with.
>
> From http://www.w3.org/TR/owl-semantics/ it seems that the abstract 
> syntaxes are used to restrict the possible expressions of OWL into 
> smaller subsets. Full OWL has the same syntax as RDF:
>
>         First, Section 2 contains a high-level, abstract syntax for
>         both OWL Lite, a subset of OWL, and OWL DL, a fuller style of
>         using OWL but one that still places some limitations on how
>         OWL ontologies are constructed. Eliminating these limitations
>         results in the full OWL language, called OWL Full, which has
>         the same syntax as RDF.
>
not quite - have a look at for example some of the test cases:
http://www.w3.org/TR/owl-test/byFunction#function-FunctionalProperty - 
this is raw RDF. I don't know how many people, if they're being honest 
would say this is a readable syntax. There are some small examples of 
the mapping of the abstract syntax to the concrete at 
http://www.w3.org/TR/2002/WD-owl-semantics-20021108/examples.html.

>
>
> I've removed the comments in the second extract. Now I'm not sure 
> about anyone else, and it may have a lot to do with my not being 
> especially mathematically minded, but I don't regard myself as a 
> "tortured soul" (page 12 para 2) for having relatively less difficulty 
> with the first than the second. And I think it could be parsed by a 
> schema-reading XML parser?

all I would say there is that XML tags aren't there for humans to read - 
I have talked about this with a lot of people, and interestingly, at an 
XML conference in Sydney last year heard a couple of the W3C core people 
say more or less the same thing. Prof. Joachim Dudeck from Geissen 
university in Germany always precedes the main part of any talk by a 
statement to the effect "XML is not meant for humans - no-one should 
ever read it, only machines". What I meant by 'tortured souls' was 
simply that there is a widespread misunderstanding about XML in the IT 
world - which is that, because you can open an XML file with a text 
editor, it is somehow intended to be directly worked upon by humans; on 
any non-trivial piece of XML, you do (in my opinion) have to be fairly 
tortured to try and read it, rather than find a human-oriented 
equivalent (which almost always exists).

But I take your point, I hadn't actually realised that anyone might 
compare the two syntax fragments in the light of this statement. In any 
case, the OWL fragment should be replaced by a piece of abstract OWL.

>
>     We don't write in XML when writing in Java for example.
>
>
> I won't unduly labour the point but that is probably more to do with 
> the compactness of the latter than the lack of human readability of 
> the former:
>
> <package>org.openehr.a_package</package>
> <public><class>A_class<implements>Another_class</implements>
>
> vs.
>
> package org.openehr.a_package;
> public class A_class implements Another_class { ...

well, that's one example where the syntaxes are somewhat close, but try 
reading this (fragment of physical exam from CDA document):
-----------------------------------------------------------

                <table>

                  <tr>

                    <th>*Date / Time*</th>

                    <th>*April 7, 2000 14:30*</th>

                    <th>*April 7, 2000 15:30*</th>

                  </tr>

                  <tr><th>*Height*</th><td>*177 cm (69.7 in)*</td></tr>

                  <tr><th>*Weight*</th><td>*194.0 lbs (88.0 kg)*</td></tr>

                  <tr><th>*BMI*</th><td>*28.1 kg/m2*</td></tr>

                  <tr><th>*BSA*</th><td>*2.05 m2*</td></tr>

                  <tr>

                    <th>*Temperature*</th>

                    <td>*36.9 C (98.5 F)*</td>

                    <td>*36.9 C (98.5 F)*</td>

                  </tr>

                  <tr><th>*Pulse*</th><td>*86 / minute*</td><td>*84 / 
minute*</td></tr>

                  
<tr><th>*Rhythm*</th><td>*Regular*</td><td>*Regular*</td></tr>

                  <tr>

                    <th>*Respirations*</th>

                    <td>*16 / minute, unlabored*</td>

                    <td>*14 / minute*</td>

                  </tr>

                  <tr><th>*Systolic*</th><td>*132 mmHg*</td><td>*135 
mmHg*</td></tr>

                  <tr><th>*Diastolic*</th><td>*86 mmHg*</td><td>*88 
mmHg*</td></tr>

                  <tr><th>*Position / Cuff*</th><td>*Left 
Arm*</td><td>*Left Arm*</td></tr>

                </table>

              </text>

              <component1>

                <typeCode code="*COMP*"/>

                <contextConductionInd value="*TRUE*"/>

                <cdaEntryObservation>

                  <classCode code=???*OBS*???/>

                  <moodCode code=???*EVN*???/>

                  <code code=???*F-01851*??? codeSystem=???*SNOMED*???

                    displayName=???*Body height measure*???/>

                  <effectiveTime value=???*200004071430*???/>

                  <value xsi:type=???*PQ*??? value=???*1.77*??? unit=???*m*???>

                    <translation value=???*69.7*??? code=???*[in_I]*??? 
codeSystem=???*UCUM*???/>

                  </value>

                </cdaEntryObservation>

              </component1>

              <component1>


-----------------------------------------------------------

now, you can read it, sort of (it's a table), but it isn't at all 
obvious what it means until you convert to a human consumable form, 
which is of course what an XML browser will do to display it on the 
screen. Now, go and compare a UML model with its XMI equivalent. You 
have no hope of reading the latter, because not only are the XML tags 
against you, but the classes and attributes are in different sections of 
the text - good for machines, no use to humans.

I would also say that if you go back to the programming language 
example, you will find that almost all programming languages have a) 
stronger semantics (e.g. ability to express functions, proper 
inheritance), b) use of visual real-estate in the displayed text more or 
less obeys the rule that visual area used corresponds to importance (it 
never does in XML - it's mostly repeated tags you don't need to see), c) 
the style of syntax is tailored to the kind of problem the language was 
designed for.

I have nothing against XML, for its intended purpose, but I do have a 
big problem with the idea that humans should use it as a syntax for 
thinking or reading.

>
>         After all, parsing is easy,
>
>
> I'm not sure that this is justified. Parsing is difficult. 

I would have to disagree there - it takes me about a day or two to build 
a basic parser for any published language, given yacc/lex programming 
tools & libraries.

> As you well know, I still can't use your ADL parser and that is 
> presently the only entr??e into the use of the language you have 
> defined. Contrast this with the many parsers that Ergin Soysal alluded 
> to. Writing a syntax is "easy" in the sense that you can sit down one 
> day and dream one up, but that doesn't give it market credibility or 
> widespread support.

well, when the ADL XML-schema is published, all the XML-schema parsers 
will be able to read it, and that's certainly an intended outcome. But 
we couldn't have easily defined the semantics of ADL if we were limited 
to something like XML-schema to do it - at least we would want UML. And 
you still wouldn't be able to show someone a text of an archetype that 
they could understand, where as an abstract syntax does have the 
property of being explainable. But don't get me wrong - the XML stuff is 
coming, it just takes a bit of time to get it all done. Also, don't 
forget, the XML view of the world only gives you the data view; but 
there is an API based on the functional part of the model behind ADL - 
for this purpose, we still need to use programming languages (and/or 
WSDL equivalents).

I would like to defend the parser a bit - it's not totally useless: once 
it has a Java interface, we will have covered the .Net and Java flavours 
of the world, and for a lot of people, it is very useful to just re-use 
such a component, benefitting from a growing, maintained, and widely 
tested code base, just as for e.g. James Clark's original XML parser, 
which gets wrapped into every language. The parser by the way will grow 
to handle all the main XML formats.

>
>     Saving ADL as XML is easy, but then of course it is no longer
>     readable in any meaningful way by humans, just by machines.
>
>
> In the version of the document I cited above there are a number of 
> object models given (which I haven't had a chance to unpick yet). It 
> might be contended that ADL is also only really readable by machines, 
> given the highly mathematical nature of its format and at the least 
> the enormity of a likely script. Now, given the object model, is there 
> any longer a special need for ADL? 

well, there is a need for an interoperable, lossless representation of 
archetypes. ADL is one possibility - it's text, which also happens to be 
readable by (some) humans. If it turns out that the community prefers 
another serialisation, e.g. XML-schema instance, OWL or YAML, for all I 
care, then I have no problem whatsoever - ADL will then become a 
primarily explanatory tool. But two things are worth pointing out: many 
people do like to use abstract syntaxes (it's why math and music 
notation exist...), and secondly, the experience so far with converting 
archetypes to XML has had its problems - the DSTC has been doing it for 
some years now, and you do get problems, mainly because XML-schema 
cannot adequately represent everything in UML (its inheritance model is 
broken, for a start), and you end up having to embed annotations to 
avoid being lossy. But that's probably a detail. I have no personal 
preference for what interoperable concrete syntax is chosen by industry, 
or the community, only that it be able to represent the required 
semantics properly.

> Am I right that the stated purpose was to enable archetype development 
> unencumbered by issues associated with additional syntax? Is not the 
> object model now the necessary and sufficient condition to call that 
> process "done"?

I hadn't really thought about it in those terms I have to say. I have 
received emails from people saying that they love using ADL, including 
in fields outside of health; other people prefer to think in XML, or 
UML, or functional interfaces - clearly the world is a diverse place. 
The only claim I would make for ADL is that it precisely embodies a 
conceptualisation of the problem and solution so that the problem can be 
further thought about; I think some people and tools will continue to 
use it, others won't.

> Put another way, do you see an archetype repository as a persistence 
> engine for objects of the sort given in the document, with ADL just 
> one of a range of languages for inserting and retrieving archetypes?

well, we need an archetype library (for collaborative authoring), 
archetype servers (for runtime access in interoperable format) and in 
some sites, local archetype repositories (for access to archetypes 
converted to an efficient local form).

In sum, ADL represents one entry point into the world of archetypes, 
allowing its authors to develop other representations etc, which may be 
more interesting than the original; I see this as a natural evolution 
that occurs with any attempt to formalise an idea into computable form.


- thomas



-
If you have any questions about using this list,
please send a message to d.lloyd at openehr.org

Reply via email to