[
https://issues.apache.org/jira/browse/COMMONSRDF-47?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15677708#comment-15677708
]
ASF GitHub Bot commented on COMMONSRDF-47:
------------------------------------------
Github user acoburn commented on a diff in the pull request:
https://github.com/apache/incubator-commonsrdf/pull/27#discussion_r88735941
--- Diff: api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java ---
@@ -22,6 +22,124 @@
import java.util.Optional;
/**
+ * An RDF syntax, e.g. as used for parsing and writing RDF.
+ * <p>
+ * An RDF syntax is uniquely identified by its {@link #mediaType()}, and
has a
+ * suggested {@link #fileExtension()}.
+ * <p>
+ * Some of the RDF syntaxes may {@link #supportsDataset()}, meaning they
can
+ * represent {@link Quad}s.
+ * <p>
+ * An enumeration of the official RDF 1.1 syntaxes is available in
+ * {@link OfficialRDFSyntax} - for convenience they are also accessible
+ * as constants here, e.g. <code>RDFSyntax.JSONLD</code>.
+ *
+ */
+public interface RDFSyntax {
+
+ public static OfficialRDFSyntax JSONLD = OfficialRDFSyntax.JSONLD;
+ public static OfficialRDFSyntax TURTLE = OfficialRDFSyntax.TURTLE;
+ public static OfficialRDFSyntax NQUADS = OfficialRDFSyntax.NQUADS;
+ public static OfficialRDFSyntax NTRIPLES = OfficialRDFSyntax.NTRIPLES;
+ public static OfficialRDFSyntax RDFA_HTML =
OfficialRDFSyntax.RDFA_HTML;
+ public static OfficialRDFSyntax RDFA_XHTML =
OfficialRDFSyntax.RDFA_XHTML;
+ public static OfficialRDFSyntax RDFXML = OfficialRDFSyntax.RDFXML;
+ public static OfficialRDFSyntax TRIG = OfficialRDFSyntax.TRIG;
+
+ /**
+ * A short name of the RDF Syntax.
+ * <p>
+ * The name typically corresponds to the {@link Enum#name()} of for
+ * {@link OfficialRDFSyntax}, e.g. <code>JSONLD</code>.
+ *
+ * @return Short name for RDF syntax
+ */
+ public String name();
+
+ /**
+ * The title of the RDF Syntax.
+ * <p>
+ * This is generally the title of the corresponding standard,
+ * e.g. <em>RDF 1.1 Turtle</em>.
+ *
+ * @return Title of RDF Syntax
+ */
+ public String title();
+
+ /**
+ * The <a href="https://tools.ietf.org/html/rfc2046">IANA media
type</a> for
+ * the RDF syntax.
+ * <p>
+ * The media type can be used as part of <code>Content-Type</code> and
+ * <code>Accept</code> for <em>content negotiation</em> in the
+ * <a href="https://tools.ietf.org/html/rfc7231#section-3.1.1.1">HTTP
+ * protocol</a>.
+ */
+ public String mediaType();
+
+ /**
+ * The <a
href="https://tools.ietf.org/html/rfc2046">IANA-registered</a>
+ * file extension.
+ * <p>
+ * The file extension includes the leading period, e.g.
<code>.jsonld</code>
+ */
+ public String fileExtension();
+
+ /**
+ * Indicate if this RDF syntax supports
+ * <a href="https://www.w3.org/TR/rdf11-concepts/#section-dataset">RDF
+ * Datasets</a>.
+ */
+ public boolean supportsDataset();
+
+
+ /**
+ * Return the RDFSyntax with the specified media type.
+ * <p>
+ * The <code>mediaType</code> is compared in lower case, therefore it
might
+ * not be equal to the {@link RDFSyntax#mediaType} of the returned
+ * RDFSyntax.
+ * <p>
+ * For convenience matching of media types used in a
+ * <code>Content-Type</code> header, if the <code>mediaType</code>
contains
+ * the characters <code>;</code>, <code>,</code> or white space, only
the
+ * part of the string to the left of those characters are considered.
+ *
+ * @param mediaType
+ * The media type to match
+ * @return If {@link Optional#isPresent()}, the {@link RDFSyntax}
which has
+ * a matching {@link RDFSyntax#mediaType}, otherwise
+ * {@link Optional#empty()} indicating that no matching syntax
was
+ * found.
+ */
+ public static Optional<RDFSyntax> byMediaType(String mediaType) {
+ final String type =
mediaType.toLowerCase(Locale.ENGLISH).split("\\s*[;,]", 2)[0];
--- End diff --
According to https://www.ietf.org/rfc/rfc2045.txt, it seems that splitting
on `\\s*;` would be more accurate.
> RDFSyntax should be interface, not enum
> ---------------------------------------
>
> Key: COMMONSRDF-47
> URL: https://issues.apache.org/jira/browse/COMMONSRDF-47
> Project: Apache Commons RDF
> Issue Type: Bug
> Components: api
> Affects Versions: 0.2.0
> Reporter: Stian Soiland-Reyes
> Assignee: Stian Soiland-Reyes
>
> [~p_ansell] raises in [pull request
> 25|https://github.com/apache/incubator-commonsrdf/pull/25#discussion_r85231845]
> {quote}
> Using enum for RDFSyntax is a bad idea unless it overrides an interface and
> the interface is used in method signatures instead of the enum. There are
> many other RDFSyntaxes, and enum (without implementing an interface) is only
> suited to cases where the full set are known a priori.
> {quote}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)