001: /*
002: * Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2007.
003: *
004: * Licensed under the Aduna BSD-style license.
005: */
006: package org.openrdf.model;
007:
008: import java.math.BigDecimal;
009: import java.math.BigInteger;
010:
011: import javax.xml.datatype.XMLGregorianCalendar;
012:
013: /**
014: * An RDF literal consisting of a label (the value) and optionally a language
015: * tag or a datatype (but not both).
016: *
017: * @author Arjohn Kampman
018: */
019: public interface Literal extends Value {
020:
021: /**
022: * Gets the label of this literal.
023: *
024: * @return The literal's label.
025: */
026: public String getLabel();
027:
028: /**
029: * Gets the language tag for this literal, normalized to lower case.
030: *
031: * @return The language tag for this literal, or <tt>null</tt> if it
032: * doesn't have one.
033: */
034: public String getLanguage();
035:
036: /**
037: * Gets the datatype for this literal.
038: *
039: * @return The datatype for this literal, or <tt>null</tt> if it doesn't
040: * have one.
041: */
042: public URI getDatatype();
043:
044: /**
045: * Compares a literal object to another object.
046: *
047: * @param other
048: * The object to compare this literal to.
049: * @return <tt>true</tt> if the other object is an instance of
050: * {@link Literal} and if their labels, language tags and datatypes
051: * are equal.
052: */
053: public boolean equals(Object other);
054:
055: /**
056: * Returns the literal's hash code. The hash code of a literal is defined as
057: * the hash code of its label: <tt>label.hashCode()</tt>.
058: *
059: * @return A hash code for the literal.
060: */
061: public int hashCode();
062:
063: /**
064: * Returns the <tt>byte</tt> value of this literal.
065: *
066: * @return The <tt>byte value of the literal.
067: * @throws NumberFormatException If the literal cannot be represented by a <tt>byte</tt>.
068: */
069: public byte byteValue();
070:
071: /**
072: * Returns the <tt>short</tt> value of this literal.
073: *
074: * @return The <tt>short</tt> value of the literal.
075: * @throws NumberFormatException
076: * If the literal's label cannot be represented by a <tt>short</tt>.
077: */
078: public short shortValue();
079:
080: /**
081: * Returns the <tt>int</tt> value of this literal.
082: *
083: * @return The <tt>int</tt> value of the literal.
084: * @throws NumberFormatException
085: * If the literal's label cannot be represented by a <tt>int</tt>.
086: */
087: public int intValue();
088:
089: /**
090: * Returns the <tt>long</tt> value of this literal.
091: *
092: * @return The <tt>long</tt> value of the literal.
093: * @throws NumberFormatException
094: * If the literal's label cannot be represented by to a <tt>long</tt>.
095: */
096: public long longValue();
097:
098: /**
099: * Returns the integer value of this literal.
100: *
101: * @return The integer value of the literal.
102: * @throws NumberFormatException
103: * If the literal's label is not a valid integer.
104: */
105: public BigInteger integerValue();
106:
107: /**
108: * Returns the decimal value of this literal.
109: *
110: * @return The decimal value of the literal.
111: * @throws NumberFormatException
112: * If the literal's label is not a valid decimal.
113: */
114: public BigDecimal decimalValue();
115:
116: /**
117: * Returns the <tt>float</tt> value of this literal.
118: *
119: * @return The <tt>float</tt> value of the literal.
120: * @throws NumberFormatException
121: * If the literal's label cannot be represented by a <tt>float</tt>.
122: */
123: public float floatValue();
124:
125: /**
126: * Returns the <tt>double</tt> value of this literal.
127: *
128: * @return The <tt>double</tt> value of the literal.
129: * @throws NumberFormatException
130: * If the literal's label cannot be represented by a <tt>double</tt>.
131: */
132: public double doubleValue();
133:
134: /**
135: * Returns the <tt>boolean</tt> value of this literal.
136: *
137: * @return The <tt>long</tt> value of the literal.
138: * @throws IllegalArgumentException
139: * If the literal's label cannot be represented by a <tt>boolean</tt>.
140: */
141: public boolean booleanValue();
142:
143: /**
144: * Returns the {@link XMLGregorianCalendar} value of this literal. A calendar
145: * representation can be given for literals whose label conforms to the
146: * syntax of the following <a href="http://www.w3.org/TR/xmlschema-2/">XML
147: * Schema datatypes</a>: <tt>dateTime</tt>, <tt>time</tt>,
148: * <tt>date</tt>, <tt>gYearMonth</tt>, <tt>gMonthDay</tt>,
149: * <tt>gYear</tt>, <tt>gMonth</tt> or <tt>gDay</tt>.
150: *
151: * @return The calendar value of the literal.
152: * @throws IllegalArgumentException
153: * If the literal cannot be represented by a
154: * {@link XMLGregorianCalendar}.
155: */
156: public XMLGregorianCalendar calendarValue();
157: }
|