COMMONSRDF-47: Add RDFSyntax.iri()

as proposed by @ansell in
https://github.com/apache/commons-rdf/pull/27#discussion_r88350517


Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/81d5b320
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/81d5b320
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/81d5b320

Branch: refs/heads/master
Commit: 81d5b320b62e7165b178e0a34c5157105f57e4af
Parents: db17f1a
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Thu Feb 9 01:35:43 2017 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Thu Feb 9 01:35:43 2017 +0000

----------------------------------------------------------------------
 .../org/apache/commons/rdf/api/RDFSyntax.java   | 67 ++++++++++--------
 .../apache/commons/rdf/api/W3CRDFSyntax.java    | 73 +++++++++++++++++---
 2 files changed, 103 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/81d5b320/api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java 
b/api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java
index 3bd1249..657fbc3 100644
--- a/api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java
+++ b/api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java
@@ -106,8 +106,7 @@ public interface RDFSyntax {
     /**
      * A short name of the RDF Syntax e.g. <code>JSONLD</code>.
      * <p>
-     * The name is specific to Commons RDF and carries no particular meaning 
-     * except that it matches the constants like {@link #JSONLD}. 
+     * The name is specific to Commons RDF and carries no particular meaning. 
      * 
      * @return Short name for RDF syntax
      */
@@ -148,7 +147,43 @@ public interface RDFSyntax {
      * Datasets</a>.
      */
     public boolean supportsDataset();
-   
+
+    /**
+     * Return the {@link IRI} that <em>identifies</em> the RDF syntax.
+     * <p>
+     * Note that the identifying IRI is generally distinct from the IRI of the
+     * document that <em>specifies</em> the RDF syntax.
+     * 
+     * @return Identifying IRI, e.g.
+     *         <code>http://www.w3.org/ns/formats/JSON-LD</code>
+     */
+    public IRI iri();
+
+    /**
+     * Compare this RDFSyntax with another object.
+     * <p>
+     * Two {@link RDFSyntax}es are considered equal if their
+     * {@link #mediaType()}s are equal when compared as lower case strings
+     * according to {@link String#toLowerCase(Locale)} with the locale
+     * {@link Locale#ROOT}.
+     * 
+     * @param obj
+     * @return
+     */
+    @Override
+    boolean equals(Object obj);
+    
+    /**
+     * The hash code of an RDFSyntax is equivalent to the hash code 
+     * of the {@link #mediaType()} in lower case according to
+     * {@link String#toLowerCase(Locale)} with the locale
+     * {@link Locale#ROOT}. 
+     * 
+     * @return Hash code of RDFSyntax
+     */
+    @Override
+    int hashCode();
+    
     /**
      * Return the RDF 1.1 serialization syntaxes.
      * <p>
@@ -235,30 +270,6 @@ public interface RDFSyntax {
     public static Optional<RDFSyntax> byName(final String name) {
         return w3cSyntaxes().stream().filter(t -> 
t.name().equals(name)).findAny();
     }
-    
-    /**
-     * Compare this RDFSyntax with another object.
-     * <p>
-     * Two {@link RDFSyntax}es are considered equal if their
-     * {@link #mediaType()}s are equal when compared as lower case strings
-     * according to {@link String#toLowerCase(Locale)} with the locale
-     * {@link Locale#ROOT}.
-     * 
-     * @param obj
-     * @return
-     */
-    @Override
-    boolean equals(Object obj);
-    
-    /**
-     * The hash code of an RDFSyntax is equivalent to the hash code 
-     * of the {@link #mediaType()} in lower case according to
-     * {@link String#toLowerCase(Locale)} with the locale
-     * {@link Locale#ROOT}. 
-     * 
-     * @return Hash code of RDFSyntax
-     */
-    @Override
-    int hashCode();
+
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/81d5b320/api/src/main/java/org/apache/commons/rdf/api/W3CRDFSyntax.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/commons/rdf/api/W3CRDFSyntax.java 
b/api/src/main/java/org/apache/commons/rdf/api/W3CRDFSyntax.java
index 4ddc6c2..82b6692 100644
--- a/api/src/main/java/org/apache/commons/rdf/api/W3CRDFSyntax.java
+++ b/api/src/main/java/org/apache/commons/rdf/api/W3CRDFSyntax.java
@@ -41,19 +41,66 @@ import java.util.Set;
  */
 final class W3CRDFSyntax implements RDFSyntax {
 
+    
+    /**
+     * IRI representing a <a href="https://www.w3.org/ns/formats/";>W3C RDF
+     * format</a>.
+     */
+    private final static class FormatIRI implements IRI {
+        private static String BASE = "http://www.w3.org/ns/formats/";;
+        private final String format;
+    
+        private FormatIRI(final String format) {
+            this.format = format;
+        }
+    
+        @Override
+        public String getIRIString() {
+            return BASE + format;
+        }
+    
+        @Override
+        public String ntriplesString() {
+            return "<" + getIRIString() + ">";
+        }
+    
+        @Override
+        public String toString() {
+            return ntriplesString();
+        }
+    
+        @Override
+        public boolean equals(final Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null || !(obj instanceof IRI)) {
+                return false;
+            }
+            final IRI other = (IRI) obj;
+            return getIRIString().equals(other.getIRIString());
+        }
+    
+        @Override
+        public int hashCode() {
+            return getIRIString().hashCode();
+        }
+    }
+
+    
     static final RDFSyntax JSONLD, TURTLE, NQUADS, NTRIPLES, RDFA_HTML, 
RDFA_XHTML, RDFXML, TRIG;
     static final Set<RDFSyntax> syntaxes;
     
     static {
         // Initialize within static block to avoid inserting nulls
-        JSONLD = new W3CRDFSyntax("JSONLD", "JSON-LD 1.0", 
"application/ld+json", ".jsonld", true);
-        TURTLE = new W3CRDFSyntax("TURTLE", "RDF 1.1 Turtle", "text/turtle", 
".ttl", false);
-        NQUADS = new W3CRDFSyntax("NQUADS", "RDF 1.1 N-Quads", 
"application/n-quads", ".nq", true);
-        NTRIPLES = new W3CRDFSyntax("NTRIPLES", "RDF 1.1 N-Triples", 
"application/n-triples", ".nt", false);
-        RDFA_HTML = new W3CRDFSyntax("RDFA_HTML", "HTML+RDFa 1.1", 
"text/html", ".html", false);
-        RDFA_XHTML = new W3CRDFSyntax("RDFA_XHTML", "XHTML+RDFa 1.1", 
"application/xhtml+xml", ".xhtml", false);
-        RDFXML = new W3CRDFSyntax("RDFXML", "RDF 1.1 XML Syntax", 
"application/rdf+xml", ".rdf", false);
-        TRIG = new W3CRDFSyntax("TRIG", "RDF 1.1 TriG", "application/trig", 
".trig", true);
+        JSONLD = new W3CRDFSyntax("JSON-LD", "JSON-LD 1.0", 
"application/ld+json", ".jsonld", true);
+        TURTLE = new W3CRDFSyntax("Turtle", "RDF 1.1 Turtle", "text/turtle", 
".ttl", false);
+        NQUADS = new W3CRDFSyntax("N-Quads", "RDF 1.1 N-Quads", 
"application/n-quads", ".nq", true);
+        NTRIPLES = new W3CRDFSyntax("N-Triples", "RDF 1.1 N-Triples", 
"application/n-triples", ".nt", false);
+        RDFA_HTML = new W3CRDFSyntax("RDFa", "HTML+RDFa 1.1", "text/html", 
".html", false);
+        RDFA_XHTML = new W3CRDFSyntax("RDFa", "XHTML+RDFa 1.1", 
"application/xhtml+xml", ".xhtml", false);
+        RDFXML = new W3CRDFSyntax("RDF_XML", "RDF 1.1 XML Syntax", 
"application/rdf+xml", ".rdf", false);
+        TRIG = new W3CRDFSyntax("TriG", "RDF 1.1 TriG", "application/trig", 
".trig", true);
 
         syntaxes = Collections.unmodifiableSet(new LinkedHashSet<>(
                 Arrays.asList(JSONLD, NQUADS, NTRIPLES, RDFA_HTML, RDFA_XHTML, 
RDFXML, TRIG, TURTLE)));
@@ -64,10 +111,12 @@ final class W3CRDFSyntax implements RDFSyntax {
     private final String mediaType;
 
     private final String fileExtension;
-
+    
     private final boolean supportsDataset;
 
     private final String name;
+    
+    private final IRI iri;
 
     private W3CRDFSyntax(String name, String title, String mediaType, String 
fileExtension, boolean supportsDataset) {
         this.name = name;
@@ -75,6 +124,7 @@ final class W3CRDFSyntax implements RDFSyntax {
         this.mediaType = mediaType.toLowerCase(Locale.ROOT);
         this.fileExtension = fileExtension.toLowerCase(Locale.ROOT);
         this.supportsDataset = supportsDataset;
+        this.iri = new FormatIRI(name);
     }
 
     /**
@@ -115,6 +165,11 @@ final class W3CRDFSyntax implements RDFSyntax {
     public String name() {
         return name;
     }
+    
+    @Override
+    public IRI iri() {
+        return iri;
+    }
 
     @Override
     public boolean equals(Object obj) {

Reply via email to