import org.apache.jena.rdf.model.RDFNode; //导入方法依赖的package包/类
/**
* @param stmt
*/
public static void printSPARQLStatement(Statement stmt, OutputStreamWriter osw) {
if (logger.isDebugEnabled()) {
logger.debug("printSPARQLStatement: stmt: {}", stmt);
}
StringBuffer buf = new StringBuffer();
buf.append("
buf.append(stmt.getSubject().getURI());
buf.append(">
buf.append(stmt.getPredicate().getURI());
buf.append("> ");
RDFNode objNode = stmt.getObject();
if (objNode.isURIResource())
buf.append("");
else {
RDFDatatype dt = objNode.asLiteral().getDatatype();
if ( logger.isDebugEnabled()) {
logger.debug("printSPARQLStatement: literal datatype URI: {}, java class: {}", dt.getURI(), dt.getJavaClass());
}
if (dt.getURI().equals(XSDDatatype.XSDstring.getURI())) {
buf.append("\"").append(sparqlEscape(objNode.asLiteral().getString())).append("\"");
if (StringUtils.isNotEmpty(objNode.asLiteral().getLanguage()))
buf.append("@").append(objNode.asLiteral().getLanguage());
} else if (dt.getURI().equals(RDF.langString.getURI())) {
buf.append("\"").append(sparqlEscape(objNode.asLiteral().getString())).append("\"");
if (StringUtils.isNotEmpty(objNode.asLiteral().getLanguage()))
buf.append("@").append(objNode.asLiteral().getLanguage());
} else if (dt.getURI().equals(XSDDatatype.XSDboolean.getURI())) {
buf.append(objNode.asLiteral().getBoolean());
} else if (dt.getURI().equals(XSDDatatype.XSDint.getURI()) ||
dt.getURI().equals(XSDDatatype.XSDinteger.getURI())) {
buf.append(objNode.asLiteral().getInt());
} else if (dt.getURI().equals(XSDDatatype.XSDlong.getURI())) {
buf.append(objNode.asLiteral().getLong());
} else if (dt.getURI().equals(XSDDatatype.XSDanyURI.getURI())) {
buf.append("\"").append(objNode.asLiteral().getString()).append("\"^^");
} else if (dt.getURI().equals(XSDDatatype.XSDdate.getURI())) {
buf.append("\"").append(objNode.asLiteral().getLexicalForm()).append("\"^^");
} else if (dt.getJavaClass() != null && dt.getJavaClass().getName() != null &&
dt.getJavaClass().getName().equals("java.util.Date")) {
buf.append("\"").append(dtfmt.format(objNode.asLiteral().getValue())).append("\"^^");
} else {
logger.warn("printSPARQLStatement: unrecognized literal datatype: {}", dt.getURI());
buf.append("\"").append(sparqlEscape(objNode.asLiteral().getString())).append("\"");
}
}
try {
osw.append(buf.toString() + " .").append("\n");
} catch (IOException ioe) {
logger.error("failed to write statement for SPARQL", ioe);
}
}