Annotations [was Re: Apps Messaging -- A New Approach

John Taylor jontayler at gmail.com
Mon Apr 30 06:47:08 PDT 2007


On 30 Apr 2007, at 12:54, Mark Taylor wrote:

> On Fri, 27 Apr 2007, Mike Fitzpatrick wrote:
>
>>>> Message Annotation
>>>>
>>> Consider an mtype used to request that an  application "loads" a  
>>> table:
>>>
>>> process.table.votable with parameters (id="nobel prize",  
>>> url="http://
>>> foo.com/adf")
>>>
>>> We (this group) define this mtype and the argument list that goes
>>> with it.  An applications that supports (ie, can receive) this
>>> message is free to annotate it with non-standardized annotations,  
>>> for
>>> example,
>>>
>>> process.table.votable at load
>>> process.table.votable at convert
>>>
>>> On or after registration, the application would declare that it
>>> supports:
>>>
>>> 1) process.table.votable
>>> 2) process.table.votable at load
>>> 3) process.table.votable at convert
>>
>> 	I'm still not sold, angering the registry zealots by using ivorns
>> might have made for a more compelling example though.

In that case just substitute ivo://votech.org/votable/loadFromURL for  
process.table.votable and "#" for "@".


>> Persumably we
>> would need a small, controlled vocabulary for these annotations to be
>> meaningful to machines, and apps would be free to make up their own.
>
> No, the vocabulary for annotations is completely uncontrolled,
> applications always make up their own.  For a controlled vocabulary
> you'd stick to the message type (opaque URI in PLASTIC, perhaps  
> mtype in
> future).

I think this is the essential difference, and that the annotations  
can be made up dynamically.  Here's an (albeit contrived) example.   
You've loaded a VOTable into Topcat, called "table1".  Topcat  
immediately declares to the world that it supports a new message:

process.table.votable at append_to_table1.

All the other applications on the user's desktop now magically have a  
new option in their menus.  Assuming that they have a table ready  
that they can send to other applications, they will have the option  
"table2->topcat->append to table 1"
No long discussion on this list required.  You don't even need to  
recompile.  Or even restart.


>
>> So, how is annotation any better than simply using mtype classes  
>> such as
>>
>> 	1) process.votable
>> 	2) load.votable
>> 	3) convert.votable
>>
>> You can still send the data to any app responding to a *.votable  
>> message,
>> use the generic 'process.votable' to get the default action or one  
>> of the
>> others to get a specific action.  An annotation such as
>> 'process.table.votable at flibbity' is essentially a private message  
>> since
>> I would have to know what the 'flibbity' did to use it, same as I  
>> would
>> for a 'flibbity.votable' mtype class.
>> 	If the annotation is strictly for human readable GUI menus I'd
>> prefer to see it as a 'getDescription' type of message.
>
> Yes, the distinction between messages with the same mtype and  
> different
> annotations is intended to be intelligible by humans and not machines.
> Some kind of getDescription message could work, though would have to
> be capable of returning either 0, 1 or more annotations for a given
> mtype (so the specification might be a bit messy).  The form of these
> annotations was cooked up to be backwardly compatible with existing
> PLASTIC messaging; I happen to think it looks reasonably elegant,
> but other ways of providing human-directed annotations are possible.
>

I think I see where Mike is coming from now.  To make use of these  
annotations, you need a human in the loop to interpret them.   What  
if my application depends on your app, and absolutely must have the  
function "convert votable to fits" available?   If these annotations  
aren't controlled then how can my application rely on  
process.table.votable at convertToFits?  You could change it tomorrow.
My answer would be that you don't _need_ to use the annotations all  
the time, and it's perfectly sensible to have a specialised  
unannotated mtype that maps onto the same function.  If my app is so  
closely coupled to yours that I can't do without it, then I need to  
speak to you about exposing your API through (potentially private)  
mtypes.  Ideally I'd do it through this forum, and if the function is  
of general interest then the mtype could become part of the IVOA- 
controlled vocab.

John











More information about the apps mailing list