Hi there,

Lou wrote:
> I've also been watching this discussion with interest. We identified 
> exactly the same need when thinking about how the xaira indexer should 
> store information it needs to maintain in a corpus header. The present 
> solution (see for 
> full gruesome detail) is a very messy one -- I started from the 
> assumption that I didn't want to add any new elements, and rapidly 
> descended to rank tag abuse): until Martin's very neat solution came 
> along, we had been thinking we'd just have to use a separate namespace, 
> but now I think this kind of <appInfo> element offers something a lot 
> better.

I'll go ahead and develop an add-on module this week, then, and submit 
it to the list for discussion. I'll keep it as small as possible.

> What it doesn't help with is the unfortunate fact that sometimes an 
> application wants to use information which is already catered for by 
> some other TEI element. Some of the earlier discussion about the 
> tradeoff between what goes into the revisionDescription and what goes 
> into <appInfo> is one manifestation of this problem. In the case of 
> Xaira,  for example, the indexing app needs to know (and potentially 
> update) information about what elements are present in the file and what 
> human-readable gloss is provided for them: the "natural" TEI place for 
> that info is, of course, the <tagUsage> element. But xaira needs that 
> data to be structured in a specific way, which (in general) the TEI 
> doesn't and cannot mandate. So either you have to duplicate it in the 
> appinfo place, or you have to restrict the user's ability to mess with 
> the <tagUsage>, neither of which is very appealing.

I've begun to think that some duplication of information in the 
teiHeader is inevitable if TEI is going to perform its two essential 
(but sometimes contradictory) tasks:

1. TEI as an encoding format for specific projects. Here, the initial 
flexibility of the schema can be advantageous because it gives you a lot 
of room to find a comfortable fit for your needs; once you have that, 
you can then pare it down to something much tighter, but still 
conformant. I'm hoping P5 and the ODD system will make this much easier 
(and it looks like that will be the case).

2. TEI as a general interchange format. In practice, it seems to me that 
this is mainly an issue for the teiHeader. External applications are 
most likely to want to read metadata, and if we can identify the key 
bits of metadata they'll want to find (which you've already done with 
your guesser), we could then make a strong case for having a fixed 
location in which those items always appear (even if you also choose to 
put them somewhere else, to suit your needs).

I was actually just writing to Mark Olsen about this, and the above 
comes straight from my email to him. If external metadata parsers are 
going to be able to find the information they need reliably, they're 
going to have to know exactly where (for instance) the publication date 
of a document will appear in the teiHeader. On the other hand, if the 
subtleties of complex documents and markup schemes are going to be 
catered to, then users will also have to be free to put that information 
in other places, as part of structures that suit their purposes. So I 
think, we might sometimes have to put key info in two places, one 
completely predictable and mapped through a public specification to (for 
instance) Dublin Core and METS, and one idiosyncratic, making full use 
of the flexibility of TEI to best serve the needs of the project. I 
don't really think that's a terrible thing.
> I do not understand the purpose of  a global "tools" attribute. Could 
> someone give a specific use case? (and apologies if I've overlooked it 
> in the previous discussion)

The basic idea is that applications may want to mark blocks of the text 
as being particularly associated with them. For instance, imagine a tool 
which is specifically designed to help users manage the revision 
description part of a file. It would only ever work on that part of the 
file; it might well want to ensure that the tags and attributes it 
operates on conform to a particular format and usage which suits the 
ends of the application, and which is perhaps more restrictive than the 
schema in use, or P5 in general. It could mark the revision description 
like this:

<revisionDesc tools="RevDescManager2">

with the intention that both users editing the file manually, and other 
applications that might be used to work on other parts of it, would 
notice the association and tread more carefully than they otherwise 
might, avoiding making changes to that element because they may 
interfere with the RevDescManager2's ability to reload and manage the 
data in the element. At the same time, anyone reading the file and 
wondering how on earth the authors managed to maintain such a 
wonderfully clear and detailed revision description could see what app 
had been used to create it; they could they look up the app's creatorApp 
tag to find its full name and URL, and go and get it for themselves.

These are, admittedly, quite marginal benefits, and I think we'd all be 
very wary of introducing a new global attribute at this stage, but it 
would be restricted to a list of xml:ids which are already specified in 
a file's creatorApp tags, so it wouldn't be open to much tag abuse.


Martin Holmes
University of Victoria Humanities Computing and Media Centre
([log in to unmask])
Half-Baked Software, Inc.
([log in to unmask])
[log in to unmask]