<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.4) on Fri Sep 20 12:10:30 CEST 2019 -->
<title>org.apache.sis.util.iso (Apache SIS 1.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2019-09-20">
<meta name="keywords" content="org.apache.sis.util.iso package">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="org.apache.sis.util.iso (Apache SIS 1.0 API)";
        }
    }
    catch(err) {
    }
//-->
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header">
<h1 title="Package" class="title">Package&nbsp;org.apache.sis.util.iso</h1>
</div>
<div class="contentContainer">
<section role="region"><a id="package.description">
<!--   -->
</a>
<div class="block">Implementations of GeoAPI types from the <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/package-summary.html?is-external=true" class="externalLink"><code>org​.opengis​.util</code></a> package.
 The main content of this package are:

 <ul>
   <li>Implementations of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/InternationalString.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink"><code>International­String</code></a>
       (related to the <code>&lt;lan:text­Group&gt;</code> XML element found in ISO specifications):
     <ul>
       <li><a href="SimpleInternationalString.html" title="class in org.apache.sis.util.iso"><code>Simple­International­String</code></a>   for wrapping a single <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink"><code>String</code></a>;</li>
       <li><a href="DefaultInternationalString.html" title="class in org.apache.sis.util.iso"><code>Default­International­String</code></a>  for providing many localizations in a <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util" class="externalLink"><code>Map</code></a>;</li>
       <li><a href="ResourceInternationalString.html" title="class in org.apache.sis.util.iso"><code>Resource­International­String</code></a> for providing localizations from a <a href="https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html?is-external=true" title="class or interface in java.util" class="externalLink"><code>Resource­Bundle</code></a>.</li>
       <li><a href="Types.html#getCodeTitle(org.opengis.util.CodeList)"><code>Types​.get­Code­Title(Code­List)</code></a> for wrapping a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/CodeList.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink"><code>Code­List</code></a> value.</li>
     </ul>
   </li>
   <li>Implementations of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/GenericName.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink"><code>Generic­Name</code></a> (derived from ISO 19103):
     <ul>
       <li><a href="DefaultLocalName.html" title="class in org.apache.sis.util.iso"><code>Default­Local­Name</code></a>  for identifier within a <a href="DefaultNameSpace.html" title="class in org.apache.sis.util.iso">name space</a>.</li>
       <li><a href="DefaultMemberName.html" title="class in org.apache.sis.util.iso"><code>Default­Member­Name</code></a> for identifying a member of a <a href="DefaultRecord.html" title="class in org.apache.sis.util.iso">record</a>.</li>
       <li><a href="DefaultTypeName.html" title="class in org.apache.sis.util.iso"><code>Default­Type­Name</code></a>   for identifying an attribute type associated to a member.</li>
       <li><a href="DefaultScopedName.html" title="class in org.apache.sis.util.iso"><code>Default­Scoped­Name</code></a> for a composite of a <cite>head</cite> name and a <cite>tail</cite> name.</li>
     </ul>
   </li>
   <li>Implementations of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/Record.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink"><code>Record</code></a> and related classes (derived from ISO 19103):
     <ul>
       <li><a href="DefaultRecord.html" title="class in org.apache.sis.util.iso"><code>Default­Record</code></a>       for a list of logically related elements as (<var>name</var>, <var>value</var>) pairs.</li>
       <li><a href="DefaultRecordType.html" title="class in org.apache.sis.util.iso"><code>Default­Record­Type</code></a>   for definition of the type of a <code>Record</code>.</li>
       <li><a href="DefaultRecordSchema.html" title="class in org.apache.sis.util.iso"><code>Default­Record­Schema</code></a> for a collection of <code>Record­Type</code>s in a given namespace.</li>
     </ul>
   </li>
   <li>Static utility methods:
     <ul>
       <li><a href="Types.html" title="class in org.apache.sis.util.iso"><code>Types</code></a> for working with UML identifiers and description of GeoAPI types.</li>
       <li><a href="Names.html" title="class in org.apache.sis.util.iso"><code>Names</code></a> for simple creation and operations on <code>Generic­Name</code>.</li>
     </ul>
   </li>
 </ul>

 <div class="section">Anatomy of a name</div>
 Names may be <a href="AbstractName.html#toFullyQualifiedName()">fully qualified</a>
 (like <code>"urn:ogc:def:crs:EPSG::4326"</code>),
 or they may be relative to a <a href="AbstractName.html#scope()">scope</a>
 (like <code>"EPSG::4326"</code> in the <code>"urn:ogc:def:crs"</code> scope).
 In the following illustration, each line is one possible construction for <code>"urn:ogc:crs:epsg:4326"</code>
 (taken as an abridged form of above URN for this example only).
 For each construction:
 <ul>
   <li>The first columns shows the <span style="background:LawnGreen">name</span> in a green background.</li>
   <li>The second and third columns show the
       (<span style="background:LightSkyBlue"><var>head</var></span>.<span style="background:Yellow"><var>tail</var></span>) and
       (<span style="background:LightSkyBlue"><var>path</var></span>.<span style="background:Yellow"><var>tip</var></span>)
       components, respectively.</li>
   <li>The parts without colored background do not appear in the
       <a href="AbstractName.html#toString()">string representation</a> or in the
       <a href="AbstractName.html#getParsedNames()">list of parsed names</a>.</li>
 </ul>

 <table class="compact" style="border-spacing:21pt 0; white-space: nowrap">
   <caption>Components in scope, head, tail, path and tip</caption>
   <tr>
     <th><a href="AbstractName.html#scope()">scope</a>.name</th>
     <th><a href="AbstractName.html#head()">head</a>.<a href="DefaultScopedName.html#tail()">tail</a></th>
     <th><a href="DefaultScopedName.html#path()">path</a>.<a href="AbstractName.html#tip()">tip</a></th>
     <th>Type</th>
   </tr><tr>
     <td><code><span style="background:LawnGreen">urn:ogc:crs:epsg:4326</span></code></td>
     <td><code><span style="background:LightSkyBlue">urn:</span><span style="background:Yellow">ogc:crs:epsg:4326</span></code></td>
     <td><code><span style="background:LightSkyBlue">urn:ogc:crs:epsg:</span><span style="background:Yellow">4326</span></code></td>
     <td><a href="DefaultScopedName.html" title="class in org.apache.sis.util.iso">Scoped name</a> with
         <a href="DefaultNameSpace.html#isGlobal()">global namespace</a></td>
   </tr><tr>
     <td><code>urn:<span style="background:LawnGreen">ogc:crs:epsg:4326</span></code></td>
     <td><code>urn:<span style="background:LightSkyBlue">ogc:</span><span style="background:Yellow">crs:epsg:4326</span></code></td>
     <td><code>urn:<span style="background:LightSkyBlue">ogc:crs:epsg:</span><span style="background:Yellow">4326</span></code></td>
     <td><a href="DefaultScopedName.html" title="class in org.apache.sis.util.iso">Scoped name</a></td>
   </tr><tr>
     <td><code>urn:ogc:<span style="background:LawnGreen">crs:epsg:4326</span></code></td>
     <td><code>urn:ogc:<span style="background:LightSkyBlue">crs:</span><span style="background:Yellow">epsg:4326</span></code></td>
     <td><code>urn:ogc:<span style="background:LightSkyBlue">crs:epsg:</span><span style="background:Yellow">4326</span></code></td>
     <td><a href="DefaultScopedName.html" title="class in org.apache.sis.util.iso">Scoped name</a></td>
   </tr><tr>
     <td><code>urn:ogc:crs:<span style="background:LawnGreen">epsg:4326</span></code></td>
     <td><code>urn:ogc:crs:<span style="background:LightSkyBlue">epsg:</span><span style="background:Yellow">4326</span></code></td>
     <td><code>urn:ogc:crs:<span style="background:LightSkyBlue">epsg:</span><span style="background:Yellow">4326</span></code></td>
     <td><a href="DefaultScopedName.html" title="class in org.apache.sis.util.iso">Scoped name</a></td>
   </tr><tr>
     <td><code>urn:ogc:crs:epsg:<span style="background:LawnGreen">4326</span></code></td>
     <td><code>urn:ogc:crs:epsg:<span style="background:LightSkyBlue">4326</span></code></td>
     <td><code>urn:ogc:crs:epsg:<span style="background:Yellow">4326</span></code></td>
     <td><a href="DefaultLocalName.html" title="class in org.apache.sis.util.iso">Local name</a></td>
   </tr>
 </table></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.3</dd>

<p><font size="-1">Defined in the <code>sis-metadata</code> module</font></p>
</dl>
</section>
<ul class="blockList">
<li class="blockList">
<table class="typeSummary">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="AbstractFactory.html" title="class in org.apache.sis.util.iso">AbstractFactory</a></th>
<td class="colLast">
<div class="block">Base class of factories provided in the Apache SIS library.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="AbstractInternationalString.html" title="class in org.apache.sis.util.iso">AbstractInternationalString</a></th>
<td class="colLast">
<div class="block">Base class for character strings that has been internationalized into several locales.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="AbstractName.html" title="class in org.apache.sis.util.iso">AbstractName</a></th>
<td class="colLast">
<div class="block">Base class for sequence of identifiers rooted within the context of a <a href="DefaultNameSpace.html" title="class in org.apache.sis.util.iso">namespace</a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="DefaultInternationalString.html" title="class in org.apache.sis.util.iso">DefaultInternationalString</a></th>
<td class="colLast">
<div class="block">An international string using a map of strings for different locales.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="DefaultLocalName.html" title="class in org.apache.sis.util.iso">DefaultLocalName</a></th>
<td class="colLast">
<div class="block">Identifier within a <a href="DefaultNameSpace.html" title="class in org.apache.sis.util.iso">name space</a> for a local object.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="DefaultMemberName.html" title="class in org.apache.sis.util.iso">DefaultMemberName</a></th>
<td class="colLast">
<div class="block">The name to identify a member of a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/Record.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink">record</a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="DefaultNameFactory.html" title="class in org.apache.sis.util.iso">DefaultNameFactory</a></th>
<td class="colLast">
<div class="block">A factory for creating <a href="AbstractName.html" title="class in org.apache.sis.util.iso"><code>Abstract­Name</code></a> objects.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="DefaultNameSpace.html" title="class in org.apache.sis.util.iso">DefaultNameSpace</a></th>
<td class="colLast">
<div class="block">A domain in which <a href="AbstractName.html" title="class in org.apache.sis.util.iso">names</a> given by character strings are defined.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="DefaultRecord.html" title="class in org.apache.sis.util.iso">DefaultRecord</a></th>
<td class="colLast">
<div class="block">A list of logically related elements as (<var>name</var>, <var>value</var>) pairs in a dictionary.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="DefaultRecordSchema.html" title="class in org.apache.sis.util.iso">DefaultRecordSchema</a></th>
<td class="colLast">
<div class="block">A collection of record types in a given namespace.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="DefaultRecordType.html" title="class in org.apache.sis.util.iso">DefaultRecordType</a></th>
<td class="colLast">
<div class="block">An immutable definition of the type of a <a href="DefaultRecord.html" title="class in org.apache.sis.util.iso">record</a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="DefaultScopedName.html" title="class in org.apache.sis.util.iso">DefaultScopedName</a></th>
<td class="colLast">
<div class="block">A composite of a <a href="DefaultNameSpace.html" title="class in org.apache.sis.util.iso">name space</a> (as a <a href="DefaultLocalName.html" title="class in org.apache.sis.util.iso">local name</a>)
 and a <a href="AbstractName.html" title="class in org.apache.sis.util.iso">generic name</a> valid in that name space.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="DefaultTypeName.html" title="class in org.apache.sis.util.iso">DefaultTypeName</a></th>
<td class="colLast">
<div class="block">The name of an attribute type associated to a <a href="DefaultMemberName.html" title="class in org.apache.sis.util.iso">member name</a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="Names.html" title="class in org.apache.sis.util.iso">Names</a></th>
<td class="colLast">
<div class="block">Static methods for creating, parsing and formatting <a href="AbstractName.html" title="class in org.apache.sis.util.iso">generic names</a>.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="ResourceInternationalString.html" title="class in org.apache.sis.util.iso">ResourceInternationalString</a></th>
<td class="colLast">
<div class="block">An international string backed by a <a href="https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html?is-external=true" title="class or interface in java.util" class="externalLink"><code>Resource­Bundle</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="SimpleInternationalString.html" title="class in org.apache.sis.util.iso">SimpleInternationalString</a></th>
<td class="colLast">
<div class="block">An international string consisting of a single string for all locales.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="Types.html" title="class in org.apache.sis.util.iso">Types</a></th>
<td class="colLast">
<div class="block">Static methods working on GeoAPI types and <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/util/CodeList.html?is-external=true" title="class or interface in org.opengis.util" class="externalLink"><code>Code­List</code></a> values.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2010&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>
