org.eclipse.rdf4j.rio.languages

## Class RFC3066LanguageHandler

- java.lang.Object
- - org.eclipse.rdf4j.rio.languages.RFC3066LanguageHandler

- All Implemented Interfaces:
    LanguageHandler

      public class RFC3066LanguageHandler
      extends Object
      implements LanguageHandler

  A language handler that can verify RFC3066 formatted language tags.

  This language handler normalises language tags to lower-case if `normalizeLanguage(String, String, ValueFactory)` is used.

  Author:
    Peter Ansell
  See Also:
    RFC 3066

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Pattern` | `matcher` Language tag is RFC3066-conformant if it matches this regex: [a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*

    - ### Fields inherited from interface org.eclipse.rdf4j.rio.LanguageHandler

      `BCP47, RFC3066, RFC4646`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RFC3066LanguageHandler()` Default constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getKey()` A unique key for this language handler to identify it in the LanguageHandlerRegistry.
    `boolean` | `isRecognizedLanguage(String languageTag)` Checks if the given language tag is recognized by this language handler, including cases where the language tag is recognized, but is not yet normalized.
    `Literal` | `normalizeLanguage(String literalValue, String languageTag, ValueFactory valueFactory)` Normalize both the language tag and the language if appropriate, and use the given value factory to generate a literal matching the literal value and language tag.
    `boolean` | `verifyLanguage(String literalValue, String languageTag)` Verifies that the language tag is valid, optionally including an automated check on the literal value.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### matcher

          protected final Pattern matcher

      Language tag is RFC3066-conformant if it matches this regex: [a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*

  - ### Constructor Detail

    - #### RFC3066LanguageHandler

          public RFC3066LanguageHandler()

      Default constructor.

  - ### Method Detail

    - #### isRecognizedLanguage

          public boolean isRecognizedLanguage(String languageTag)

      Description copied from interface: `LanguageHandler`
      Checks if the given language tag is recognized by this language handler, including cases where the language tag is recognized, but is not yet normalized.
      Specified by:
        `isRecognizedLanguage` in interface `LanguageHandler`
      Parameters:
        `languageTag` - The language tag to check.
      Returns:
        True if the language tag is syntactically valid and could be used with `LanguageHandler.verifyLanguage(String, String)` and `LanguageHandler.normalizeLanguage(String, String, ValueFactory)`.

    - #### verifyLanguage

          public boolean verifyLanguage(String literalValue,
                                        String languageTag)
                                 throws LiteralUtilException

      Description copied from interface: `LanguageHandler`
      Verifies that the language tag is valid, optionally including an automated check on the literal value.

      This method must only be called after verifying that `LanguageHandler.isRecognizedLanguage(String)` returns true for the given language tag.

      Specified by:
        `verifyLanguage` in interface `LanguageHandler`
      Parameters:
        `literalValue` - Literal value matching the given language tag.
        `languageTag` - A language tag that matched with `LanguageHandler.isRecognizedLanguage(String)`.
      Returns:
        True if the language tag is recognized by this language handler, and it is verified to be syntactically valid.
      Throws:
        `LiteralUtilException` - If the language tag was not recognized.

    - #### normalizeLanguage

          public Literal normalizeLanguage(String literalValue,
                                           String languageTag,
                                           ValueFactory valueFactory)
                                    throws LiteralUtilException

      Description copied from interface: `LanguageHandler`
      Normalize both the language tag and the language if appropriate, and use the given value factory to generate a literal matching the literal value and language tag.

      This method must only be called after verifying that `LanguageHandler.isRecognizedLanguage(String)` returns true for the given language tag, and `LanguageHandler.verifyLanguage(String, String)` also returns true for the given language and literal value.

      Specified by:
        `normalizeLanguage` in interface `LanguageHandler`
      Parameters:
        `literalValue` - Required literal value to use in the normalization process and to provide the value for the resulting literal.
        `languageTag` - The language tag which is to be normalized. This tag is available in normalized form from the result using `Literal.getLanguage()`.
        `valueFactory` - The `ValueFactory` to use to create the result literal.
      Returns:
        A `Literal` containing the normalized literal value and language tag.
      Throws:
        `LiteralUtilException` - If the language tag was not recognized or verified, or the literal value could not be normalized due to an error.

    - #### getKey

          public String getKey()

      Description copied from interface: `LanguageHandler`
      A unique key for this language handler to identify it in the LanguageHandlerRegistry.
      Specified by:
        `getKey` in interface `LanguageHandler`
      Returns:
        A unique string key.

Copyright © 2015-2022 Eclipse Foundation. All Rights Reserved.