RDF2Go
From semanticweb.org
| RDF2Go | |
|---|---|
| rdf2go.semweb4j.org/ | |
| Status: | stable |
| Last release: | 4.6.1 (April 30, 2008) |
| 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.
- Bookmark-URL: http://rdf2go.semweb4j.org (this page)
- Current release: 4.6, release announcement
- Download releases from directory
Overview of changes (for full changelog, please consult the module-changelogs)
- 4.6.2
- Fixes the packaging of the API jar for OSGI
- 4.6.1
- JARS packaged for OSGI
- Distribution now includes rdf2go.util (was missing by accident in 4.6.0 release)
[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.
[edit] rdf2go.api
The API.
- 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] rdf2go.impl.base
- 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] rdf2go.impl.base.test
- 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] rdf2go.impl.util
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 downloading the distribution instead)
- Anonymous Subversion (use https:// for developer access)
[edit] 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] 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] YARS adapter
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!
[edit] Documentation and Tutorial
- Lesson 1 - 4 - Introduction (maybe slightly outdated)
- FAQ - Frequently asked questions
- 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.
- RDF2Go at ontoware.org (outdated)
- Comparing RDF2Go to other approaches (outdated)
- How to write a RDF2GO adapter for your triplestore (outdated)
- Configuration of Triplestore Adapters with Property-Files (outdated)
Related Projects
- To generate domain-specific Java classes you can use RDFReactor, RDF2Java or other projects mentioned on Tripresso.
[edit] Contact, Feedback, Help
- Developer mailing list including archives - the best place to ask for help
- The list server is going to die in the next 6 months - are Google groups a good alternative?
- 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
[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
[edit] Developer Workflow
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() );
}
}

