package org.openprovenance.prov.model;
/**
*
* <p>Interface for PROV Qualified Name.
* <p><a href="http://www.w3.org/TR/prov-dm/#concept-qualifiedName">PROV-DM Definition for Qualified Name</a>:
* A qualified name is a name subject to namespace interpretation. It consists of a namespace, denoted by an optional prefix, and a local name.
* <p>PROV-DM stipulates that a qualified name can be mapped into an IRI by concatenating the IRI associated with the prefix and the local part.
* <p>A qualified name's prefix is optional. If a prefix occurs in a qualified name, it refers to a namespace declared in a namespace declaration. In the absence of prefix, the qualified name refers to the default namespace.
*
* <p>This interface specification is derived from {@link javax.xml.namespace.QName} without the implied syntactic restrictions of xsd:QName.
*
* <p><a href="http://www.w3.org/TR/prov-n/#prod-QUALIFIED_NAME">PROV-N production for Qualified Name</a>:.
*
* <table class="grammar">
* <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-QUALIFIED_NAME" data-name="prod-QUALIFIED_NAME"></a>[<span class="prodNo">52</span>] </td> <td><<code class="production term">QUALIFIED_NAME</code>></td> <td> ::= </td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></span> ":" )? <span class="prod"><a class="grammarRef" href="#prod-PN_LOCAL">PN_LOCAL</a></span><br> | <span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></span> ":"</code></td> </tr> </tbody>
* <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-PN_LOCAL" data-name="prod-PN_LOCAL"></a>[<span class="prodNo">53</span>] </td> <td><<code class="production term">PN_LOCAL</code>></td> <td> ::= </td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rPN_CHARS_U">PN_CHARS_U</a></span> | [0-9] | <span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_OTHERS">PN_CHARS_OTHERS</a></span> ) ( ( <span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rPN_CHARS">PN_CHARS</a></span> | "." | <span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_OTHERS">PN_CHARS_OTHERS</a></span> )* ( <span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rPN_CHARS">PN_CHARS</a></span> | <span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_OTHERS">PN_CHARS_OTHERS</a></span> ) )?</code></td> </tr> </tbody>
* <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-PN_CHARS_OTHERS" data-name="prod-PN_CHARS_OTHERS"></a>[<span class="prodNo">54</span>] </td> <td><<code class="production term">PN_CHARS_OTHERS</code>></td> <td> ::= </td> <td><code class="content">"/"<br> | "@"<br> | "~"<br> | "&"<br> | "+"<br> | "*"<br> | "?"<br> | "#"<br> | "$"<br> | "!"<br> | <span class="prod"><a class="grammarRef" href="#prod-PERCENT">PERCENT</a></span><br> | <span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_ESC">PN_CHARS_ESC</a></span></code></td> </tr> </tbody>
* <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-PN_CHARS_ESC" data-name="prod-PN_CHARS_ESC"></a>[<span class="prodNo">55</span>] </td> <td><<code class="production term">PN_CHARS_ESC</code>></td> <td> ::= </td> <td><code class="content">"\" ( "=" | "'" | "(" | ")" | "," | "-" | ":" | ";" | "[" | "]" | "." )</code></td> </tr> </tbody>
* <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-PERCENT" data-name="prod-PERCENT"></a>[<span class="prodNo">56</span>] </td> <td><<code class="production term">PERCENT</code>></td> <td> ::= </td> <td><code class="content">"%" <span class="prod"><a class="grammarRef" href="#prod-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-HEX">HEX</a></span></code></td> </tr> </tbody>
* <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-HEX" data-name="prod-HEX"></a>[<span class="prodNo">57</span>] </td> <td><<code class="production term">HEX</code>></td> <td> ::= </td> <td><code class="content">[0-9]<br> | [A-F]<br> | [a-f]</code></td> </tr> </tbody>
* </table>
*
*
* @author lavm
*
*/
public interface QualifiedName {
/** Converts this QualifiedName to a valid xsd:QName by unescaping \-characters in the local names, and _-encoding the local name.
* @see https://github.com/lucmoreau/ProvToolbox/wiki/Mapping-PROV-Qualified-Names-to-xsd:QName#2-a-reversible-encoding
* @return a valid javax.xml.namespace.QName
*/
public javax.xml.namespace.QName toQName();
public String getUri();
public void setUri(String uri);
/** Get the local part of this QualifiedName.
*
*
* @return a string, the local part of this QualifiedName.
*
*/
public String getLocalPart();
/** Set the local part of this QualifiedName.
* @param local the local part*/
public void setLocalPart(String local);
/** Get the Namespace URI of this QualifiedName.
*
* @return a string, namespace URI of this QualifiedName.
*/
public String getNamespaceURI();
/** Set the Namespace URI of this QualifiedName.
* @param namespaceURI the namespace URI
*/
public void setNamespaceURI(String namespaceURI);
/** Get the prefix of this Qualified Name.
*
* @return a string, prefix for the Qualifed Name.
*/
public String getPrefix();
public void setPrefix(String prefix);
public boolean equals(Object objectToTest);
/**
* <p>Generate the hash code for this <code>QualifiedName</code>.</p>
*
* <p>The hash code is calculated using both the Namespace URI and
* the local part of the <code>QualifiedName</code>. The prefix is
* <strong><em>NOT</em></strong> used to calculate the hash
* code.</p>
*
* <p>This method satisfies the general contract of {@link
* java.lang.Object#hashCode() Object.hashCode()}.</p>
*
* @return hash code for this <code>QualifiedName</code> <code>Object</code>
*/
public abstract int hashCode();
}