I've got XStreamDB up and running, storing over 2000 IMS metadata records, as well as a few DublinCore and RSS files to test out multi-schema queries.
It works like a charm. It's got full text indices on all metadata stores (I've created roots for each schema - analogous to tables in RDBMS land). I've added a "Meta" root that will store audit-type info for each metadata document (creator, creation date, permissions, ...) and have whipped up a simple XQuery statement that will retrieve all metadata documents associated with a given Meta document (using GUIDs to identify assocations - again, analogous to table joins in RDBMS land).
Once I've added the proper value indices on the various XPaths representing the guid, it works. And it's stunningly fast. Sweet.
Next, I have to work up an EOAdaptor to get simple queries running within WebObjects. And, implement some semantic path mapping (so I can just say "
Search for all documents with the term 'earth' in their title" and the EOAdaptor will map that out to "
in IMS docs, look in /lom/general/title/langstring/text() for the term 'earth' ..."
XQuery is stunningly powerful. I've got it returning a proxy document representing search results, with common elements from all schemas I'm testing (title, description, location, format...) Works great.
P.S. XStreamDB uses shell scripts to start both client and server apps. They work fine, but are a hassle (you have to open a shell, cd to the proper location, invoke the script...) Anyway, I wanted to minimize this (I don't mind doing this once in a while, but it gets tedious after a while), so I wrote a shell script to call the other shell script, and wrapped that in a Platypus app. Now, I have double-clickable applications to launch both client and server. Available to anyone that wants them.