Class LiteralImpl

    • Field Detail

      • dataType

        private final IRI dataType
      • languageTag

        private final java.lang.String languageTag
      • lexicalForm

        private final java.lang.String lexicalForm
    • Constructor Detail

      • LiteralImpl

        public LiteralImpl​(java.lang.String literal)
      • LiteralImpl

        public LiteralImpl​(java.lang.String lexicalForm,
                           IRI dataType)
      • LiteralImpl

        public LiteralImpl​(java.lang.String literal,
                           java.lang.String languageTag)
    • Method Detail

      • getLanguageTag

        public java.util.Optional<java.lang.String> getLanguageTag()
        Description copied from interface: Literal
        If and only if the datatype IRI is http://www.w3.org/1999/02/22-rdf-syntax-ns#langString, the language tag for this Literal is a non-empty language tag as defined by BCP47.
        If the datatype IRI is not http://www.w3.org/1999/02/22-rdf-syntax-ns#langString, this method must return Optional.empty().

        The value space of language tags is always in lower case; although RDF implementations MAY convert all language tags to lower case, safe comparisons of language tags should be done using String.toLowerCase(Locale) with the locale Locale.ROOT.

        Implementation note: If your application requires Serializable objects, it is best not to store an Optional in a field. It is recommended to use Optional.ofNullable(Object) to create the return value for this method.

        Specified by:
        getLanguageTag in interface Literal
        Returns:
        The Optional language tag for this literal. If Optional.isPresent() returns true, the value returned by Optional.get() must be a non-empty language tag string conforming to BCP47.
        See Also:
        RDF-1.1 Literal language tag
      • ntriplesString

        public java.lang.String ntriplesString()
        Description copied from interface: RDFTerm
        Return the term serialised as specified by the RDF-1.1 N-Triples Canonical form.
        Specified by:
        ntriplesString in interface RDFTerm
        Returns:
        The term serialised as RDF-1.1 N-Triples.
        See Also:
        RDF-1.1 N-Triples Canonical form
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • hashCode

        public int hashCode()
        Description copied from interface: Literal
        Calculate a hash code for this Literal.

        The returned hash code MUST be equal to the result of Objects.hash(Object...) with the arguments Literal.getLexicalForm(), Literal.getDatatype(), Literal.getLanguageTag().map(s->s.toLowerString(Locale.ROOT)).

        This method MUST be implemented in conjunction with Literal.equals(Object) so that two equal Literals produce the same hash code.

        Specified by:
        hashCode in interface Literal
        Specified by:
        hashCode in interface RDFTerm
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        a hash code value for this Literal.
        See Also:
        Object.hashCode(), Objects.hash(Object...)
      • lowerCase

        private static java.lang.String lowerCase​(java.lang.String langTag)
      • equals

        public boolean equals​(java.lang.Object obj)
        Description copied from interface: Literal
        Check it this Literal is equal to another Literal.
        Literal term equality: Two literals are term-equal (the same RDF literal) if and only if the two lexical forms, the two datatype IRIs, and the two language tags (if any) compare equal, character by character. Thus, two literals can have the same value without being the same RDF term.
        As the value space for language tags is lower-space, if they are present, they MUST be compared character by character using the equivalent of String.toLowerCase(java.util.Locale) with the locale Locale.ROOT.

        Implementations MUST also override Literal.hashCode() so that two equal Literals produce the same hash code.

        Specified by:
        equals in interface Literal
        Specified by:
        equals in interface RDFTerm
        Overrides:
        equals in class java.lang.Object
        Parameters:
        obj - Another object
        Returns:
        true if other is a Literal and is equal to this
        See Also:
        Object.equals(Object)