You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2020/07/02 11:34:45 UTC
[jena] branch master updated: JENA-1933: Add const Lang.SHACLC
This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jena.git
The following commit(s) were added to refs/heads/master by this push:
new bc99391 JENA-1933: Add const Lang.SHACLC
new 3fb6aba Merge pull request #771 from afs/lang-init
bc99391 is described below
commit bc99391a14d82cf98a3960e3fc0bcafce8a95975
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Wed Jul 1 23:05:12 2020 +0100
JENA-1933: Add const Lang.SHACLC
Tidy up formatting.
---
.../src/main/java/org/apache/jena/riot/Lang.java | 64 +++---
.../java/org/apache/jena/riot/LangBuilder.java | 37 ++--
.../main/java/org/apache/jena/riot/RDFFormat.java | 32 ++-
.../java/org/apache/jena/riot/RDFLanguages.java | 239 ++++++++++-----------
.../org/apache/jena/riot/RDFParserRegistry.java | 45 ++--
.../java/org/apache/jena/shacl/compact/SHACLC.java | 10 +-
6 files changed, 197 insertions(+), 230 deletions(-)
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/Lang.java b/jena-arq/src/main/java/org/apache/jena/riot/Lang.java
index 625e970..0c7568d 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/Lang.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/Lang.java
@@ -28,65 +28,65 @@ import org.apache.jena.atlas.web.ContentType ;
* A language has a name, some alternative names,
* a content type, some alternative content types,
* and a list of associated file extensions.
- * Names, content types and file extensions must be unique to one language.
- * To create a Lang constant, use {@link LangBuilder} and
+ * Names, content types and file extensions must be unique to one language.
+ * To create a Lang constant, use {@link LangBuilder} and
* register with {@link RDFLanguages}.
*/
-public class Lang
+public class Lang
{
- // public static final Lang RDFXML = RDFLanguages.RDFXML ;
- // public static final Lang NTRIPLES = RDFLanguages.NTriples ;
- // public static final Lang N3 = RDFLanguages.N3 ;
- // public static final Lang TURTLE = RDFLanguages.Turtle ;
- // public static final Lang RDFJSON = RDFLanguages.RDFJSON ;
- // public static final Lang NQUADS = RDFLanguages.NQuads ;
- // public static final Lang TRIG = RDFLanguages.TriG ;
-
// To avoid an initialization circularity, these are set by RDFLanguages.
static { RDFLanguages.init() ; }
/** <a href="http://www.w3.org/TR/REC-rdf-syntax/">RDF/XML</a> */
public static Lang RDFXML ;
-
+
/** <a href="http://www.w3.org/TR/turtle/">Turtle</a>*/
public static Lang TURTLE ;
-
+
/** Alternative constant for {@link #TURTLE} */
public static Lang TTL ;
-
+
/** N3 (treat as Turtle) */
public static Lang N3 ;
-
+
/** <a href="http://www.w3.org/TR/n-triples/">N-Triples</a>*/
public static Lang NTRIPLES ;
-
+
/** Alternative constant for {@link #NTRIPLES} */
public static Lang NT ;
/** <a href="http://www.w3.org/TR/json-ld/">JSON-LD</a>. */
public static Lang JSONLD ;
-
- /** <a href="http://www.w3.org/TR/rdf-json/">RDF/JSON</a>. This is not <a href="http://www.w3.org/TR/json-ld/">JSON-LD</a>. */
+
+ /**
+ * <a href="http://www.w3.org/TR/rdf-json/">RDF/JSON</a>.
+ * This is not <a href="http://www.w3.org/TR/json-ld/">JSON-LD</a>.
+ *
+ * @see #JSONLD
+ */
public static Lang RDFJSON ;
-
+
/** <a href="http://www.w3.org/TR/trig/">TriG</a> */
public static Lang TRIG ;
-
+
/** <a href="http://www.w3.org/TR/n-quads">N-Quads</a> */
public static Lang NQUADS ;
-
+
/** Alternative constant {@link #NQUADS} */
public static Lang NQ ;
- //** The RDF syntax "RDF Thrift" : see http://jena.apache.org/documentation/io */
+ /** The RDF syntax <a href="https://jena.apache.org/documentation/io/rdf-binary.html">RDF Thrift</a> */
public static Lang RDFTHRIFT ;
-
+
+ /** <a href="https://w3c.github.io/shacl/shacl-compact-syntax/">SHACL Compact Syntax</a> (2020-07-01) */
+ public static Lang SHACLC;
+
/** "CSV" - Used in various ways. */
public static Lang CSV ;
/** "TSV" - Used in various ways. */
public static Lang TSV ;
-
+
/** <a href="http://www.hpl.hp.com/techreports/2004/HPL-2004-56.html">TriX</a> */
public static Lang TRIX ;
@@ -126,15 +126,15 @@ public class Lang
List<String> _fileExtensions = copy(fileExt) ;
fileExtensions = Collections.unmodifiableList(_fileExtensions) ;
}
-
+
static <T> List<T> copy(List<T> original) {
List<T> x = new ArrayList<>() ;
x.addAll(original) ;
return x ;
}
-
+
@Override
- public int hashCode() { return label.hashCode() ; }
+ public int hashCode() { return label.hashCode() ; }
@Override
public boolean equals(Object other) {
@@ -144,7 +144,7 @@ public class Lang
return false ;
Lang otherLang = (Lang)other ;
- return
+ return
this.label == otherLang.label &&
this.contentType.equals(otherLang.contentType) &&
this.altContentTypes.equals(otherLang.altContentTypes) &&
@@ -153,8 +153,8 @@ public class Lang
public String getName() { return label ; }
public ContentType getContentType() { return contentType ; }
-
- /** As an HTTP Content-Type field value */
+
+ /** As an HTTP Content-Type field value */
public String getHeaderString() { return contentType.toHeaderString() ; }
public String getLabel() { return label ; }
public List<String> getAltNames() { return altLabels ; }
@@ -163,8 +163,8 @@ public class Lang
@Override
public String toString() { return "Lang:"+label ; }
-
- public String toLongString() {
+
+ public String toLongString() {
String x = "Lang:" + label + " " + getContentType() ;
if (getAltNames().size() > 0)
x = x + " " + getAltNames() ;
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/LangBuilder.java b/jena-arq/src/main/java/org/apache/jena/riot/LangBuilder.java
index f9024b2..499ff00 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/LangBuilder.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/LangBuilder.java
@@ -21,10 +21,8 @@ package org.apache.jena.riot;
import java.util.ArrayList ;
import java.util.List ;
-
-
/** Builder for RDF languages (Syntaxes).
- *
+ *
* Example usage:
* <pre>
* LangBuilder.create()
@@ -34,12 +32,11 @@ import java.util.List ;
* .addFileExtensions("ext1", "ext2")
* .build()
* </pre>
- *
- * */
+ */
public class LangBuilder {
public String lang ;
- public String officialContentType ;
+ public String officialContentType ;
public List<String> altNames = new ArrayList<>() ;
public List<String> contentTypes = new ArrayList<>() ;
public List<String> fileExtensions = new ArrayList<>() ;
@@ -49,8 +46,8 @@ public class LangBuilder {
{
return new LangBuilder() ;
}
-
- /** Create a builder - convenience operation to
+
+ /** Create a builder - convenience operation to
* take the language name and content type
* which should be set if at all possible.
* @param langname
@@ -59,26 +56,26 @@ public class LangBuilder {
public static LangBuilder create(String langname, String officialContentType)
{
return new LangBuilder()
- .langName(langname)
- .contentType(officialContentType) ;
+ .langName(langname)
+ .contentType(officialContentType) ;
}
-
+
private LangBuilder() {}
-
+
/** Add alternative names */
public LangBuilder addAltNames(String...x)
- {
+ {
copy(x, altNames) ;
return this ;
}
-
+
/** Add alternative content types */
public LangBuilder addAltContentTypes(String...x)
- {
+ {
copy(x, contentTypes) ;
return this ;
}
-
+
/** Add file name extensions */
public LangBuilder addFileExtensions(String...x)
{
@@ -92,7 +89,7 @@ public class LangBuilder {
if ( !dst.contains(str) )
dst.add(str) ;
}
-
+
/** Construct the {@link Lang} */
public Lang build()
{
@@ -105,7 +102,7 @@ public class LangBuilder {
private void error(String message)
{
- throw new RiotException(message) ;
+ throw new RiotException(message) ;
}
public String getContentType()
@@ -114,7 +111,7 @@ public class LangBuilder {
}
/** Set the main content type for this language.
- * If there is an officially registered, preferred type, this should be that.
+ * If there is an officially registered, preferred type, this should be that.
*/
public LangBuilder contentType(String officialContentType)
{
@@ -122,7 +119,7 @@ public class LangBuilder {
return this ;
}
- /** Set the language label. A system wide, unique short name */
+ /** Set the language label. A system wide, unique short name */
public LangBuilder langName(String langname)
{
this.lang = langname ;
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java
index ea3c2ba..d154f42 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java
@@ -18,8 +18,6 @@
package org.apache.jena.riot ;
-import static org.apache.jena.riot.RDFLanguages.THRIFT ;
-
import java.util.Objects;
/** Constants for writable formats */
@@ -47,36 +45,36 @@ public class RDFFormat {
public static final RDFFormat TURTLE = TURTLE_PRETTY ;
/** Turtle - short name */
public static final RDFFormat TTL = TURTLE_PRETTY ;
- /** Turtle - write in blocks of triples, with same subject, no nested object or RDF lists */
+ /** Turtle - write in blocks of triples, with same subject, no nested object or RDF lists */
public static final RDFFormat TURTLE_BLOCKS = new RDFFormat(Lang.TURTLE, BLOCKS) ;
- /** Turtle - one line per triple */
+ /** Turtle - one line per triple */
public static final RDFFormat TURTLE_FLAT = new RDFFormat(Lang.TURTLE, FLAT) ;
- /** N-Triples in UTF-8 */
+ /** N-Triples in UTF-8 */
public static final RDFFormat NTRIPLES_UTF8 = new RDFFormat(Lang.NTRIPLES, UTF8) ;
- /** N-Triples - RDF 1.1 form - UTF-8 */
+ /** N-Triples - RDF 1.1 form - UTF-8 */
public static final RDFFormat NTRIPLES = NTRIPLES_UTF8 ;
- /** N-Triples - RDF 1.1 form - UTF-8 */
+ /** N-Triples - RDF 1.1 form - UTF-8 */
public static final RDFFormat NT = NTRIPLES ;
- /** N-Triples - Use ASCII */
+ /** N-Triples - Use ASCII */
public static final RDFFormat NTRIPLES_ASCII = new RDFFormat(Lang.NTRIPLES, ASCII) ;
- /** N-Quads in UTF-8 */
+ /** N-Quads in UTF-8 */
public static final RDFFormat NQUADS_UTF8 = new RDFFormat(Lang.NQUADS, UTF8) ;
- /** N-Quads - RDF 1.1 form - UTF-8 */
+ /** N-Quads - RDF 1.1 form - UTF-8 */
public static final RDFFormat NQUADS = NQUADS_UTF8 ;
- /** N-Quads - RDF 1.1 form - UTF-8 */
+ /** N-Quads - RDF 1.1 form - UTF-8 */
public static final RDFFormat NQ = NQUADS ;
- /** N-Quads - Use ASCII */
+ /** N-Quads - Use ASCII */
public static final RDFFormat NQUADS_ASCII = new RDFFormat(Lang.NQUADS, ASCII) ;
/** TriG - pretty form */
public static final RDFFormat TRIG_PRETTY = new RDFFormat(Lang.TRIG, PRETTY) ;
/** TriG - default form */
public static final RDFFormat TRIG = TRIG_PRETTY ;
- /** TriG - write in blocks of triples, with same subject, no nested object or RDF lists */
+ /** TriG - write in blocks of triples, with same subject, no nested object or RDF lists */
public static final RDFFormat TRIG_BLOCKS = new RDFFormat(Lang.TRIG, BLOCKS) ;
- /** TriG - one line per triple */
+ /** TriG - one line per triple */
public static final RDFFormat TRIG_FLAT = new RDFFormat(Lang.TRIG, FLAT) ;
//
@@ -94,7 +92,7 @@ public class RDFFormat {
private JSONLD_FORMAT format ;
private boolean prettyJson ;
- JSONLDVariant(String name, boolean prettyJson, JSONLD_FORMAT format) {
+ JSONLDVariant(String name, boolean prettyJson, JSONLD_FORMAT format) {
super(name) ;
this.format = format ;
this.prettyJson = prettyJson ;
@@ -161,7 +159,7 @@ public class RDFFormat {
* @see #RDF_THRIFT_VALUES
*/
- public static final RDFFormat RDF_THRIFT = new RDFFormat(THRIFT) ;
+ public static final RDFFormat RDF_THRIFT = new RDFFormat(Lang.RDFTHRIFT) ;
/**
* A variant of an an RDFFormat that uses value encoding (e.g. integers,
* doubles, decimals as binary). This does not preserve exact representation
@@ -173,7 +171,7 @@ public class RDFFormat {
*
* @see #RDF_THRIFT
*/
- public static final RDFFormat RDF_THRIFT_VALUES = new RDFFormat(THRIFT, ValueEncoding) ;
+ public static final RDFFormat RDF_THRIFT_VALUES = new RDFFormat(Lang.RDFTHRIFT, ValueEncoding) ;
/**
* The "null" output format (a sink that prints nothing, usually quite
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
index c33d9de..90dba1b 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
@@ -18,30 +18,7 @@
package org.apache.jena.riot;
-import static org.apache.jena.riot.WebContent.charsetASCII;
-import static org.apache.jena.riot.WebContent.charsetUTF8;
-import static org.apache.jena.riot.WebContent.contentTypeN3;
-import static org.apache.jena.riot.WebContent.contentTypeN3Alt1;
-import static org.apache.jena.riot.WebContent.contentTypeN3Alt2;
-import static org.apache.jena.riot.WebContent.contentTypeNQuads;
-import static org.apache.jena.riot.WebContent.contentTypeNQuadsAlt1;
-import static org.apache.jena.riot.WebContent.contentTypeNQuadsAlt2;
-import static org.apache.jena.riot.WebContent.contentTypeNTriples;
-import static org.apache.jena.riot.WebContent.contentTypeNTriplesAlt;
-import static org.apache.jena.riot.WebContent.contentTypeRDFJSON;
-import static org.apache.jena.riot.WebContent.contentTypeRDFThrift;
-import static org.apache.jena.riot.WebContent.contentTypeRDFXML;
-import static org.apache.jena.riot.WebContent.contentTypeTextCSV;
-import static org.apache.jena.riot.WebContent.contentTypeTextTSV;
-import static org.apache.jena.riot.WebContent.contentTypeTextPlain;
-import static org.apache.jena.riot.WebContent.contentTypeTriG;
-import static org.apache.jena.riot.WebContent.contentTypeTriGAlt1;
-import static org.apache.jena.riot.WebContent.contentTypeTriGAlt2;
-import static org.apache.jena.riot.WebContent.contentTypeTriX;
-import static org.apache.jena.riot.WebContent.contentTypeTriXxml;
-import static org.apache.jena.riot.WebContent.contentTypeTurtle;
-import static org.apache.jena.riot.WebContent.contentTypeTurtleAlt1;
-import static org.apache.jena.riot.WebContent.contentTypeTurtleAlt2;
+import static org.apache.jena.riot.WebContent.*;
import java.util.*;
@@ -70,85 +47,87 @@ public class RDFLanguages
public static final String strLangTSV = "TSV";
public static final String strLangTriX = "TriX";
public static final String strLangRDFTHRIFT = "RDF-THRIFT";
-
+
/*
- * ".owl" is not a formally registered file extension for OWL
+ * ".owl" is not a formally registered file extension for OWL
* using RDF/XML. It was mentioned in OWL1 (when there was
* formally only one syntax for publishing RDF).
- *
+ *
* OWL2 does not mention it.
- *
+ *
* ".owx" is the OWL direct XML syntax.
*/
/** <a href="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML</a> */
- public static final Lang RDFXML = LangBuilder.create(strLangRDFXML, contentTypeRDFXML)
- .addAltNames("RDFXML", "RDF/XML-ABBREV", "RDFXML-ABBREV")
- .addFileExtensions("rdf", "owl", "xml")
- .build() ;
-
+ public static final Lang RDFXML = LangBuilder.create(strLangRDFXML, contentTypeRDFXML)
+ .addAltNames("RDFXML", "RDF/XML-ABBREV", "RDFXML-ABBREV")
+ .addFileExtensions("rdf", "owl", "xml")
+ .build() ;
+
/** <a href="http://www.w3.org/TR/turtle/">Turtle</a>*/
- public static final Lang TURTLE = LangBuilder.create(strLangTurtle, contentTypeTurtle)
- .addAltNames("TTL")
- .addAltContentTypes(contentTypeTurtleAlt1, contentTypeTurtleAlt2)
- .addFileExtensions("ttl")
- .build() ;
+ public static final Lang TURTLE = LangBuilder.create(strLangTurtle, contentTypeTurtle)
+ .addAltNames("TTL")
+ .addAltContentTypes(contentTypeTurtleAlt1, contentTypeTurtleAlt2)
+ .addFileExtensions("ttl")
+ .build() ;
+
/** Alternative constant for {@link #TURTLE} */
- public static final Lang TTL = TURTLE ;
-
+ public static final Lang TTL = TURTLE ;
+
/** N3 (treat as Turtle) */
- public static final Lang N3 = LangBuilder.create(strLangN3, contentTypeN3)
- .addAltContentTypes(contentTypeN3, contentTypeN3Alt1, contentTypeN3Alt2)
- .addFileExtensions("n3")
- .build() ;
-
+ public static final Lang N3 = LangBuilder.create(strLangN3, contentTypeN3)
+ .addAltContentTypes(contentTypeN3, contentTypeN3Alt1, contentTypeN3Alt2)
+ .addFileExtensions("n3")
+ .build() ;
+
/** <a href="http://www.w3.org/TR/n-triples/">N-Triples</a>*/
- public static final Lang NTRIPLES = LangBuilder.create(strLangNTriples, contentTypeNTriples)
- .addAltNames("NT", "NTriples", "NTriple", "N-Triple", "N-Triples")
- // Remove? Causes more trouble than it's worth.
- .addAltContentTypes(contentTypeNTriplesAlt)
- .addFileExtensions("nt")
- .build() ;
+ public static final Lang NTRIPLES = LangBuilder.create(strLangNTriples, contentTypeNTriples)
+ .addAltNames("NT", "NTriples", "NTriple", "N-Triple", "N-Triples")
+ // Remove? Causes more trouble than it's worth.
+ .addAltContentTypes(contentTypeNTriplesAlt)
+ .addFileExtensions("nt")
+ .build() ;
/** Alternative constant for {@link #NTRIPLES} */
- public static final Lang NT = NTRIPLES ;
+ public static final Lang NT = NTRIPLES ;
/** <a href="http://www.w3.org/TR/json-ld/">JSON-LD</a>. */
- public static final Lang JSONLD = LangBuilder.create(strLangJSONLD, "application/ld+json")
- .addAltNames("JSONLD")
- .addFileExtensions("jsonld")
- .build() ;
-
+ public static final Lang JSONLD = LangBuilder.create(strLangJSONLD, "application/ld+json")
+ .addAltNames("JSONLD")
+ .addFileExtensions("jsonld")
+ .build() ;
+
/** <a href="http://www.w3.org/TR/rdf-json/">RDF/JSON</a>. This is not <a href="http://www.w3.org/TR/json-ld/">JSON-LD</a>. */
- public static final Lang RDFJSON = LangBuilder.create(strLangRDFJSON, contentTypeRDFJSON)
- .addAltNames("RDFJSON")
- .addFileExtensions("rj")
- .build() ;
-
+ public static final Lang RDFJSON = LangBuilder.create(strLangRDFJSON, contentTypeRDFJSON)
+ .addAltNames("RDFJSON")
+ .addFileExtensions("rj")
+ .build() ;
+
/** <a href="http://www.w3.org/TR/trig/">TriG</a> */
- public static final Lang TRIG = LangBuilder.create(strLangTriG, contentTypeTriG)
- .addAltContentTypes(contentTypeTriGAlt1, contentTypeTriGAlt2)
- .addFileExtensions("trig")
- .build() ;
-
+ public static final Lang TRIG = LangBuilder.create(strLangTriG, contentTypeTriG)
+ .addAltContentTypes(contentTypeTriGAlt1, contentTypeTriGAlt2)
+ .addFileExtensions("trig")
+ .build() ;
+
/** <a href="http://www.w3.org/TR/n-quads">N-Quads</a> */
- public static final Lang NQUADS = LangBuilder.create(strLangNQuads, contentTypeNQuads)
- .addAltNames("NQ", "NQuads", "NQuad", "N-Quad", "N-Quads")
- .addAltContentTypes(contentTypeNQuadsAlt1, contentTypeNQuadsAlt2)
- .addFileExtensions("nq")
- .build() ;
-
+ public static final Lang NQUADS = LangBuilder.create(strLangNQuads, contentTypeNQuads)
+ .addAltNames("NQ", "NQuads", "NQuad", "N-Quad", "N-Quads")
+ .addAltContentTypes(contentTypeNQuadsAlt1, contentTypeNQuadsAlt2)
+ .addFileExtensions("nq")
+ .build() ;
+
/** Alternative constant {@link #NQUADS} */
- public static final Lang NQ = NQUADS ;
-
- /** The RDF syntax "RDF Thrift" : see http://jena.apache.org/documentation/io */
- public static final Lang THRIFT = LangBuilder.create(strLangRDFTHRIFT, contentTypeRDFThrift)
+ public static final Lang NQ = NQUADS ;
+
+ /** The RDF syntax <a href="https://jena.apache.org/documentation/io/rdf-binary.html">RDF Thrift</a> */
+ public static final Lang RDFTHRIFT = LangBuilder.create(strLangRDFTHRIFT, contentTypeRDFThrift)
.addAltNames("RDF_THRIFT", "RDFTHRIFT", "RDF/THRIFT", "TRDF")
.addFileExtensions("rt", "trdf")
.build() ;
-
+ public static final Lang THRIFT = RDFTHRIFT;
+
/** Text */
public static final Lang TEXT = LangBuilder.create("text", contentTypeTextPlain)
- .addAltNames("TEXT")
+ .addAltNames("TEXT")
.addFileExtensions("txt")
.build() ;
@@ -159,21 +138,29 @@ public class RDFLanguages
// Extension "xml" is used for RDF/XML.
.addFileExtensions("trix")
.build() ;
-
+
/** The "null" language */
public static final Lang RDFNULL = LangBuilder.create("rdf/null", "null/rdf")
.addAltNames("NULL", "null")
.build() ;
-
+
+ /** <a href="https://w3c.github.io/shacl/shacl-compact-syntax/">SHACL Compact Syntax</a> (2020-07-01) */
+ public static final Lang SHACLC = LangBuilder.create("SHACLC", "text/shaclc")
+ .addAltNames("shaclc")
+ .addFileExtensions("shaclc", "shc")
+ .build();
+
// ---- Central registry
-
+
/** Mapping of colloquial name to language */
private static Map<String, Lang> mapLabelToLang = new HashMap<>() ;
-
+
// For testing mainly.
- public static Collection<Lang> getRegisteredLanguages() { return Collections.unmodifiableCollection(mapLabelToLang.values()); }
-
- /** Mapping of content type (main and alternatives) to language */
+ public static Collection<Lang> getRegisteredLanguages() {
+ return new HashSet<>(mapLabelToLang.values());
+ }
+
+ /** Mapping of content type (main and alternatives) to language */
private static Map<String, Lang> mapContentTypeToLang = new HashMap<>() ;
/** Mapping of file extension to language */
@@ -182,29 +169,30 @@ public class RDFLanguages
// ----------------------
public static void init() {}
static { init$() ; }
-
+
private static synchronized void init$() {
initStandard() ;
- // Needed to avoid a class initialization loop.
- Lang.RDFXML = RDFLanguages.RDFXML ;
+ // Needed to avoid a class initialization loop.
+ Lang.RDFXML = RDFLanguages.RDFXML ;
Lang.NTRIPLES = RDFLanguages.NTRIPLES ;
Lang.NT = RDFLanguages.NT ;
- Lang.N3 = RDFLanguages.N3 ;
+ Lang.N3 = RDFLanguages.N3 ;
Lang.TURTLE = RDFLanguages.TURTLE ;
Lang.TTL = RDFLanguages.TTL ;
Lang.JSONLD = RDFLanguages.JSONLD ;
- Lang.RDFJSON = RDFLanguages.RDFJSON ;
+ Lang.RDFJSON = RDFLanguages.RDFJSON ;
Lang.NQUADS = RDFLanguages.NQUADS ;
Lang.NQ = RDFLanguages.NQ ;
Lang.TRIG = RDFLanguages.TRIG ;
Lang.RDFTHRIFT = RDFLanguages.THRIFT ;
Lang.TRIX = RDFLanguages.TRIX ;
Lang.RDFNULL = RDFLanguages.RDFNULL ;
-
+ Lang.SHACLC = RDFLanguages.SHACLC ;
+
// Used for result sets, not RDF syntaxes.
-
+
Lang.CSV = LangBuilder.create(strLangCSV, contentTypeTextCSV)
- .addAltNames("csv")
+ .addAltNames("csv")
.addFileExtensions("csv")
.build() ;
Lang.TSV = LangBuilder.create(strLangTSV, contentTypeTextTSV)
@@ -212,11 +200,11 @@ public class RDFLanguages
.addFileExtensions("tsv")
.build() ;
-
+
}
// ----------------------
-
- /** Standard built-in languages */
+
+ /** Standard built-in languages */
private static void initStandard()
{
register(RDFXML) ;
@@ -230,7 +218,8 @@ public class RDFLanguages
register(THRIFT) ;
register(TRIX) ;
register(RDFNULL) ;
-
+ register(SHACLC) ;
+
// Check for JSON-LD engine.
String clsName = "com.github.jsonldjava.core.JsonLdProcessor" ;
try {
@@ -245,10 +234,10 @@ public class RDFLanguages
/** Register a language.
* To create a {@link Lang} object use {@link LangBuilder}.
- * See also
+ * See also
* {@link RDFParserRegistry#registerLang}
* for registering a language and it's RDF parser factory.
- *
+ *
* @see RDFParserRegistry
*/
public static void register(Lang lang)
@@ -258,20 +247,20 @@ public class RDFLanguages
// Expel previous registration.
if ( isMimeTypeRegistered(lang) )
unregister(lang);
-
+
checkRegistration(lang) ;
mapLabelToLang.put(canonicalKey(lang.getLabel()), lang) ;
-
+
for (String altName : lang.getAltNames() )
mapLabelToLang.put(canonicalKey(altName), lang) ;
-
+
mapContentTypeToLang.put(canonicalKey(lang.getContentType().getContentTypeStr()), lang) ;
for ( String ct : lang.getAltContentTypes() )
mapContentTypeToLang.put(canonicalKey(ct), lang) ;
for ( String ext : lang.getFileExtensions() )
{
- if ( ext.startsWith(".") )
+ if ( ext.startsWith(".") )
ext = ext.substring(1) ;
mapFileExtToLang.put(canonicalKey(ext), lang) ;
}
@@ -283,7 +272,7 @@ public class RDFLanguages
String mimeType = canonicalKey(lang.getHeaderString());
return mapContentTypeToLang.containsKey(mimeType);
}
-
+
/** Make sure the registration does not overlap or interfere with an existing registration. */
private static void checkRegistration(Lang lang)
{
@@ -295,8 +284,8 @@ public class RDFLanguages
return ;
if ( lang.equals(existingRegistration) )
return ;
-
-
+
+
// Is the content type already registered?
if ( isMimeTypeRegistered(lang) )
{
@@ -304,7 +293,7 @@ public class RDFLanguages
error("Language overlap: " +lang+" and "+mapContentTypeToLang.get(contentType)+" on content type "+contentType) ;
return;
}
-
+
// Check for clashes.
for (String altName : lang.getAltNames() )
if ( mapLabelToLang.containsKey(altName) )
@@ -317,9 +306,9 @@ public class RDFLanguages
error("Language overlap: " +lang+" and "+mapFileExtToLang.get(ext)+" on file extension type "+ext) ;
}
- /**
+ /**
* Remove a registration of a language - this also removes all recorded mapping
- * of content types and file extensions.
+ * of content types and file extensions.
*/
public static void unregister(Lang lang)
{
@@ -327,14 +316,14 @@ public class RDFLanguages
throw new IllegalArgumentException("null for language") ;
mapLabelToLang.remove(canonicalKey(lang.getLabel())) ;
mapContentTypeToLang.remove(canonicalKey(lang.getContentType().getContentTypeStr())) ;
-
+
for ( String ct : lang.getAltContentTypes() )
mapContentTypeToLang.remove(canonicalKey(ct)) ;
for ( String ext : lang.getFileExtensions() )
mapFileExtToLang.remove(canonicalKey(ext)) ;
}
-
- /** Is this language registered? */
+
+ /** Is this language registered? */
public static boolean isRegistered(Lang lang)
{
if ( lang == null )
@@ -345,10 +334,10 @@ public class RDFLanguages
return false ;
return true ;
}
-
+
/** return true if the language is registered as a triples language. */
public static boolean isTriples(Lang lang) { return RDFParserRegistry.isTriples(lang) ; }
-
+
/** return true if the language is registered as a quads language. */
public static boolean isQuads(Lang lang) { return RDFParserRegistry.isQuads(lang) ; }
@@ -378,7 +367,7 @@ public class RDFLanguages
MediaType ct = MediaType.create(contentType) ;
if ( ct.getCharset() != null )
return ct.getCharset() ;
-
+
String mt = ct.getContentType() ;
if ( contentTypeNTriples.equals(mt) ) return charsetUTF8 ;
if ( contentTypeNTriplesAlt.equals(mt) ) return charsetASCII ;
@@ -388,7 +377,7 @@ public class RDFLanguages
return charsetUTF8 ;
}
-
+
/** Map a colloquial name (e.g. "Turtle") to a {@link Lang} */
public static Lang shortnameToLang(String label)
{
@@ -397,12 +386,12 @@ public class RDFLanguages
String key = canonicalKey(label) ;
return mapLabelToLang.get(key) ;
}
-
+
/** Try to map a file extension to a {@link Lang}; return null on no registered mapping */
public static Lang fileExtToLang(String ext)
{
if ( ext == null ) return null ;
- if ( ext.startsWith(".") )
+ if ( ext.startsWith(".") )
ext = ext.substring(1) ;
ext = canonicalKey(ext) ;
return mapFileExtToLang.get(ext) ;
@@ -410,10 +399,10 @@ public class RDFLanguages
/** Try to map a resource name to a {@link Lang}; return null on no registered mapping */
public static Lang resourceNameToLang(String resourceName) { return filenameToLang(resourceName) ; }
-
+
/** Try to map a resource name to a {@link Lang}; return the given default where there is no registered mapping */
public static Lang resourceNameToLang(String resourceName, Lang dftLang) { return filenameToLang(resourceName, dftLang) ; }
-
+
/** Try to map a URI or file name to a {@link Lang}; return null on no registered mapping. */
public static Lang filenameToLang(String filename)
{
@@ -445,14 +434,14 @@ public class RDFLanguages
{
if ( langName == null )
return null ;
-
+
Lang lang = shortnameToLang(langName) ;
if ( lang != null )
return lang ;
lang = contentTypeToLang(langName) ;
return lang ;
}
-
+
static String canonicalKey(String x) { return x.toLowerCase(Locale.ROOT) ; }
public static ContentType guessContentType(String resourceName)
@@ -467,12 +456,12 @@ public class RDFLanguages
private static void error(String message)
{
- throw new RiotException(message) ;
+ throw new RiotException(message) ;
}
public static boolean sameLang(Lang lang1, Lang lang2)
{
- if ( lang1 == null || lang2 == null ) return false ;
+ if ( lang1 == null || lang2 == null ) return false ;
if ( lang1 == lang2 ) return true ;
return lang1.getLabel() == lang2.getLabel() ;
}
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java
index 1fc6710..1bff3b0 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFParserRegistry.java
@@ -18,17 +18,8 @@
package org.apache.jena.riot;
-import static org.apache.jena.riot.RDFLanguages.JSONLD;
-import static org.apache.jena.riot.RDFLanguages.N3;
-import static org.apache.jena.riot.RDFLanguages.NQUADS;
-import static org.apache.jena.riot.RDFLanguages.NTRIPLES;
-import static org.apache.jena.riot.RDFLanguages.RDFJSON;
-import static org.apache.jena.riot.RDFLanguages.RDFNULL;
-import static org.apache.jena.riot.RDFLanguages.RDFXML;
-import static org.apache.jena.riot.RDFLanguages.THRIFT;
-import static org.apache.jena.riot.RDFLanguages.TRIG;
-import static org.apache.jena.riot.RDFLanguages.TRIX;
-import static org.apache.jena.riot.RDFLanguages.TURTLE;
+//import static org.apache.jena.riot.RDFLanguages.*;
+import static org.apache.jena.riot.Lang.*;
import java.io.InputStream ;
import java.io.Reader ;
@@ -58,9 +49,9 @@ public class RDFParserRegistry
/** Map Jena I/O names to language */
private static Map<String, Lang> mapJenaNameToLang = new HashMap<>() ;
- /** map language to a parser factory */
+ /** map language to a parser factory */
private static Map<Lang, ReaderRIOTFactory> langToParserFactory = new HashMap<>() ;
-
+
/** Known triples languages */
private static Set<Lang> langTriples = new HashSet<>() ;
@@ -70,12 +61,12 @@ public class RDFParserRegistry
/** General parser factory for parsers implemented by "Lang" */
private static ReaderRIOTFactory parserFactory = new ReaderRIOTLangFactory() ;
// Others
- private static ReaderRIOTFactory parserFactoryRDFXML = new ReaderRIOTRDFXML.Factory();
+ private static ReaderRIOTFactory parserFactoryRDFXML = new ReaderRIOTRDFXML.Factory();
private static ReaderRIOTFactory parserFactoryJsonLD = new ReaderRIOTFactoryJSONLD() ;
private static ReaderRIOTFactory parserFactoryThrift = new ReaderRIOTFactoryThrift() ;
private static ReaderRIOTFactory parserFactoryTriX = new ReaderTriX.ReaderRIOTFactoryTriX() ;
private static ReaderRIOTFactory parserFactoryRDFNULL = new ReaderRDFNULL.Factory() ;
-
+
private static boolean initialized = false ;
static { init() ; }
public static void init()
@@ -84,26 +75,26 @@ public class RDFParserRegistry
initialized = true ;
initStandard() ;
}
-
+
private static void initStandard()
{
// Make sure the constants are initialized.
RDFLanguages.init() ;
-
+
registerLangTriples(NTRIPLES, parserFactory) ;
registerLangTriples(N3, parserFactory) ;
registerLangTriples(TURTLE, parserFactory) ;
registerLangTriples(RDFJSON, parserFactory) ;
registerLangTriples(RDFXML, parserFactoryRDFXML) ;
registerLangTriples(JSONLD, parserFactoryJsonLD) ;
- registerLangTriples(THRIFT, parserFactoryThrift) ;
+ registerLangTriples(RDFTHRIFT, parserFactoryThrift) ;
registerLangTriples(TRIX, parserFactoryTriX) ;
registerLangTriples(RDFNULL, parserFactoryRDFNULL) ;
-
+
registerLangQuads(JSONLD, parserFactoryJsonLD) ;
registerLangQuads(NQUADS, parserFactory) ;
registerLangQuads(TRIG, parserFactory) ;
- registerLangQuads(THRIFT, parserFactoryThrift) ;
+ registerLangQuads(RDFTHRIFT, parserFactoryThrift) ;
registerLangQuads(TRIX, parserFactoryTriX) ;
registerLangQuads(RDFNULL, parserFactoryRDFNULL) ;
}
@@ -116,7 +107,7 @@ public class RDFParserRegistry
RDFLanguages.register(lang) ;
langToParserFactory.put(lang, factory) ;
}
-
+
/** Register a language and its parser factory.
* To create a {@link Lang} object use {@link LangBuilder}.
*/
@@ -125,7 +116,7 @@ public class RDFParserRegistry
langTriples.add(lang) ;
registerLang(lang, factory) ;
}
-
+
/** Register a language and its parser factory.
* To create a {@link Lang} object use {@link LangBuilder}.
*/
@@ -141,7 +132,7 @@ public class RDFParserRegistry
RDFLanguages.unregister(lang) ;
langToParserFactory.remove(lang) ;
}
-
+
/** Return the parser factory for the language, or null if not registered.
* @deprecated To be removed or made package scoped. Use {@code RDFParser.create() ... .build()}
*/
@@ -156,12 +147,12 @@ public class RDFParserRegistry
/** return true if the language is registered with the triples parser factories */
public static boolean isTriples(Lang lang) { return langTriples.contains(lang) ; }
-
+
/** return true if the language is registered with the quads parser factories */
public static boolean isQuads(Lang lang) { return langQuads.contains(lang) ; }
// Parser factories
-
+
private static class ReaderRIOTLangFactory implements ReaderRIOTFactory
{
@Override
@@ -211,14 +202,14 @@ public class RDFParserRegistry
return new JsonLDReader(language, profile, profile.getErrorHandler());
}
}
-
+
private static class ReaderRIOTFactoryThrift implements ReaderRIOTFactory {
@Override
public ReaderRIOT create(Lang language, ParserProfile profile) {
return new ReaderRDFThrift() ;
}
}
-
+
private static class ReaderRDFThrift implements ReaderRIOT {
@Override
public void read(InputStream in, String baseURI, ContentType ct, StreamRDF output, Context context) {
diff --git a/jena-shacl/src/main/java/org/apache/jena/shacl/compact/SHACLC.java b/jena-shacl/src/main/java/org/apache/jena/shacl/compact/SHACLC.java
index ee4a865..a603daf 100644
--- a/jena-shacl/src/main/java/org/apache/jena/shacl/compact/SHACLC.java
+++ b/jena-shacl/src/main/java/org/apache/jena/shacl/compact/SHACLC.java
@@ -32,15 +32,9 @@ import org.apache.jena.sparql.util.Context;
/** SHACL Compact Syntax setup */
public class SHACLC {
- public static Lang langShacl = LangBuilder.create("SHACLC", "text/shaclc")
- .addAltNames("shaclc")
- .addFileExtensions("shaclc", "shc")
- .build();
-
public static void init() {
- RDFLanguages.register(langShacl);
ReaderRIOTFactory factory = (Lang language, ParserProfile profile)->new ReaderRIOTShaclc();
- RDFParserRegistry.registerLangTriples(langShacl, factory);
+ RDFParserRegistry.registerLangTriples(Lang.SHACLC, factory);
}
static class ReaderRIOTShaclc implements ReaderRIOT {
@@ -56,6 +50,4 @@ public class SHACLC {
StreamRDFOps.sendGraphToStream(g, output);
}
}
-
}
-