OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-core message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: RE: Getting Back to Basics - How to describe Dates and Times andEvents?


W Kammerer said, regarding my date object,
> <transactionDate> snippet still has remnants of specificity in the
> name - the "transaction" should be dropped from the label, or maybe it
> should be called <DateTime>.

That's right but here's how that happened: there's a transactionDate
on the header and entryDate on each row.  I want the GL messages
to be read or written by very low-tech parsers.  If every element 
name is unique, you can search for a tag and know exactly what 
you're dealing with when you find it. 
 
> Todd is "...still not convinced to support multiple 8601 datetime
> formats, or the xsd:datetime strings."  But he doesn't have to
> explicitly support multiple formats - the ISO 8601 Date Time format can
> unambiguously represent all sorts of dates, times, Date-Times or
> periods - there's no need for qualifiers.  I suspect we can get by just
> defining a sub-element <value> as xsd:dateTime. 

That may be true but I want the string parser to be able to find
dates and segment qualifiers without having to support many kinds 
of datetime formats.  When you're actually writing code to interface
the GL schema with some desktop app, you are dead in the water if 
you have to support all the format options in xsd:datetime or
ISO 8601.   Stubbornly I insist on treating these XML ledger messages
as just another ascii-delimited format, except that it is also 
forward-compatible to be accessible by XML parsers.  I could be wrong. 
Any comments are welcome. 

> follow along in http://www.unece.org/trade/untdid/d01a/content.htm.
> 
> The <docRef> example avoids having separate derivations for
> "invoiceNumber", "poNumber", etc. and instead uses something like
> Edifact 1153 strings:
> 
> <docRef>
>   <docType>Invoice</docType>       (required)
>   <docNum>ABC-12345</docNum>       (required)
> </docRef>
> 
> The <docType> element presumably is somehow derived from EDIFACT D.E.
> 1153.  For simplicity, the ultimate type should use an EDIFACT code
> value (rather than the English name of the code).  And documents are
> better described by D.E. 1001  (Document name code) as used in composite
> C002 DOCUMENT/MESSAGE NAME, rather than D.E. 1153 (Reference code
> qualifier) as used in the composite C506 REFERENCE.


Yes, my docType element is intended to enclose a fixed, finite set of
strings having normative meanings such as EDIFACT 1001 document types.
Did I say 1153?  Thanks for the correction.

So we have something which is actually metadata, but it is outside the 
tags.  I don't see a problem with this and relieved to see XEDI and others
using this approach.

Frankly the users of my GL schema would agree on some strings fewer 
than the full selection of EDIFACT 1001 document types.  I hope 
ebXML or EWG identifies a smaller subset.  I hope to identify
20 or 30 document types as starter set for SMEs.  The lightweight,
fast, cheap model blows up if it has to support ten lists of 25K
each, over 500 items like "Declaration regarding the inward and 
outward movement".  Remember we're hoping for something that does
not require customization *in most cases.*  This is not the same
goal as EDIFACT "all encompassing".  (If its so bloated it cannot
be handled by SMEs resources then that's not "all encompassing" 
anyway.)  

For a reality check notice that Intuit has 80 or 90% of the SME 
market and has published their QBXML vocabulary, having a core 
vocabulary of 391 words (5.4K)  Their whole vocabulary is less than the 
579 metadata types just in D.E. 1001 Document types (15.4K). 

If 391 elements is enough for 90% of the SME market, that's 
good enough for me.  Nobody needs a GL with a vocabulary 
of 10,000 words.

But the docType class will do EDIFACT D.E. 1001 if you want to.

> Todd's last example:
> 
> <code>
>   <codeList>DUNS</codeList>              (required)
>   <codeValue>999999999</codeValue>       (required)
> </code>
> 
> looks more like a Party ID based on a DUNS.   So instead of the generic
> name <code>, it should be something like <PartyID>.  

Oh yes - of course.  The "code" class is used for product and a bunch
of other crap.  I believe the same "code" class needs to be used internally
by a webledger or web app for most codes, because they are flowing across
company lines now.  FOr example many POs have things like

 <buyerPartNum/>
 <sellerPartNum/> 

Why shouldn't the values be namespace:value pairs.   Why shouldn't
everybody just start using shorthand, like DUNS:2342342342 or 
EAN:1231123123?  This would simplify everything so much.  I thought
this was what XML Namespaces was supposed to give us, back in 1999.  
The technology is just sitting there.   Oh well.  Not within my
power to influence these things at all.  So I chisel away with
my tag structures.

Anyway, my idea of a party is that it uses the same "code" class
as product and a lot of other components, something like

<party>
   <code>
     <codeList>DUNS</codeList>              (required)
     <codeValue>999999999</codeValue>       (required)
  </code>
</party>

So, you and I are still using the specific word, "party"! Do you
feel unclean?  You could be meta meta meta and have a three-column
general ledger like this:

Date
Amount
Code+   and define the code class to have (codetype, codevalue, codelist)

CodeType would include "accountCode", "partyCode", "journalCode", 
"taxCode", everything in the GL. Why arent everybody doing this... :-O

> The EDIFACT
> composite C082 PARTY IDENTIFICATION DETAILS depends exclusively on the
> ubiquitous 1131/3055 D.E. pair to specify the type of Party ID.  For
> example, if you have D.E. 3055 Code list responsible agency code set to
> '9' - EAN (International Article Numbering association), it's clear that
> you're using a UCC/EAN GLN (Global Location Number - kind of like a
> D-U-N-S). Alternatively, if D.E. 3055 is '16', we're relying on Dun &
> Bradstreet to supply the DUNS.

This is interesting-- I am too tired to get all the implications of that,
right now.  The one thing that pushes my buttons is the substitution of
EDIFACT alphanumeric codes for the underlying string.  

A word about compression.  If todays CPUs and compression algorithms
were available when EDI was conceived, does anybody seriously think
EDI would look the same as it does today?  Especially if we had
XML with fixed vocabulary of maybe 100 words, in the SME subset of
my GL schema.  The compression software would not even need to 
index the known tags, it could tokenize them on the fly and it would
only have to compress the string values in the XML file.  Thing would
scream.  And the files would be smaller than even a compressed 
edifact file. Because your EDIFACT compression would have to both
index and compress the 2 and 3 digit codes.  IF my schema has 100
words it just substitutes a 1 byte token for each tag or endTag,
because it knows them all.  

Anyway the readability dominates the equation.   My belief is the
readability of the XML document is so important, especially over 
the coming years of implementation, that the original strings should
be used.   

Everything will not go smoothly when SMEs start sending and receiving
orders, invoices and payments over the internet.  Your office PC guru
has to be able to find and fix things.  Ordinary developers who don't 
know EDIFACT need never to learn it, or even to know the document 
metadata is subset of EDIFACT. This saves Billions in training costs. 

Human readable XML also may have some comfort factor for SMEs, 
which is important in this adoption phase.  For example, they will
want to know what's going in/out to the internet.  With XML, they
don't have to trust the vendor quite as much; they can read it 
with a browser.  And apply non-EDI tools for logging, reports etc.

I want to see lots of people write simple little interfaces on their
business applications, and amortize the cost over 10 years of stable
use, just like EDI users today. An invoice is an invoice.  an amount
is an amount. 

Thanks William for all your tips and references whew, you have me
working overtime this week.

Todd



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Search: Match: Sort by:
Words: | Help


Powered by eList eXpress LLC