Stian Soiland-Reyes created COMMONSRDF-46:
---------------------------------------------

             Summary: Rename RDFTermFactory to RDF
                 Key: COMMONSRDF-46
                 URL: https://issues.apache.org/jira/browse/COMMONSRDF-46
             Project: Apache Commons RDF
          Issue Type: Bug
          Components: api
            Reporter: Stian Soiland-Reyes
            Assignee: Stian Soiland-Reyes
             Fix For: 0.3.0


As [mentioned on 
dev@commons|https://lists.apache.org/thread.html/ff9f0eda82a70fea38bd46781a062d182cd7792aee57a4563f854b27@%3Cdev.commonsrdf.apache.org%3E],
 the {{RDFTermFactory}} will grow in 0.3.0 to include Dataset and Quad 
creation, which are not "RDFTerm" instances.

As well, the implementations of RDFTermFactory for Jena and RDF4J also include 
converter methods from/to their underlying types - which feel somewhat wrong in 
a "factory" as they may are free to wrap/unwrap rather than make new instances. 

So the suggestion is a radical style change - rename {{RDFTermFactory}} to 
{{RDF}}, and its children to {{SimpleRDF}} {{JenaRDF}}, {{RDF4J}}, 
{{JsonLDRDF}}.

Typical usage then looks pretty neat:

{code}
RDF rdf = new JenaRDF(); 
IRI iri = rdf.createIRI("http://example.com/";); 
Triple triple = rdf.createTriple(iri, iri, iri); 
Graph graph = rdf.createGraph(); 
graph.add(triple);
{code}

but works less well as a static constant {{RDF}}:

{code}
private static final RDF RDF = new JenaRDF();
{code}

(before {{FACTORY}} might have made sense)


Some style considerations:  

* {{RDF4JRDF}} looks weird, so just {{RDF4J}} there
* {{SimpleRDF}} looks good (as Simple does not exists outside Commons RDF)
* Jena already have 
[org.apache.jena](https://jena.apache.org/documentation/javadoc/jena/org/apache/jena/Jena.html),
 so {{JenaRDF}} is better than another {{Jena}}
* {{JsonLdRDF}} 
* Documentation about just {{RDF}} the interface can be confusing against _RDF_ 
the concept, requiring using {{<code>}}-style typography and expanded phrases 
like "an {{RDF}} implementation" instead of "an {{RDF}}"

A milder variant is: {{RDFFactory}} with children {{SimpleRDFFactory}}, 
{{JenaFactory}}, {{RDF4JFactory}}. {{JsonLDFactory}} -- here we can skip 
{{RDF}} from the children except from the newbie {{Simple}}.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to