<!DOCTYPE html>
<html lang="en">
<head>
    

    <title>Apache Jena - Support for Internationalised Resource Identifiers in Jena</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link href="/css/bootstrap.min.css" rel="stylesheet" media="screen">
    <link href="/css/bootstrap-extension.css" rel="stylesheet" type="text/css">
    <link href="/css/jena.css" rel="stylesheet" type="text/css">
    <link rel="shortcut icon" href="/images/favicon.ico" />

    <script src="https://code.jquery.com/jquery-2.2.4.min.js"
            integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
            crossorigin="anonymous"></script>
    <script src="/js/jena-navigation.js" type="text/javascript"></script>
    <script src="/js/bootstrap.min.js" type="text/javascript"></script>

    <script src="/js/improve.js" type="text/javascript"></script>

    
</head>

<body>

<nav class="navbar navbar-default" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="/index.html">
                <img class="logo-menu" src="/images/jena-logo/jena-logo-notext-small.png" alt="jena logo">Apache Jena</a>
        </div>

        <div class="collapse navbar-collapse navbar-ex1-collapse">
            <ul class="nav navbar-nav">
                <li id="homepage"><a href="/index.html"><span class="glyphicon glyphicon-home"></span> Home</a></li>
                <li id="download"><a href="/download/index.cgi"><span class="glyphicon glyphicon-download-alt"></span> Download</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-book"></span> Learn <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li class="dropdown-header">Tutorials</li>
                        <li><a href="/tutorials/index.html">Overview</a></li>
                        <li><a href="/documentation/fuseki2/index.html">Fuseki Triplestore</a></li>
                        <li><a href="/documentation/notes/index.html">How-To's</a></li>
                        <li><a href="/documentation/query/manipulating_sparql_using_arq.html">Manipulating SPARQL using ARQ</a></li>
                        <li><a href="/tutorials/rdf_api.html">RDF core API tutorial</a></li>
                        <li><a href="/tutorials/sparql.html">SPARQL tutorial</a></li>
                        <li><a href="/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
                        <li class="divider"></li>
                        <li class="dropdown-header">References</li>
                        <li><a href="/documentation/index.html">Overview</a></li>
                        <li><a href="/documentation/query/index.html">ARQ (SPARQL)</a></li>
                        <li><a href="/documentation/assembler/index.html">Assembler</a></li>
                        <li><a href="/documentation/tools/index.html">Command-line tools</a></li>
                        <li><a href="/documentation/rdfs/">Data with RDFS Inferencing</a></li>
                        <li><a href="/documentation/geosparql/index.html">GeoSPARQL</a></li>
                        <li><a href="/documentation/inference/index.html">Inference API</a></li>
                        <li><a href="/documentation/javadoc.html">Javadoc</a></li>
                        <li><a href="/documentation/ontology/">Ontology API</a></li>
                        <li><a href="/documentation/permissions/index.html">Permissions</a></li>
                        <li><a href="/documentation/extras/querybuilder/index.html">Query Builder</a></li>
                        <li><a href="/documentation/rdf/index.html">RDF API</a></li>
                        <li><a href="/documentation/rdfconnection/">RDF Connection - SPARQL API</a></li>
                        <li><a href="/documentation/io/">RDF I/O</a></li>
                        <li><a href="/documentation/rdfstar/index.html">RDF-star</a></li>
                        <li><a href="/documentation/shacl/index.html">SHACL</a></li>
                        <li><a href="/documentation/shex/index.html">ShEx</a></li>
                        <li><a href="/documentation/jdbc/index.html">SPARQL over JDBC</a></li>
                        <li><a href="/documentation/tdb/index.html">TDB</a></li>
                        <li><a href="/documentation/tdb2/index.html">TDB2</a></li>
                        <li><a href="/documentation/query/text-query.html">Text Search</a></li>
                    </ul>
                </li>

                <li class="drop down">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-book"></span> Javadoc <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="/documentation/javadoc.html">All Javadoc</a></li>
                        <li><a href="/documentation/javadoc/arq/">ARQ</a></li>
                        <li><a href="/documentation/javadoc_elephas.html">Elephas</a></li>
                        <li><a href="/documentation/javadoc/fuseki2/">Fuseki</a></li>
                        <li><a href="/documentation/javadoc/geosparql/">GeoSPARQL</a></li>
                        <li><a href="/documentation/javadoc/jdbc/">JDBC</a></li>
                        <li><a href="/documentation/javadoc/jena/">Jena Core</a></li>
                        <li><a href="/documentation/javadoc/permissions/">Permissions</a></li>
                        <li><a href="/documentation/javadoc/extras/querybuilder/">Query Builder</a></li>
                        <li><a href="/documentation/javadoc/shacl/">SHACL</a></li>
                        <li><a href="/documentation/javadoc/tdb/">TDB</a></li>
                        <li><a href="/documentation/javadoc/text/">Text Search</a></li>
                    </ul>
                </li>

                <li id="ask"><a href="/help_and_support/index.html"><span class="glyphicon glyphicon-question-sign"></span> Ask</a></li>

                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-bullhorn"></span> Get involved <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="/getting_involved/index.html">Contribute</a></li>
                        <li><a href="/help_and_support/bugs_and_suggestions.html">Report a bug</a></li>
                        <li class="divider"></li>
                        <li class="dropdown-header">Project</li>
                        <li><a href="/about_jena/about.html">About Jena</a></li>
                        <li><a href="/about_jena/architecture.html">Architecture</a></li>
                        <li><a href="/about_jena/citing.html">Citing</a></li>
                        <li><a href="/about_jena/team.html">Project team</a></li>
                        <li><a href="/about_jena/contributions.html">Related projects</a></li>
                        <li><a href="/about_jena/roadmap.html">Roadmap</a></li>
                        <li class="divider"></li>
                        <li class="dropdown-header">ASF</li>
                        <li><a href="http://www.apache.org/">Apache Software Foundation</a></li>
                        <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
                        <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
                        <li><a href="http://www.apache.org/security/">Security</a></li>
                        <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                    </ul>
                </li>


    

                <li id="edit"><a href="https://github.com/apache/jena-site/edit/main/source/documentation/notes/iri.md" title="Edit this page on GitHub"><span class="glyphicon glyphicon-pencil"></span> Edit this page</a></li>
            </ul>
        </div>
    </div>
</nav>


<div class="container">
    <div class="row">
        <div class="col-md-12">
            <div id="breadcrumbs">
                
                    





<ol class="breadcrumb">
    
    
        
        
    
        
        
            
                <li><a href='/documentation'>DOCUMENTATION</a></li>
            
            
        
    
        
        
            
                <li><a href='/documentation/notes'>NOTES</a></li>
            
            
        
    
        
        
            
                <li class="active">IRI</li>
            
            
        
    
</ol>




                
            </div>
            <h1 class="title">Support for Internationalised Resource Identifiers in Jena</h1>
            
	<p>The Jena IRI Library is an implementation of <a href="http://www.ietf.org/rfc/rfc3987.txt">RFC 3987</a> (IRI)
and <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a> (URI),
and a partial implementation of other related standards. It is incomplete.</p>
<h2 id="javadoc">Javadoc</h2>
<p><a href="TODO">The IRI Library Javadoc (Public APIs)</a></p>
<p>The most important parts of the Javadoc are:</p>
<p><a href="TODO">ViolationCodes</a>
Gives the relationships between the error codes and the
specifications.</p>
<p><a href="TODO">IRI</a>
Gives the main interface for IRIs.</p>
<p><a href="TODO">IRIFactory</a>
Gives the main class for creating IRIs, including specifying
which specifications you wish to be using, and with what degree of
force.</p>
<h2 id="minimal-documentation">Minimal Documentation</h2>
<p>Unfortunately this version of the IRI Library has badly incomplete
documentation, any help in producing good documentation would be
appreciated.</p>
<p>The current version is incomplete with little indication as to
where. It is primarily intended to support the functionality of
checking strings against any of the various IRI or URI
specifications. Some support for different levels of checking is
provided.</p>
<p>These instructions are from a mail message on the <code>jena-dev</code> mailing
list.</p>
<pre><code>Summary:
=======
use something like:

import org.apache.jena.iri.*;

 static IRIFactory iriFactory = IRIFactory
                                .semanticWebImplementation();

...

   boolean includeWarnings = false;
   IRI iri;
   iri = iriFactory.create{iriString); // always works
   if (iri.hasViolation(includeWarnings)) {
     // bad iri code
   }

...

Since you are taking IRI rules seriously, you may want to have
includeWarnings = true in the above.

Full version
============
The code is found in the iri.jar, which is not particularly
well documented, and the source and documentation is in the
separate iri download, from the Jena download area.

As shown, you start by building an IRIFactory

org.apache.jena.iri.IRIFactory

this embodies some set of rules, against which you will check
an IRI.

The one we use is:
  IRIFactory.jenaImplementation()
    For use by Jena team only.
    This method reflects the current IRI support
    in Jena, which is a moving target at present.

(actually it hasn't ever moved - the main issue is to do with
file: IRIs - we definitely want to be more liberal than a
conservative reading of the specs allow, because, e.g.
filenames with spaces in happen, and because file uris like
file:localFile which aren't particularly conformant, also
happen).

others, that allow you to control which specs you are checking
against are:

  IRIFactory.iriImplementation()   RFC 3987
  IRIFactory.uriImplementation()   RFC 3986 (US-ASCII only)

  IRIFactory.semanticWebImplementation()
       This factory is a conservative implementation
       appropriate for Semantic Web applications.

Having got your factory then you convert a string into an IRI
in one of two ways, depending on how you want to handle errors:

e.g.
   IRI iri;
   try {
     iri = iriFactory.construct{iriString);
   }
   catch (IRIException e) {
     // bad iri code

   }


or

   boolean includeWarnings = false;
   IRI iri;
   iri = iriFactory.create{iriString); // always works
   if (iri.hasViolation(includeWarnings)) {
     // bad iri code
// e.g.

        Iterator it = iri.violations(includeWarnings);
        while (it.hasNext()) {
            Violation v = (Violation) it.next();
   // do something:    printErrorMessages(v);

        }
   }

various warning and error conditions are listed in the java doc
for ViolationCodes (in the iri download).
An error is a MUST force statement from the spec,
a warning corresponds to a SHOULD force statement from the
spec. There is also some support for 'minting' violations,
which provide a stricter level of checking for
IRIs that you are generating, as opposed to IRIs
that have been passed to your application from elsewhere.

So that, if I remember correctly:

http://example.org:80/foo

raises a warning with code DEFAULT_PORT_SHOULD_BE_OMITTED

Like this one, many of the SHOULD force statements help avoid having
two different IRIs that have the same operational semantics.

Each spec is implemented as some set of active error and warning
codes, so depending on which factory you chose in the first place,
you may get a different collection of spec violations, some with
SHOULD force and some with MUST force.

There are also potentially warnings associated with security issues
like IRI spoofing, which may not strictly violate any SHOULDs
in any spec.
</code></pre>


        </div>
    </div>

</div>

<footer class="footer">
    <div class="container" style="font-size:80%" >
        <p>
            Copyright &copy; 2011&ndash;2022 The Apache Software Foundation, Licensed under the
            <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
        </p>
        <p>
            Apache Jena, Jena, the Apache Jena project logo, Apache and the Apache feather logos are trademarks of
            The Apache Software Foundation.
            <br/>
          <a href="https://privacy.apache.org/policies/privacy-policy-public.html"
             >Apache Software Foundation Privacy Policy</a>.
        </p>
    </div>
</footer>


<script type="text/javascript">
    var link = $('a[href="' + this.location.pathname + '"]');
    if (link != undefined)
        link.parents('li,ul').addClass('active');
</script>

</body>
</html>
