- Direct Known Subclasses:
IRIx is an abstraction layer; a provider is needed to give an
implementation. A provider is selected at start-up and is not expected to change
while the system is running.
IRIs.reference(java.lang.String) to check a string is suitable for us in RDF.
Method SummaryModifier and TypeMethodDescription
static IRIxCreate an
IRIxwithout resolving the iri.
static IRIxCreate an
IRIxfor any string.
getImpl()Return the implementation object of the provider.
abstract voidHandle violations by sending a boolean, indicating whether this is an error (true) or a warning (false), and string message to a handler.
abstract booleanTest whether the IRI has the given scheme name.
abstract booleanDoes this IRIx have any warnings and errors that are not syntax errors, for example, from URI scheme checks.
abstract booleanAn absolute URI is one with a URI scheme and without a fragment.
abstract booleanAn RDF Reference is an URI which has scheme.
abstract booleanA relative URI is one without a scheme, and maybe without some of the other parts.Return (if possible), an IRI that is relative to the base argument.Try to resolve a string against this IRI as base.Try to resolve a string against this IRI as base.
str()Return the URI as string.
toString()User readable form.
IRIxwithout resolving the iri. This operation may throw an
IRIs.resolve(String)to create an absolute IRI, resolving against the system base if necessary.
IRIs.check(String)to check a string is an absolute URI and is suitable for use in RDF.
IRIs.reference(String)when the string is an absolute URI and should not be resolved against local system base (e.g. it was passed in from outside) to create an
IRIxthat is suitable for use in RDF.
IRIxfor any string. It returns a IRIx holder and does no checking whatsoever. Whether the IRI "works" is down to care by the application.
isAbsolutepublic abstract boolean isAbsolute()An absolute URI is one with a URI scheme and without a fragment. The other components, host (authority), path, and query, are optional.
absolute-URI = scheme ":" hier-part [ "?" query ]
Beware of the meaning :
http:abcis an absolute URI - it has only a schema and a path without a root.
Note that a URI can be both "not absolute" and "not relative", e.g.
See isReference() for testing whether a URI is suitable for use in RDF.
isRelativepublic abstract boolean isRelative()
hasSchemepublic abstract boolean hasScheme
(String scheme)Test whether the IRI has the given scheme name.
The scheme name should be lowercase.
isReferencepublic abstract boolean isReference()An RDF Reference is an URI which has scheme. If it is hierarchical, it should have a non-empty host authority. It may have a query component and may have a fragment component. This not a term in RFC 3986 and it is not the same as "absolute URI". This is a change from RFC 2396 where an absolute URI means "has scheme".
In RDF data it is a useful concept. It is either an absolute URI, but if it is hierarchical, it must have a host.
- http:abc -- no host authority; HTTP is a hierarchical URI scheme
- http:// -- the http(s) URI scheme requires the host to be not empty if there is an authority component.
In practical terms:
- It has a scheme name.
- It does not have user info ("user:password@")
- It can have a fragment.
- If it is an HTTP URI:
- It has a host authority, that is, a "//" section
- It should have a path (starting "/" after the host authority) but this is not required.
- If it is a URN (RFC8141), which is a "rootless URI" with no "//" part:
resolveTry to resolve a string against this IRI as base. This call is "base.resolver(possibleRelativeIRI)". Throw
IRIExceptionif the string does not conform to the IRI grammar.
resolveTry to resolve a string against this IRI as base. Throw
IRIExceptionif the string does not conform to the IRI grammar. Return the original IRIx if there is no change.
normalizepublic abstract IRIx normalize()
relativizeReturn (if possible), an IRI that is relative to the base argument. If this IRI is a relative path, this is returned unchanged.
The base ("this" object) must have a scheme, have no fragment and no query string. Only the path name is made relative.
If no relative IRI can be found, return null.
hasViolationspublic abstract boolean hasViolations()Does this IRIx have any warnings and errors that are not syntax errors, for example, from URI scheme checks.
handleViolationsHandle violations by sending a boolean, indicating whether this is an error (true) or a warning (false), and string message to a handler.
strpublic String str()Return the URI as string. This has a stronger contract than "toString". "Object.toString" is a user readable string (e.g. it might add enclosing "<>" or show the parsed structure of the IRI) whereas
asString()is by contract the string that comprises the IRI. The string returned may be the normalized form. It is guaranteed to be usable as string in other API calls that expect a IRI in string form if the original input was a legal IRI by the RFC grammar and any additional scheme-specific rules the IRI provider enforces.
getImplpublic abstract Object getImpl()Return the implementation object of the provider. The class of the object depends on the provider.
hashCodepublic abstract int hashCode()
equalspublic abstract boolean equals
toStringpublic String toString()User readable form. Not guaranteed to be usable as a string in other API calls. Use
str()to get a string form that represents the IRI in the RFC grammar.