RDF2Go

RDF2Go is an abstraction over triple (and quad) stores. It allows developers to program against rdf2go interfaces and choose or change the implementation later easily.

About
The three main features of RDF2Go are:
 * Program now, decide on triple store later - triple-centric API
 * Easy to extend - only a few simple methods have to be implemented by a triple (or quad) store
 * Triple and quad support - All techniques are available for triple and quad models

RDF2GO is released under the new BSD license. Alternative licensing is possible, just ask us. The project is funded by the European projects funded by::Knowledge Web and funded by::NEPOMUK.
 * Bookmark-URL: http://rdf2go.semweb4j.org (this page)
 * See also: RDF2Go on Ohloh

Download and Maven access

 * Download releases from directory
 * For changelog, please consult the module-changelogs

Maven repositories for all modules: semweb4j-repo Semweb4j.org maven repo http://semweb4j.org/repo/ true semweb4j-snapshots Semweb4j.org maven snapshot repo http://semweb4j.org/snapshots/ false true always fail

Maven dependencies:

org.semweb4j rdf2go.api 4.7.4

For the module dependencies just look in the repository and browse to the respective pom.xml file: http://mavenrepo.fzi.de/semweb4j.org/repo/org/semweb4j/

Jena Adapter (rdf2go.impl.jena24)
Implements the API and extends the impl.base classes. Delegates all calls to a Jena 2.4 model. This adapter provides only a Model implementation, no ModelSet, as Jena has no support for quads. (The new SDB or NG4J extensions have not been used due to lack of time, feel free to help out)


 * Maven reports including links to JavaDocs, changelog, source code as HTML, JUnit test results, developer team, dependencies, list of open TODO tags in the code, ...
 * Releases (consider downloding the distribution instead)
 * Anonymous Subversion (use https:// for developer access)
 * Status: up-to date with RDF2Go 4.6 API

Jena Adapter (rdf2go.impl.jena26)
Implements the API and extends the impl.base classes. Delegates all calls to a Jena 2.6 model. This adapter provides only a Model implementation, no ModelSet, as Jena has no support for quads. (The new SDB or NG4J extensions have not been used due to lack of time, feel free to help out)


 * Maven reports including links to JavaDocs, changelog, source code as HTML, JUnit test results, developer team, dependencies, list of open TODO tags in the code, ...
 * Releases (consider downloding the distribution instead)
 * Anonymous Subversion (use https:// for developer access)
 * Status: Finished, donwload from http://semweb4j.org/repo/org/semweb4j/rdf2go.impl.jena26/4.7.3/

Sesame 2.3 Adapter (rdf2go.impl.sesame23)
Implements the API and extends the impl.base classes. Delegates all calls to a Sesame 2.3.1 repository. This adapter provides a Model and a ModelSet implementation.


 * Maven reports including links to JavaDocs, changelog, source code as HTML, JUnit test results, developer team, dependencies, list of open TODO tags in the code, ...
 * Releases (consider downloding the distribution instead)
 * Anonymous Subversion (use https://</tt> for developer access)
 * Status: up-to date with RDF2Go 4.7.3 API

OWLIM (com.ontotext.trree.rdf2go)
Implements API and uses a BigOWLIM SAIL as part of the SemanticSpaces project.

Maven repository sti2-archiva-external</id> http://maven.sti2.at/archiva/repository/external sti2-archiva-snapshots</id> http://maven.sti2.at/archiva/repository/snapshots

The current release version is 0.0.2, the current development version is 0.0.3-SNAPSHOT. eu.soa4all.semanticspaces</groupId> owlim-rdf2go</artifactId> 0.0.2

The source code of the working version 0.0.2 including the OWLIM rdf2go adapters is now also available publicly on sourceforge.net: http://semanticspaces.svn.sourceforge.net/viewvc/semanticspaces/trunk/

Modules
RDF2Go consists of several parts that together make up the distribution. The JARs are named org.semweb4j.*</tt> and the Java packages in the JARs are still named org.ontoware.*</tt> to maintain compatibility with existing deployments.

In previous versions of RDF2Go there was a YARS adapter which is no longer maintained due to lack of time. Do you want to help out? Contact us!

Note: As of RDF2Go 4.7.0 the module structure has been simplified. Only the modules listed here are relevant. Discontinued modules are still in SVN

API (rdf2go.api)
This module contains the API (interfaces and classes) as well as base implementation classes (such as AbstractModel). The module also contains utility classes running on top of any adapter, e.g., the RDFTool class developed by DFKI.

See also
 * Maven reports including links to JavaDocs, changelog, source code as HTML, JUnit test results, developer team, dependencies, list of open TODO tags in the code, ...
 * JavaDocs
 * Releases (consider downloding the distribution instead)
 * Anonymous Subversion (use https://</tt> for developer access)

The last release of the API was April 11, 2009. The API is stable and currently no changes to it are planned.

Test helper (rdf2go.impl.base.test)
The abstract base classes for tests. These need to be in their own project to keep the API jar lean and allow other projects to re-use this code for their tests. This follows Maven and OSGI packaging guidelines.
 * Maven reports including links to JavaDocs, changelog, source code as HTML, JUnit test results, developer team, dependencies, list of open TODO tags in the code, ...
 * Releases (consider downloding the distribution instead)
 * Destin Beach Weddings
 * Anonymous Subversion (use https://</tt> for developer access)

Distribution (rdf2go.dist)
This is a simple maven project that helps to create a complete distribution. It's mainly a pom.xml file with dependencies to other rdf2go parts.

Documentation and Tutorial

 * Lesson 1 - 4 - Introduction (maybe slightly outdated)
 * FAQ - Frequently asked questions
 * RDF2Go/CodeSamples
 * User Guide and FAQ
 * RDF2Go/Building From Source
 * Binding explained - RDF2Go has several ways to configure which triple store driver (aka adapter) to use.
 * A deliverable that describes RDF2GO can be found here.
 * How to write a RDF2GO adapter for your triplestore (new)

Related Projects
 * To generate domain-specific Java classes you can use RDFReactor, RDF2Java or other projects mentioned on Tripresso.

Road Map
For future versions suggested changes are:
 * Cleaner SPI interface (API is for users, SPI is for those people implementing the adapters)

Contact, Feedback, Help

 * new Semweb4j Google Group - the best place to ask for help
 * old Developer mailing list including archives
 * Issue tracker

Acknowledgements
 * Initial idea: User:Max Völkel
 * Coding, testing, debugging: User:Max Völkel, Benjamin Heitmann, Werner Thiemann, Sebastian Gerke, Leo Sauermann
 * European Projects supporting this research: Knowledge Web, Nepomuk

Who uses RDF2GO?

 * used by::RDFReactor - Object-oriented RDF access in Java, no RDF knowledge required at all (but an RDF Schema)
 * used by::SemVersion - Versioning for RDF
 * used by::Aperture - extracting and querying full-text content and metadata from various sources
 * used by::Hyena - Universal RDF editor
 * used by::NEPOMUK
 * used by::SemFS
 * used by::Theseus, Alexandria, in basic technologies
 * SOA4All
 * The Fascinator - eResearch publication metadata management
 * Amdatu - Open Source platform and runtime for open, service oriented and cloud aware applications
 * RDFBeans - an OO-Mapper for RDF using annotations

'''Are you using RDF2Go? Please add yourself to the list.'''

How to use RDF2Go as a Semantic Web developer
Example releases since version 4.3.x: public static void main(String[] args) throws ModelException {

// getting model Model model = RDF2Go.getModelFactory.createModel; model.open;

// creating URIs URI max = model.createURI("http://xam.de/foaf.rdf.xml#i"); URI currentProject = model.createURI("http://xmlns.com/foaf/0.1/#term_currentProject"); URI name = model.createURI("http://xmlns.com/foaf/0.1/#term_name"); URI semweb4j = model.createURI("http://semweb4j.org");

// adding a statement to the model model.addStatement(max, currentProject, semweb4j); model.addStatement(max, name, "Max Völkel"); // dumping model to the screen model.dump;

// query model for all names of max for(Statement stmt : model.getStatement(max,name, Variable.ANY) ) { // do something System.out.println( stmt.getObject ); } }

How to contribute to RDF2Go
It's a good idea to first announce on the list, what you want to do, to avoid duplicate work. Check out the latest trunk, make your changes and create a patch (in Eclipse: choose 'project' scope, not 'workspace'). Email the patch to Max Völkel and get it applied. Or even better: attach it to a JIRA bug tracker issue.

Related Work
Besides projects listed at Tripresso, the following projects are relevant:
 * Clerezza from Reto Bachmann-Gmür
 * OSGI-based approach, currently applying for Apache incubator

__SHOWFACTBOX__