Possible changes 

Possibilities for discussion.

1. Quads are not extended Triples (useful if the default graph is a union of named graphs but this isn't always the case) but share a common supertype.
1.  Add a CONTRIBUTING file
1.  3 parts of a Literal
1.  getObject is a Resource, not a Literal
On Tue, Jun 10, 2014 at 9:24 AM, Andy Seaborne <notifications@github.com>
wrote:

> In src/main/java/org/apache/commons/rdf/Literal.java:
>
> > @@ -1,4 +1,9 @@
> >  package org.apache.commons.rdf;
> >
> >  public interface Literal extends Term {
> > +	String getLexicalForm() ;
> > +
> > +	IRI getDatatype() ;
> > +
> > +    String getLanguage() ;
>
> getLanguageTag -- OK
>
> Optional -- I'd like to see how it works in practice. The theory is fine
> but if application code gets messy then it may be better to be more
> pragmatic. This is a style thing, not a technical issue.
>

This is not about style. It's about making an API that doesn't lie to the
users. There is no way to express in the type system that a value may be
optional other than using Optional. Please let's not make the mistake of
most Java's API now that this is available.

Also in practice, lambdas make using Optional pretty easy, and it makes
explicit the propagation of the optional values.

The only drawback is a dependency on Java8.  Have me made a decision on
that side?