XDI ("XRI Data Interchange") is a data model and protocol for sharing, linking, and synchronizing data over the Internet ("structured web") and other networks using XML documents and Extensible Resource Identifiers (XRIs). It is being developed by the OASIS XDI Technical Committee.
The Higgins XDI4j component is a general-purpose Java library that implements XDI.
Applications that use XDI4j are:
- The Community Dictionary Service.
- The XDI Validator.
- The XDI Converter.
- The XDI Messenger.
- The Higgins IdAS XDI Engine.
- The Higgins XDI Context Provider.
XDI4j is a component for use by other components and applications. It is not used by end-users directly.
See XDI4j Tutorials for some examples of how to use the XDI4j library.
The core functionality of XDI4j is to implement the XDI graph model and to allow basic operations on that model. XDI graphs can be stored in memory, in XML files or in a database. Additional functionality includes:
- (De-)serialization of XDI in the main XDI serialization formats
- XDI messaging
- An XDI server including a framework for building custom XDI endpoints
- Versioning support
- Addressing support
- Support for specialized XDI constructs such as dictionary, language, type and metadata statements
The following diagram outlines how the main components of XDI4j play together:
The XDI4j Higgins project is:
This project can be checked out from the Eclipse repository at the following SVN URI:
Because of Eclipse restrictions some of the XDI4j third party dependencies cannot be checked into the SVN. These dependencies have to be manually downloaded from https://camelot.parityinc.net/~msabadello/xdi4j/lib.zip and installed into the lib/ subdirectory after checking out the sources.
Building with GCJ
Some parts of XDI4j can be used from within C and C++. In order to do so, the library needs to be compiled with GCJ. The org.eclipse.higgins.xdi4j project contains a Makefile for the GNU Make utility which can be used to create C++ header files and object files for linking C++ applications with XDI4j. The project also includes a C++ sample application which sends an XDI message to an endpoint.
The following features of XDI4j are not available when built with GCJ:
- XML as an XDI serialization format
- XML as an XDI store
- Hibernate as an XDI store
- Support for URI and IRI normal forms of XRIs
- XML messaging target
- XRD messaging target
- The XDI RDF Model is the current OASIS TC proposal for an RDF-based data model and addressing format for XDI. This document includes the proposed XDI RDF schema and a number of examples of XDI documents. (Note that it does not yet include the proposed XDI messaging format, which uses XDI documents as message envelopes for other XDI documents.)
- OASIS XDI TC Wiki
- Wikipedia page on XDI