Semantic web researchers tend to assume that XML Schema and OWL-S are the correct means for representing the types, structure, and semantics of serialized 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 Binding Framework that connects object declarations with serialized representation. A basis of the framework is an Integrated Information Binding Annotation Metalanguage (iiBAM), embedded in Java or C# object and field declarations, designed to be particularly concise, to facilitate the authoring and maintenance of programs that generate and manipulate equivalent documents. In the present implementation, the serialization is performed as XML documents; support for other serialization formats is planned. 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.
s.im.pl serialization is part of the Interface Ecologylab
Fundamental API, which is being released as open source. In addition to
the Serialization and Object-Oriented
Distributed Semantic Services (OODSS), this API includes other component
bundles for building applications, storing and editing preferences, and
working with HTTP.
The framwork currently supports iiBAM declarations in Java and C#. It also supports cross-compilation of Java-based declarations into equivalent serializable objects in C# and Objective C>
S.IM.PL serialization generalizes the framework formerly known as ecologylab.xml.
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) |
| s.im.pl serialization | 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.
A guide may be found here.