View Javadoc
1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements. See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership. The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.apache.commons.rdf.api;
19  
20  /**
21   * An <a href= "http://www.w3.org/TR/rdf11-concepts/#dfn-iri" >RDF-1.1 IRI</a>,
22   * as defined by <a href= "http://www.w3.org/TR/rdf11-concepts/#section-IRIs" >RDF-1.1
23   * Concepts and Abstract Syntax</a>, a W3C Recommendation published on 25
24   * February 2014.
25   *
26   * @see RDF#createIRI(String)
27   */
28  public interface IRI extends BlankNodeOrIRI {
29  
30      /**
31       * Return the IRI encoded as a native Unicode String.<br>
32       *
33       * The returned string must not include URL-encoding to escape non-ASCII
34       * characters.
35       *
36       * @return The IRI encoded as a native Unicode String.
37       */
38      String getIRIString();
39  
40      /**
41       * Check it this IRI is equal to another IRI. <blockquote>
42       * <a href="http://www.w3.org/TR/rdf11-concepts/#section-IRIs">IRI
43       * equality</a>: Two IRIs are equal if and only if they are equivalent under
44       * Simple String Comparison according to section 5.1 of [RFC3987]. Further
45       * normalization MUST NOT be performed when comparing IRIs for equality.
46       * </blockquote>
47       *
48       * Two IRI instances are equal if and only if their {@link #getIRIString()}
49       * are equal.
50       *
51       * Implementations MUST also override {@link #hashCode()} so that two equal
52       * IRIs produce the same hash code.
53       *
54       * @param other
55       *            Another object
56       * @return true if other is an IRI and is equal to this
57       * @see Object#equals(Object)
58       */
59      @Override
60      boolean equals(Object other);
61  
62      /**
63       * Calculate a hash code for this IRI.
64       * <p>
65       * The returned hash code MUST be equal to the {@link String#hashCode()} of
66       * the {@link #getIRIString()}.
67       * <p>
68       * This method MUST be implemented in conjunction with
69       * {@link #equals(Object)} so that two equal IRIs produce the same hash
70       * code.
71       *
72       * @return a hash code value for this IRI.
73       * @see Object#hashCode()
74       */
75      @Override
76      int hashCode();
77  }