Metacat is a flexible metadata database. It utilizes XML as a common syntax for representing the large number of metadata content standards that are relevant to ecology. Thus, Metacat is a generic XML database that allows storage, query, and retrieval of arbitrary XML documents without prior knowledge of the XML schema.
The Metacat database models XML documents as a DOM tree, basically decomposing the nodes of the XML document and storing the node data as a series of records in a relational database via a JDBC connection. At this point, only Oracle and PostgreSQL have been tested as a backend databases, but we have avoided RDBMS specific features in order to maintain portability to other relational databases.
Metacat is implemented as a Java Servlet, and so communicates using basic HTTP protocol semantics. The figure below shows the basic structure of the Metacat architecture. A well defined interface for inserting, updating, deleting, querying, and transforming (using XSL) XML documents is presented. We would like to add the DOM API as an alternative supported mechanism for interacting with Metacat, but have not yet implemented this functionality.