This library is still work in progress.
A draft diagram of the interfaces which may be included in Commons RDF are:
Building has been tested with Apache Maven 3.2 and Java JDK 8.
$ mvn clean install [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] Commons RDF [INFO] Commons RDF: API [INFO] Commons RDF: Simple impl [INFO] [INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Commons RDF 0.0.3-SNAPSHOT .... [INFO] Installing /home/johndoe/src/commons-rdf/commons-rdf-api/target/commons-rdf-api-0.0.3-SNAPSHOT-javadoc.jar to /home/johndoe/.m2/repository/com/github/commons-rdf/commons-rdf-api/0.0.3-SNAPSHOT/commons-rdf-api-0.0.3-SNAPSHOT-javadoc.jar [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] Commons RDF ....................................... SUCCESS [ 1.792 s] [INFO] Commons RDF: API .................................. SUCCESS [ 2.676 s] [INFO] Commons RDF: Simple impl .......................... SUCCESS [ 3.142 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 7.718 s [INFO] Finished at: 2015-01-26T02:09:10+00:00 [INFO] Final Memory: 22M/309M [INFO] ------------------------------------------------------------------------
To then use from your project, add to Maven (update <version>
to match the Maven output):
<dependency> <groupId>com.github.commons-rdf</groupId> <artifactId>commons-rdf-api</artifactId> <version>0.0.3-SNAPSHOT</version> </dependency>
The commons-rdf-simple module contains a simple (if not naive) implementation of the Commons RDF API using in-memory POJO objects.
Note that although this module fully implements the commons-rdf API, it should not be considered a reference implementation. It is not thread-safe nor scalable, but may be useful for testing and simple usage (e.g. output from an independent RDF parser).
Projects including Apache Jena and OpenRDF Sesame aim to provide complete and scalable implementations of the Commons RDF API.
The abstract classes AbstractGraphTest and AbstractRDFTermFactoryTest can be realised as JUnit tests by implementations in order to verify that they pass the minimal requirements of this API.
In order for this to work, your project will need to depend on the tests
classifier for the commons-rdf-api module, for example (for Maven):
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>com.github.commons-rdf</groupId> <artifactId>commons-rdf-api</artifactId> <version>0.0.3-SNAPSHOT</version> <classifier>tests</classifier> <scope>test</scope> </dependency>
The extensions of each Test class need to provide a RDFTermFactory that can create the corresponding implementations of a Graph
, IRI
, etc.
For an example, see SimpleGraphTest.
See CONTRIBUTING.md for details on how to contribute. In short - raise a Github pull request.