RDF2Go

From semanticweb.org

Jump to: navigation, search
RDF2Go
Logo of RDF2Go
rdf2go.semweb4j.org/
Status: stable
Last release: 4.7.0 (Jan 5, 2009)
License: BSD
Affiliation: FZI

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.

Contents

[edit] 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 Knowledge Web and NEPOMUK.

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

See also: RDF2Go on Ohloh

[edit] Modules

RDF2Go consists of several parts that together make up the distribution. The JARs are named org.semweb4j.* and the Java packages in the JARs are still named org.ontoware.* 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. There are now only these modules, that are relevant:

[edit] API (rdf2go.api)

The API, the base implementation classes. And utility classes running on top of any adapter. This contains e.g. the RDFTool class developed by DFKI.

  • 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)

[edit] 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)
  • Anonymous Subversion (use https:// for developer access)


[edit] 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

[edit] Sesame 2.0 Adapter (rdf2go.impl.sesame20, former: openrdf-rdf2go)

Implements the API and extends the impl.base classes. Delegates all calls to a Sesame 2.0.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:// for developer access)
  • Status: up-to date with RDF2Go 4.6 API

[edit] Sesame 2.2 Adapter (rdf2go.impl.sesame22)

Implements the API and extends the impl.base classes. Delegates all calls to a Sesame 2.2.3 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:// for developer access)
  • Status: up-to date with RDF2Go 4.7 API

[edit] 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.

[edit] Documentation and Tutorial

Related Projects

[edit] Road Map

For future versions suggested changes are:

  • Cleaner SPI interface (API is for users, SPI is for those people implementing the adapters)

[edit] Contact, Feedback, Help

Acknowledgements

[edit] Who uses RDF2GO?

  • RDFReactor - Object-oriented RDF access in Java, no RDF knowledge required at all (but an RDF Schema)
  • SemVersion - Versioning for RDF
  • Aperture - extracting and querying full-text content and metadata from various sources
  • Hyena - Universal RDF editor
  • NEPOMUK
  • SemFS
  • Theseus, in basic technologies, ontologies

[edit] How to use RDF2Go as a Semantic Web developer

Example for the 4.3 - 4.6 release

  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() );
      }
 }

[edit] 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.

Personal tools