[Mulgara-svn] r1758 - trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast
pag at mulgara.org
pag at mulgara.org
Fri Jul 10 16:31:21 UTC 2009
Author: pag
Date: 2009-07-10 09:31:20 -0700 (Fri, 10 Jul 2009)
New Revision: 1758
Modified:
trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/StringLiteral.java
Log:
Added support for typed and language coded literals
Modified: trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/StringLiteral.java
===================================================================
--- trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/StringLiteral.java 2009-07-10 16:29:09 UTC (rev 1757)
+++ trunk/src/jar/content-rlog/java/org/mulgara/krule/rlog/ast/StringLiteral.java 2009-07-10 16:31:20 UTC (rev 1758)
@@ -17,8 +17,10 @@
package org.mulgara.krule.rlog.ast;
import org.mulgara.krule.rlog.ParseContext;
+import org.mulgara.krule.rlog.parser.URIParseException;
import org.mulgara.krule.rlog.rdf.Literal;
import org.mulgara.krule.rlog.rdf.RDFNode;
+import org.mulgara.krule.rlog.rdf.URIReference;
/**
* A quoted string in the AST.
@@ -32,6 +34,12 @@
/** The string value. */
public final String value;
+ /** The language code for the string. */
+ public String lang = null;
+
+ /** The datatype for the literal. */
+ public PredicateLiteral type = null;
+
/**
* A new string literal.
* @param value The contents of the quoted string.
@@ -43,6 +51,14 @@
this.value = value;
}
+ public void setLang(String lang) {
+ this.lang = lang;
+ }
+
+ public void setType(PredicateLiteral type) {
+ this.type = type;
+ }
+
// inheritdoc
public void accept(TreeWalker walker) {
walker.visit(this);
@@ -55,7 +71,11 @@
//inheritdoc
public boolean equals(Object o) {
- return o instanceof StringLiteral && value.equals(((StringLiteral)o).value);
+ if (o instanceof StringLiteral) {
+ StringLiteral ol = (StringLiteral)o;
+ return value.equals(ol.value) && nullEq(lang, ol.lang) && nullEq(type, ol.type);
+ }
+ return false;
}
// inheritdoc
@@ -64,7 +84,9 @@
}
/** {@inheritDoc} */
- public RDFNode getRDFNode() {
+ public RDFNode getRDFNode() throws URIParseException {
+ if (lang != null) return new Literal(value, lang);
+ if (type != null) return new Literal(value, (URIReference)type.getRDFNode());
return new Literal(value.toString());
}
@@ -86,5 +108,14 @@
return STRING_LITERAL_ID;
}
+ /**
+ * Convenience method for equality testing on objects that might be null.
+ * @param a The first object to compare.
+ * @param b The second object to compare.
+ * @return <code>true</code> if both objects are null, or equal by value.
+ */
+ static final boolean nullEq(Object a, Object b) {
+ return (a == null) ? b == null : a.equals(b);
+ }
}
More information about the Mulgara-svn
mailing list