/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jena.graph.impl ;
import org.apache.jena.datatypes.DatatypeFormatException ;
import org.apache.jena.datatypes.RDFDatatype ;
public interface LiteralLabel
{
/**
Answer true iff this is a well-formed XML literal.
*/
public boolean isXML() ;
/**
Answer true iff this is a well-formed literal.
*/
public boolean isWellFormed() ;
/**
Answer true iff the wellformed flag is true. Does not test for datatype.
*/
public boolean isWellFormedRaw() ;
/**
Answer a human-acceptable representation of this literal value.
This is NOT intended for a machine-processed result.
*/
public String toString(boolean quoting) ;
@Override
public String toString() ;
/**
Answer the lexical form of this literal, constructing it on-the-fly
(and remembering it) if necessary.
*/
public String getLexicalForm() ;
/**
Answer the value used to index this literal
TODO Consider pushing indexing decisions down to the datatype
*/
public Object getIndexingValue() ;
/**
Answer the language associated with this literal (the empty string if
there's no language).
*/
public String language() ;
/**
Answer a suitable instance of a Java class representing this literal's
value. May throw an exception if the literal is ill-formed.
*/
public Object getValue() throws DatatypeFormatException ;
/**
Answer the datatype of this literal, null if it is untyped.
*/
public RDFDatatype getDatatype() ;
/**
Answer the datatype URI of this literal, null if it untyped.
*/
public String getDatatypeURI() ;
/**
Answer true iff this literal is syntactically equal to <code>other</code>.
Note: this is <i>not</i> <code>sameValueAs</code>.
*/
@Override
public boolean equals(Object other) ;
/**
Answer true if this literal represents the same (abstract) value as
the other one. Two literals that are .equals are sameValueAs.
*/
public boolean sameValueAs(LiteralLabel other) ;
/**
Answer the hashcode of this literal, derived from its value if it's
well-formed and otherwise its lexical form.
*/
@Override
public int hashCode() ;
/**
Answer the default hash value, suitable for datatypes which have values
which support hashCode() naturally: it is derived from its value if it is
well-formed and otherwise from its lexical form.
*/
public int getDefaultHashcode() ;
}