JRDF is an attempt to create a standard set of APIs and base implementations to RDF (Resource Description Framework) using the latest version of the Java language. The API will cover anything that is deemed to be useful for Java programmers. A key aspect will be to ensure a high degree of modularity and to follow standard Java conventions. It will be similar to other standard Java APIs such as JDBC, XML, Collections, etc.
Current Java APIs for RDF have some drawbacks and many strengths. Some do not follow the current RDF specification exactly or lack features that are appropriate to certain use cases. Also, there are many common aspects to existing APIs with only slight differences in method names, package hierarchies and exception handling.
JRDF has the following features:
* A Graph API (including graph comparison and graph set-based operations),
* Creating and manipulating Graph objects (Statements, Resources, Nodes, etc.),
* In memory and disk based graphs with a standard system level interface for storing triples,
* IoC support (currently using Spring 2),
* RDF Datatypes,
* Local (where nodes are tied to a graph/store) and global (where they are not) RDF statements, and
* Query Handling including SPARQL support (including results, transport, etc).
* An RDF to Java object API (similar to Hibernate or Sesame's Elmo),
* Event Handling (addition/removal of nodes from a graph),
* Security, and
Being able to talk directly to a triple store in a common manner with the ability to swap differing implementations is one of the key aims of the project. There are obvious benefits, especially when running in the same JVM, that a common API provides. At the same time it will allow higher level APIs to be developed on top of the existing agreed upon APIs.
This project is based on the existing RDF libraries and is designed to include the best features from all available sources, such as:
* Aquamarine, and
* Sergey Melnik's RDF API.