The Gnucash database?

Josh Sled jsled at asynchronous.org
Wed Jul 28 19:22:44 EDT 2004


On Tue, 2004-07-27 at 07:21, Mark H. Wood wrote:

> > > I don't see why it is *impossible* to load CSV data into Gnucash.
> >
> > Its not impossible, its just that one needs to write a GUI to
> > describe the data format to gnucash; how to map the various columns
> > of this flat file to thier gnucash equivalents.
> 
> It seems that we agree, more or less.  Of course the user must supply a
> mapping from one application's terms to the other.  It doesn't have to be
> done GUI-style, though; it could be supplied in (drum roll) another file.

Yes.  One could imagine the QIF and OFX importers being expressed in a
declarative manner.  It's pretty hard to see a clear path to the
implementation of that, however...

In the mean time [:)] we'd be happy to accept the code that allows the
user to map CVS columns into gnucash concepts.


> A common standard for exchange of financial data would be useful.  I don't
> see how RDBMSs have anything to do with that, though.

Yes.  In some respect, the most appropriate particular choice of tables
[the realization of data model] is going to be a function of the context
in which those tables are utilized.  A commmon data-model that suits all
applications is probably possible, but impractical.

But as an exchange mechanism -- things like OFX and QIF [modulo it's own
problems] are very good indeed.


> With respect to accounting and bookkeeping, an RDBMS improves upon paper
> records by making it easy to view the same heap of records in many
> different ways.  One of the problems with paper is that, once you've
> written, that's that.  Rearranging and filtering are possible on paper
> only by copying.  Stuff the data into a database, though, and you can ask
> for subsets, sorted and grouped to order, without the problems inherent in
> the maintenance of duplicated data.

Another way of saying this is that expressing the relations between data
[within a generic relational algebra] is a wonderful mechanism for doing
a lot of practical things that people want to do, such as query,
intersect sets, &c.


> This doesn't help a lot with exchange, though.  The common language for
> accounting metadata is still missing.  At most one can achieve, not a
> universal exchange, but a bunch of bilateral agreements about exchange.

You're exactly correct.  It's all about the semantics [not the syntax]
-- and moreover on the _agreement_ on both the syntax and semantics. 
XML has resonated very well with a lot of people because they thought it
would help solve this; unfortunately it turns out that it's primarily a
_syntactic_ agreement -- it defines a particular way of writing
structured information, but not enough of a framework to enable the
interelation of meaning.

[FWIW... RDF [1] is increasingly ... interesting ... to many people
since:
a/ it specifically addresses semantics primarily, and syntax 
   secondarily.
b/ it does have a proscribed XML representation.
c/ it has easier-to-use representations [2] that are _not_ XML  :)
d/ it inherently represents graphs, not simply trees.
e/ the framework it represents supports the _sharing_ of 
   properties, rather than the redefinition that XML 
   encourages.
]


But the key problems remain:
* what is a "transaction"?
* how do we identify an "account"?  name it?  type it?
* how do we represent commodity/currency and monetary amounts?


> The various EDI standards have nibbled at this problem, although
> accounting is not the only thing they're aimed at.

Yeah, that's been the problem I've seen in looking for existing
standards in this area -- they're all about "bigger" things, which make
it seem like a lot of baggage is going to need to be pulled in.  If
anyone has seen anything simple that would be a reasonable interchange
format for GnuCash data please let us know.  Otherwise, we'll have to
define it later ...

... but only after the gnome2 port is done. :)

...jsled

[1]: http://www.w3.org/RDF/
[2]: http://www.ilrt.bris.ac.uk/discovery/2004/01/turtle/

-- 
http://asynchronous.org/ - `a=jsled; b=asynchronous.org; echo ${a}@${b}`


More information about the gnucash-user mailing list