Boeing technical fellow Telly Stroumbis did a great talk describing a prototype he made using data from the National Counter-Terrorism Center’s (NCTC) worldwide incident tracking system (WITS) database. He basically took a public database and, in his spare time, implemented an (infinitely) better search and discovery interface than the real one that’s on the NCTC site.
While not for the faint of heart (there was plenty of XQuery code), Telly showed the power of XQuery to perform tasks such as faceted navigation, auto-completion (which he pointed out would have helped Andrew McAfee in his failed attempt to find an academic paper and which generically avoids blind queries), tagcloud generation (with frequencies) — and even report generation using XQuery. He also demonstrated the power of recursion to make code powerful and compact. My conclusion: if you know what you’re doing you can write highly re-usable, very compact XQuery code and get a lot done in very few lines.
Concrete example: the key code behind his faceted navigation “fit on one screen in low resolution.”
On report generation, his idea is that it’s pretty easy in XQuery to build a report in XML and then transfer that XML over to a cheap reporting tool (e.g., JasperReports) for formatting. His demo in that regard was impressive.
He concluded saying that “while the Mark Logic folks hate it when they call it an XML database,” Mark Logic is “actually much more than an XML database. With its analytics, you don’t need a separate discovery product. With analytics and XQuery, you don’t need to buy a seperate reporting product.”
(He also referred to his talk last year where, on hearing Mark Logic’s claim to support sub-second query response at scale, he decided to verify it, building a 10 TB prototype, running benchmarks against it, and basically “throwing everything they could think of” at the system — and happily (for me at least) it passed with flying colors.)