Semantic web researchers tend to assume that XML Schema and OWL-S are the correct means for representing the types, structure, and semantics of XML data used for documents and interchange between programs and services. These technologies separate information representation from implementation. The separation may seem like a benefit, because it is platform-agnostic.
The problem is that separating data from code interferes with writing correct programs for practical document engineering, because it violates a primary principle of object-oriented programming: integration of data structures and algorithms. We develop an Object-Oriented XML Binding Framework (OOXBF) that connects Java object declarations with serialized XML representation. A basis of the framework is a metalanguage, embedded in Java object and field declarations, designed to be particularly concise, to facilitate the authoring and maintenance of programs that generate and manipulate XML documents. The framework serves as the foundation for a layered software architecture that includes meta-metadata descriptions for multimedia information extraction, modeling, and visualization; Object-Oriented Distributed Semantic Services; interaction logging services; and a user studies framework.
ecologylab.xml is part of the Interface Ecologylab
Fundamental API, which is being released as open source. In addition to
the OOXBF and Object-Oriented
Distributed Semantic Services (OODSS), this API includes other component
bundles for building applications, storing and editing preferences, and
working with HTTP.
Performance measures were computed using the bindmark XML binding benchmarks.
| framework / | marshalling time (nanoseconds) | unmarshalling time (nanoseconds) | runtime | ||||
| (# runs) | small (1000 runs) | medium (100) | large (10) | small (1000) | medium (100) | large (10) | size (KB) |
| ecologylab.xml | 39,004 | 1,528,674 | 7,151,383 | 289,966 | 5,815,660 | 35,446,572 | 176 |
| JiBX* | 35,943 | 1,719,212 | 15,627,181 | 70,420 | 5,683,769 | 39,249,876 | 141 |
| JAXB 2.0 | 65,749 | 2,223,438 | 10,567,599 | 362,868 | 14,889,646 | 87,146,075 | 3,800 |
| XStream | 413,465 | 18,373,301 | 173,198,604 | 719,290 | 28,818,238 | 211,358,650 | 368 |
| Castor | 1,183,407 | 11,831,280 | 55,922,610 | 1,813,563 | 22,926,830 | 162,330,464 | 3,000 |
| XML file size (KB) | 1.42 | 123 | 1,003 | ||||
| XML file lines | 55 | 1,817 | 8,567 | ||||
| XML file depth | 2 | 20 | 45 | ||||
*JiBX uses a binding compile step to optimize Java byte code for performance; this step is excluded from the benchmark.
Community support is supplied through the ecologylab api developers group. You may subscribe and contribute here:
JavaDocs for the Fundamental API are available here.
Access to the entire ecologylab fundamental project source is available through anonymous SVN access (username: anonymous, no password).
The binaries for Release 3.2 of ecologylab.xml
(only) are available here (176K). The binaries
for all of the ecologylab fundamentals are available here.