return getLiteral(n, false);
}
public static Literal getLiteral(final Node node, final boolean allowLazyLiteral) {
Literal literal = null;
Node n = node;
if (n instanceof ASTNIL) {
try {
literal = (allowLazyLiteral) ? LiteralFactory
.createURILiteral("<http://www.w3.org/1999/02/22-rdf-syntax-ns#nil>")
: LiteralFactory
.createURILiteralWithoutLazyLiteral("<http://www.w3.org/1999/02/22-rdf-syntax-ns#nil>");
} catch (final URISyntaxException e1) {
e1.printStackTrace();
}
} else if (n instanceof ASTBlankNode) {
final ASTBlankNode blankNode = (ASTBlankNode) n;
final String name = blankNode.getIdentifier();
literal = (allowLazyLiteral) ? LiteralFactory
.createAnonymousLiteral(name) : LiteralFactory
.createAnonymousLiteralWithoutLazyLiteral(name);
} else if (n instanceof ASTQuotedURIRef) {
final ASTQuotedURIRef uri = (ASTQuotedURIRef) n;
final String name = uri.getQRef();
if (URILiteral.isURI("<" + name + ">")) {
try {
literal = (allowLazyLiteral) ? LiteralFactory
.createURILiteral("<" + name + ">")
: LiteralFactory
.createURILiteralWithoutLazyLiteral("<"
+ name + ">");
} catch (final Exception e) {
literal = (allowLazyLiteral) ? LiteralFactory
.createLiteral("<" + name + ">") : LiteralFactory
.createLiteralWithoutLazyLiteral("<" + name + ">");
}
} else {
literal = (allowLazyLiteral) ? LiteralFactory.createLiteral("<"
+ name + ">") : LiteralFactory
.createLiteralWithoutLazyLiteral("<" + name + ">");
}
} else if (n instanceof ASTRDFLiteral) {
n = n.jjtGetChild(0);
}
if (literal != null) {
return literal;
}
if (n instanceof ASTStringLiteral) {
final ASTStringLiteral lit = (ASTStringLiteral) n;
final String quotedContent = lit.getStringLiteral();
literal = (allowLazyLiteral) ?
LiteralFactory.createLiteral(quotedContent)
: LiteralFactory.createLiteralWithoutLazyLiteral(quotedContent);
} else if (n instanceof ASTInteger) {
final ASTInteger lit = (ASTInteger) n;
final String content = String.valueOf(lit.getValue());
try {
literal = (allowLazyLiteral) ? LiteralFactory
.createTypedLiteral("\"" + content + "\"",
"<http://www.w3.org/2001/XMLSchema#integer>")
: TypedLiteralOriginalContent.createTypedLiteral("\""
+ content + "\"",
"<http://www.w3.org/2001/XMLSchema#integer>");
} catch (final URISyntaxException e) {
literal = (allowLazyLiteral) ? LiteralFactory
.createLiteral(content) : LiteralFactory
.createLiteralWithoutLazyLiteral(content);
}
} else if (n instanceof ASTFloatingPoint) {
final ASTFloatingPoint lit = (ASTFloatingPoint) n;
final String content = lit.getValue();
try {
if (content.contains("e") || content.contains("E")) {
literal = (allowLazyLiteral) ? LiteralFactory
.createTypedLiteral("\"" + content + "\"",
"<http://www.w3.org/2001/XMLSchema#double>")
: TypedLiteralOriginalContent
.createTypedLiteral("\"" + content + "\"",
"<http://www.w3.org/2001/XMLSchema#double>");
} else {
literal = (allowLazyLiteral) ? LiteralFactory
.createTypedLiteral("\"" + content + "\"",
"<http://www.w3.org/2001/XMLSchema#decimal>")
: TypedLiteralOriginalContent
.createTypedLiteral("\"" + content + "\"",
"<http://www.w3.org/2001/XMLSchema#decimal>");
}
} catch (final URISyntaxException e) {
literal = (allowLazyLiteral) ? LiteralFactory
.createLiteral(content) : LiteralFactory
.createLiteralWithoutLazyLiteral(content);
}
} else if (n instanceof ASTBooleanLiteral) {
final String content = ((ASTBooleanLiteral) n).getState() + "";
try {
literal = (allowLazyLiteral) ? LiteralFactory
.createTypedLiteral("\"" + content + "\"",
"<http://www.w3.org/2001/XMLSchema#boolean>")
: TypedLiteralOriginalContent.createTypedLiteral("\""
+ content + "\"",
"<http://www.w3.org/2001/XMLSchema#boolean>");
} catch (final URISyntaxException e) {
literal = (allowLazyLiteral) ? LiteralFactory
.createLiteral(content) : LiteralFactory
.createLiteralWithoutLazyLiteral(content);
}
} else if (n instanceof ASTDoubleCircumflex) {
if (n.jjtGetNumChildren() != 2) {
System.err.println(n + " is expected to have 2 children!");
} else {
final String content = getLiteral(n.jjtGetChild(0), false).toString();
final String type = getLiteral(n.jjtGetChild(1), false).toString();
try {
literal = (allowLazyLiteral) ? LiteralFactory
.createTypedLiteral(content, type)
: TypedLiteralOriginalContent.createTypedLiteral(
content, type);
} catch (final Exception e) {
literal = (allowLazyLiteral) ? LiteralFactory
.createLiteral(content + "^^" + type)
: LiteralFactory
.createLiteralWithoutLazyLiteral(content
+ "^^" + type);
}
}
} else if (n instanceof ASTLangTag) {
final String content = getLiteral(n.jjtGetChild(0), false).toString();
final String lang = ((ASTLangTag) n).getLangTag();
literal = (allowLazyLiteral) ? LiteralFactory
.createLanguageTaggedLiteral(content, lang)
: LanguageTaggedLiteralOriginalLanguage
.createLanguageTaggedLiteral(content, lang);
} else if (n instanceof ASTQName) {
final ASTQName uri = (ASTQName) n;
final String namespace = uri.getNameSpace();
final String localName = uri.getLocalName();
final String name = namespace + localName;
if (URILiteral.isURI("<" + name + ">")) {
try {
literal = (allowLazyLiteral) ? LiteralFactory
.createURILiteral("<" + name + ">")
: LiteralFactory
.createURILiteralWithoutLazyLiteral("<"
+ name + ">");
} catch (final Exception e) {
literal = (allowLazyLiteral) ? LiteralFactory
.createLiteral("<" + name + ">") : LiteralFactory
.createLiteralWithoutLazyLiteral("<" + name + ">");
}
} else {
literal = (allowLazyLiteral) ? LiteralFactory.createLiteral("<"
+ name + ">") : LiteralFactory
.createLiteralWithoutLazyLiteral("<" + name + ">");
}
} else if(n instanceof ASTObjectList){
literal = getLiteral(n.jjtGetChild(0), allowLazyLiteral);
} else {
System.err.println("Unexpected type! "
+ n.getClass().getSimpleName());
}
return literal;
}