sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Desruisseaux (JIRA)" <j...@apache.org>
Subject [jira] [Created] (SIS-137) <gmd:LocalisedCharacterString> locale shall be a URI
Date Tue, 01 Oct 2013 09:36:23 GMT
Martin Desruisseaux created SIS-137:
---------------------------------------

             Summary: <gmd:LocalisedCharacterString> locale shall be a URI
                 Key: SIS-137
                 URL: https://issues.apache.org/jira/browse/SIS-137
             Project: Spatial Information Systems
          Issue Type: Bug
          Components: Metadata, Utilities
    Affects Versions: 0.3
            Reporter: Martin Desruisseaux
            Assignee: Martin Desruisseaux


The {{locale}} attribute in the {{<gmd:LocalisedCharacterString>}} element is defined
by the XML schema as a value of kind {{xs:anyURI}}. However SIS 0.3 handles it as a plain
string containing directly the language code, except for the "{{#locale-}}" prefix (if present)
which is ignored. This is incomplete, and may be wrong under some circumstances.

ISO 19139:2007 at pages 105 and 106 defines the management of multilingual metadata. A character
string is localized as the example below:

{code:xml}
<PT_FreeText>
  <textGroup>
    <LocalisedCharacterString locale="#locale-fr">Résumé succinct du contenu de la
ressource</LocalisedCharacterString>
  </textGroup>
</PT_FreeText>
{code}

The {{locale="#locale-fr"}} attribute references a locale definition provided elsewhere, typically
as an element of the root metadata:

{code:xml}
<MD_Metadata>
  <locale>
    <PT_Locale id="locale-fr">
      <languageCode>
        <LanguageCode codeList="resources/Codelist/gmxcodelists.xml#LanguageCode" codeListValue="fra">
French </LanguageCode>
      </languageCode>
    </PT_Locale>
  </locale>
</MD_Metadata>
{code}

Since the {{locale}} attribute is a URI referencing an other element, that attribute value
typically begins with {{#}} character, while the {{id}} attribute in {{<PT_Locale>}}
does not. However there is nothing in the specification telling that the locale ID shall be
prefixed by "{{locale-}}", neither that the text after that prefix shall be the language code.
It just happen to be the convention followed in the examples given by the ISO specification.

A search on internet shows that this attribute is used in various ways:

h3. French mapping agency (IGN)
Extract from [ML_gmxCrs.xml|http://eden.ign.fr/xsd/isotc211/isofull/20090316/resources/crs/ML_gmxCrs.xml/view]:

{code:xml}
<gmd:PT_FreeText>
  <gmd:textGroup>
    <gmd:LocalisedCharacterString locale="#xpointer(//*[@id='fra'])">Catalogue des paramètres
géodésiques pour la description de jeux de métadonnées conformes aux schémas gmx</gmd:LocalisedCharacterString>
  </gmd:textGroup>
</gmd:PT_FreeText>
{code}

{code:xml}
<locale>
  <gmd:PT_Locale id="fra">
    <gmd:languageCode>
      <gmd:LanguageCode codeList="../codelist/ML_gmxCodelists.xml#LanguageCode" codeListValue="french">French</gmd:LanguageCode>
    </gmd:languageCode>
  </gmd:PT_Locale>
</locale>
{code}

Observations:
* The {{locale}} attribute value is given by a XPath.
* The {{codeListValue}} attribute value in {{LanguageCode}} is "French" instead than an ISO
language code.


h3. NOAA
Extract from [Cruise2ISO on geo-ide|https://geo-ide.noaa.gov/wiki/images/f/fc/Cruise2ISOSample-20100618-xml.pdf]:

{code:xml}
<gmd:LocalisedCharacterString id="PERSON_NAME_ID" locale="http://www.rvdata.us/person#6708">PERSON/NAME<gmd:LocalisedCharacterString>
{code}

Observations:
* The {{locale}} attribute is a URL to a distant resource. However in this particular case
attempts to fetch that resource give an error 404. Consequently there is no obvious way to
find the locale for that example.


h3. INSPIRE
Extract from [Google code|http://inspire-foss.googlecode.com/svn-history/r215/trunk/etl/NL.Kadaster/GeographicalNames/test/gn-example-finland.xml]:

{code:xml}
<gmd:LocalisedCharacterString locale="en-GB">House</gmd:LocalisedCharacterString>
{code}

Observations:
* The {{locale}} attribute contains directly a parseable ISO language code. The absence of
leading {{#}} suggest that there is no need to search for a definition elsewhere. This is
the easiest case and is supported by current Apache SIS.


h3. Other
Extract from [a mailing list|http://www.mail-archive.com/jibx-users@lists.sourceforge.net/msg02889.html]:

{code:xml}
<gmd:LocalisedCharacterString locale="#frFR">Montréal</gmd:LocalisedCharacterString>
{code}

Observations:
* This is not really a parseable ISO code because of the missing {{-}} character. We would
expect a definition to be provided elsewhere because of the {{#}} prefix, while the extract
from the mail archive does not show it.

h2. Work needed in SIS
The fact that the {{<PT_Locale>}} elements providing locale definitions may appear after
the localized string complicates the handling. One possible approach would be to create an
internal object that keep a reference to a {{DefaultInternationalString}}, a {{String}} and
a locale ID, then invoke the {{DefaultInternationalString.add(Locale, String)}} method at
some later time when the {{Locale}} become known.




--
This message was sent by Atlassian JIRA
(v6.1#6144)

Mime
View raw message