[VIVO-1270] Changes to adhere to the RDF 1.1 spec
This commit is contained in:
parent
a3c378bb25
commit
50bef0d85e
10 changed files with 41 additions and 457 deletions
|
@ -10,10 +10,6 @@ import java.util.Collection;
|
||||||
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
import com.github.jsonldjava.core.JSONLD;
|
|
||||||
import com.github.jsonldjava.core.JSONLDProcessingError;
|
|
||||||
import com.github.jsonldjava.impl.JenaRDFParser;
|
|
||||||
import com.github.jsonldjava.utils.JSONUtils;
|
|
||||||
import org.apache.jena.rdf.model.Model;
|
import org.apache.jena.rdf.model.Model;
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
|
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
|
||||||
|
@ -56,15 +52,7 @@ abstract class SparqlQueryApiRdfProducer extends SparqlQueryApiExecutor {
|
||||||
if (mediaType.isNativeFormat()) {
|
if (mediaType.isNativeFormat()) {
|
||||||
IOUtils.copy(rawResult, out);
|
IOUtils.copy(rawResult, out);
|
||||||
} else if (mediaType.getJenaResponseFormat().equals("JSON")) {
|
} else if (mediaType.getJenaResponseFormat().equals("JSON")) {
|
||||||
// JSON-LD is a special case, since jena 2.6.4 doesn't support it.
|
parseToModel(rawResult).write(out, "JSON-LD");
|
||||||
try {
|
|
||||||
JenaRDFParser parser = new JenaRDFParser();
|
|
||||||
Object json = JSONLD.fromRDF(parseToModel(rawResult), parser);
|
|
||||||
JSONUtils.write(new OutputStreamWriter(out, "UTF-8"), json);
|
|
||||||
} catch (JSONLDProcessingError e) {
|
|
||||||
throw new RDFServiceException(
|
|
||||||
"Could not convert from Jena model to JSON-LD", e);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
parseToModel(rawResult).write(out,
|
parseToModel(rawResult).write(out,
|
||||||
mediaType.getJenaResponseFormat());
|
mediaType.getJenaResponseFormat());
|
||||||
|
|
|
@ -21,11 +21,6 @@ import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import com.github.jsonldjava.core.JSONLD;
|
|
||||||
import com.github.jsonldjava.core.JSONLDProcessingError;
|
|
||||||
import com.github.jsonldjava.impl.JenaRDFParser;
|
|
||||||
import com.github.jsonldjava.utils.JSONUtils;
|
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission;
|
import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.policy.PolicyHelper;
|
import edu.cornell.mannlib.vitro.webapp.auth.policy.PolicyHelper;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest;
|
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.AuthorizationRequest;
|
||||||
|
@ -325,28 +320,17 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
|
||||||
String mediaType = values.getContentType().getMediaType();
|
String mediaType = values.getContentType().getMediaType();
|
||||||
response.setContentType(mediaType);
|
response.setContentType(mediaType);
|
||||||
|
|
||||||
if ( JSON_MIMETYPE.equals(mediaType) || JSON_LD_MIMETYPE.equals(mediaType)){
|
String format = "";
|
||||||
//json-ld is not supported by jena v2.6.4
|
if ( RDFXML_MIMETYPE.equals(mediaType)) {
|
||||||
try {
|
format = "RDF/XML";
|
||||||
JenaRDFParser parser = new JenaRDFParser();
|
} else if( N3_MIMETYPE.equals(mediaType)) {
|
||||||
Object json = JSONLD.fromRDF( values.getModel() , parser);
|
format = "N3";
|
||||||
JSONUtils.write(response.getWriter(), json);
|
} else if ( TTL_MIMETYPE.equals(mediaType)) {
|
||||||
} catch (JSONLDProcessingError e) {
|
format = "TTL";
|
||||||
throw new IOException("Could not convert from Jena model to JSON-LD", e);
|
} else if ( JSON_MIMETYPE.equals(mediaType) || JSON_LD_MIMETYPE.equals(mediaType)) {
|
||||||
}
|
format = "JSON-LD";
|
||||||
}else{
|
|
||||||
String format = "";
|
|
||||||
if ( RDFXML_MIMETYPE.equals(mediaType)) {
|
|
||||||
format = "RDF/XML";
|
|
||||||
} else if( N3_MIMETYPE.equals(mediaType)) {
|
|
||||||
format = "N3";
|
|
||||||
} else if ( TTL_MIMETYPE.equals(mediaType)) {
|
|
||||||
format ="TTL";
|
|
||||||
}
|
|
||||||
values.getModel().write( response.getOutputStream(), format );
|
|
||||||
}
|
}
|
||||||
|
values.getModel().write( response.getOutputStream(), format );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void doException(VitroRequest vreq, HttpServletResponse response,
|
protected void doException(VitroRequest vreq, HttpServletResponse response,
|
||||||
|
|
|
@ -14,6 +14,7 @@ import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
import org.apache.jena.atlas.io.StringWriterI;
|
||||||
import org.apache.jena.query.QuerySolution;
|
import org.apache.jena.query.QuerySolution;
|
||||||
import org.apache.jena.query.ResultSet;
|
import org.apache.jena.query.ResultSet;
|
||||||
import org.apache.jena.query.ResultSetFactory;
|
import org.apache.jena.query.ResultSetFactory;
|
||||||
|
@ -24,6 +25,8 @@ import org.apache.jena.rdf.model.Resource;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
|
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
|
||||||
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException;
|
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException;
|
||||||
|
import org.apache.jena.riot.out.NodeFormatter;
|
||||||
|
import org.apache.jena.riot.out.NodeFormatterTTL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utilities for executing queries and working with query results.
|
* Utilities for executing queries and working with query results.
|
||||||
|
@ -195,14 +198,10 @@ public class QueryUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String literalToString(Literal l) {
|
private static String literalToString(Literal l) {
|
||||||
StringBuilder buffer = new StringBuilder();
|
StringWriterI sw = new StringWriterI();
|
||||||
buffer.append('"').append(l.getLexicalForm()).append('"');
|
NodeFormatter fmt = new NodeFormatterTTL(null, null);
|
||||||
if (l.getDatatypeURI() != null) {
|
fmt.formatLiteral(sw, l.asNode());
|
||||||
buffer.append("^^<").append(l.getDatatypeURI()).append(">");
|
return sw.toString();
|
||||||
} else if (StringUtils.isNotEmpty(l.getLanguage())) {
|
|
||||||
buffer.append("@").append(l.getLanguage());
|
|
||||||
}
|
|
||||||
return buffer.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,18 +48,17 @@ public class RdfLiteralHash {
|
||||||
|
|
||||||
if( stmt.getDatapropURI() == null || stmt.getDatapropURI().trim().length() == 0)
|
if( stmt.getDatapropURI() == null || stmt.getDatapropURI().trim().length() == 0)
|
||||||
throw new Error("Cannot make a hash for a statement with no predicate URI");
|
throw new Error("Cannot make a hash for a statement with no predicate URI");
|
||||||
|
|
||||||
String language = "9876NONE";
|
String langOrDatatype = "9876NONE";
|
||||||
if( stmt.getLanguage() != null && stmt.getLanguage().trim().length() > 0){
|
if( stmt.getLanguage() != null && stmt.getLanguage().trim().length() > 0){
|
||||||
language = stmt.getLanguage();
|
langOrDatatype = stmt.getLanguage();
|
||||||
}
|
}else{
|
||||||
|
if( stmt.getDatatypeURI() != null && stmt.getDatatypeURI().trim().length() > 0){
|
||||||
|
langOrDatatype = stmt.getDatatypeURI();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
String datatype = "9876NONE";
|
String hashMe = langOrDatatype + "_" + stmt.getIndividualURI() + "_" + stmt.getDatapropURI() + "_" + stmt.getData();
|
||||||
if( stmt.getDatatypeURI() != null && stmt.getDatatypeURI().trim().length() > 0){
|
|
||||||
datatype = stmt.getDatatypeURI();
|
|
||||||
}
|
|
||||||
|
|
||||||
String hashMe = language + "_" + datatype + "_" + stmt.getIndividualURI() + "_" + stmt.getDatapropURI() + "_" + stmt.getData();
|
|
||||||
if( log.isDebugEnabled() )
|
if( log.isDebugEnabled() )
|
||||||
log.debug("got hash " + hashMe.hashCode() + " for String '" + hashMe + "'");
|
log.debug("got hash " + hashMe.hashCode() + " for String '" + hashMe + "'");
|
||||||
return hashMe.hashCode();
|
return hashMe.hashCode();
|
||||||
|
|
|
@ -1,182 +0,0 @@
|
||||||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
|
||||||
|
|
||||||
package edu.cornell.mannlib.vitro.webapp.rdfservice.adapters;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.Reader;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.jena.graph.GraphUtil;
|
|
||||||
import org.apache.jena.graph.Triple;
|
|
||||||
import org.apache.jena.rdf.model.Model;
|
|
||||||
import org.apache.jena.rdf.model.ModelFactory;
|
|
||||||
import org.apache.jena.rdf.model.Property;
|
|
||||||
import org.apache.jena.rdf.model.RDFReaderF;
|
|
||||||
import org.apache.jena.rdf.model.Resource;
|
|
||||||
import org.apache.jena.rdf.model.Statement;
|
|
||||||
import org.apache.jena.rdf.model.StmtIterator;
|
|
||||||
import org.apache.jena.rdf.model.impl.RDFReaderFImpl;
|
|
||||||
import org.apache.jena.rdf.model.impl.StatementImpl;
|
|
||||||
import org.apache.jena.shared.WrappedIOException;
|
|
||||||
import org.apache.jena.util.iterator.Map1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A model that still handles bulk updates in the old-fashioned way: with a
|
|
||||||
* BulkUpdateHandler.
|
|
||||||
*/
|
|
||||||
public class BulkUpdatingModel extends AbstractModelDecorator {
|
|
||||||
private static final RDFReaderF readerFactory = new RDFReaderFImpl();
|
|
||||||
|
|
||||||
public BulkUpdatingModel(Model inner) {
|
|
||||||
super(inner);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model add(StmtIterator iter) {
|
|
||||||
try {
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.add(this.getGraph(), asTriples(iter));
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
} finally {
|
|
||||||
iter.close();
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(String url) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader().read(m, url);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(Reader reader, String base) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader().read(m, reader, base);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(InputStream reader, String base) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader().read(m, reader, base);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(String url, String lang) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader(lang).read(m, url);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Model read(String url, String base, String lang) {
|
|
||||||
try {
|
|
||||||
InputStream is = new URL(url).openStream();
|
|
||||||
try {
|
|
||||||
read(is, base, lang);
|
|
||||||
} finally {
|
|
||||||
if (null != is) {
|
|
||||||
is.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new WrappedIOException(e);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(Reader reader, String base, String lang) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader(lang).read(m, reader, base);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(InputStream reader, String base, String lang) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader(lang).read(m, reader, base);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model remove(StmtIterator iter) {
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.delete(this.getGraph(), asTriples(iter));
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model add(Statement[] statements) {
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.add(this.getGraph(), StatementImpl.asTriples(statements));
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Model add(List<Statement> statements) {
|
|
||||||
add(statements.toArray(new Statement[statements.size()]));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model remove(Statement[] statements) {
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.delete(this.getGraph(), StatementImpl.asTriples(statements));
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Model remove(List<Statement> statements) {
|
|
||||||
remove(statements.toArray(new Statement[statements.size()]));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Iterator<Triple> asTriples(StmtIterator it) {
|
|
||||||
return it.mapWith(mapAsTriple);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map1<Statement, Triple> mapAsTriple = new Map1<Statement, Triple>() {
|
|
||||||
@Override
|
|
||||||
public Triple apply(Statement statement) {
|
|
||||||
return statement.asTriple();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,193 +0,0 @@
|
||||||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
|
||||||
|
|
||||||
package edu.cornell.mannlib.vitro.webapp.rdfservice.adapters;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.io.Reader;
|
|
||||||
import java.io.Writer;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
|
|
||||||
import org.apache.jena.graph.Graph;
|
|
||||||
import org.apache.jena.graph.GraphUtil;
|
|
||||||
import org.apache.jena.graph.Triple;
|
|
||||||
import org.apache.jena.graph.impl.GraphWithPerform;
|
|
||||||
import org.apache.jena.ontology.OntModel;
|
|
||||||
import org.apache.jena.rdf.model.Model;
|
|
||||||
import org.apache.jena.rdf.model.ModelFactory;
|
|
||||||
import org.apache.jena.rdf.model.Property;
|
|
||||||
import org.apache.jena.rdf.model.RDFReaderF;
|
|
||||||
import org.apache.jena.rdf.model.Resource;
|
|
||||||
import org.apache.jena.rdf.model.Statement;
|
|
||||||
import org.apache.jena.rdf.model.StmtIterator;
|
|
||||||
import org.apache.jena.rdf.model.impl.RDFReaderFImpl;
|
|
||||||
import org.apache.jena.rdf.model.impl.StatementImpl;
|
|
||||||
import org.apache.jena.shared.WrappedIOException;
|
|
||||||
import org.apache.jena.util.iterator.Map1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A model that still handles bulk updates in the old-fashioned way: with a
|
|
||||||
* BulkUpdateHandler.
|
|
||||||
*/
|
|
||||||
public class BulkUpdatingOntModel extends AbstractOntModelDecorator {
|
|
||||||
private static final Log log = LogFactory
|
|
||||||
.getLog(BulkUpdatingOntModel.class);
|
|
||||||
|
|
||||||
private static final RDFReaderF readerFactory = new RDFReaderFImpl();
|
|
||||||
|
|
||||||
public BulkUpdatingOntModel(OntModel inner) {
|
|
||||||
super(inner);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model add(StmtIterator iter) {
|
|
||||||
try {
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.add(this.getGraph(), asTriples(iter));
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
} finally {
|
|
||||||
iter.close();
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(String url) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader().read(m, url);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(Reader reader, String base) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader().read(m, reader, base);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(InputStream reader, String base) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader().read(m, reader, base);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(String url, String lang) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader(lang).read(m, url);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Model read(String url, String base, String lang) {
|
|
||||||
try {
|
|
||||||
InputStream is = new URL(url).openStream();
|
|
||||||
try {
|
|
||||||
read(is, base, lang);
|
|
||||||
} finally {
|
|
||||||
if (null != is) {
|
|
||||||
is.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new WrappedIOException(e);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(Reader reader, String base, String lang) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader(lang).read(m, reader, base);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model read(InputStream reader, String base, String lang) {
|
|
||||||
Model m = ModelFactory.createDefaultModel();
|
|
||||||
readerFactory.getReader(lang).read(m, reader, base);
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.addInto(this.getGraph(), m.getGraph());
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model remove(StmtIterator iter) {
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.delete(this.getGraph(), asTriples(iter));
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model add(Statement[] statements) {
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.add(this.getGraph(), StatementImpl.asTriples(statements));
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Model add(List<Statement> statements) {
|
|
||||||
add(statements.toArray(new Statement[statements.size()]));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
public Model remove(Statement[] statements) {
|
|
||||||
this.getGraph().getTransactionHandler().begin();
|
|
||||||
GraphUtil.delete(this.getGraph(), StatementImpl.asTriples(statements));
|
|
||||||
this.getGraph().getTransactionHandler().commit();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Model remove(List<Statement> statements) {
|
|
||||||
remove(statements.toArray(new Statement[statements.size()]));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Iterator<Triple> asTriples(StmtIterator it) {
|
|
||||||
return it.mapWith(mapAsTriple);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map1<Statement, Triple> mapAsTriple = new Map1<Statement, Triple>() {
|
|
||||||
@Override
|
|
||||||
public Triple apply(Statement statement) {
|
|
||||||
return statement.asTriple();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -35,7 +35,7 @@ public class VitroModelFactory {
|
||||||
Graph graph = model.getGraph();
|
Graph graph = model.getGraph();
|
||||||
Model bareModel = new ModelCom(graph);
|
Model bareModel = new ModelCom(graph);
|
||||||
OntModel ontModel = new OntModelImpl(OWL_MEM, bareModel);
|
OntModel ontModel = new OntModelImpl(OWL_MEM, bareModel);
|
||||||
return new BulkUpdatingOntModel(ontModel);
|
return ontModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Model createUnion(Model baseModel, Model plusModel) {
|
public static Model createUnion(Model baseModel, Model plusModel) {
|
||||||
|
@ -45,7 +45,7 @@ public class VitroModelFactory {
|
||||||
plusGraph);
|
plusGraph);
|
||||||
|
|
||||||
Model unionModel = ModelFactory.createModelForGraph(unionGraph);
|
Model unionModel = ModelFactory.createModelForGraph(unionGraph);
|
||||||
return new BulkUpdatingModel(unionModel);
|
return unionModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OntModel createUnion(OntModel baseModel, OntModel plusModel) {
|
public static OntModel createUnion(OntModel baseModel, OntModel plusModel) {
|
||||||
|
@ -57,11 +57,11 @@ public class VitroModelFactory {
|
||||||
Model unionModel = ModelFactory.createModelForGraph(unionGraph);
|
Model unionModel = ModelFactory.createModelForGraph(unionGraph);
|
||||||
OntModel unionOntModel = ModelFactory.createOntologyModel(OWL_MEM,
|
OntModel unionOntModel = ModelFactory.createOntologyModel(OWL_MEM,
|
||||||
unionModel);
|
unionModel);
|
||||||
return new BulkUpdatingOntModel(unionOntModel);
|
return unionOntModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Model createModelForGraph(Graph g) {
|
public static Model createModelForGraph(Graph g) {
|
||||||
return new BulkUpdatingModel(ModelFactory.createModelForGraph(g));
|
return ModelFactory.createModelForGraph(g);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class BulkUpdatingUnion extends Union {
|
private static class BulkUpdatingUnion extends Union {
|
||||||
|
|
|
@ -9,6 +9,7 @@ import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
import org.apache.jena.datatypes.RDFDatatype;
|
import org.apache.jena.datatypes.RDFDatatype;
|
||||||
|
import org.apache.jena.datatypes.xsd.impl.RDFLangString;
|
||||||
import org.apache.jena.rdf.model.Literal;
|
import org.apache.jena.rdf.model.Literal;
|
||||||
import org.apache.jena.rdf.model.Property;
|
import org.apache.jena.rdf.model.Property;
|
||||||
import org.apache.jena.rdf.model.RDFNode;
|
import org.apache.jena.rdf.model.RDFNode;
|
||||||
|
@ -68,7 +69,7 @@ public enum PropertyType {
|
||||||
if (object.isLiteral()) {
|
if (object.isLiteral()) {
|
||||||
Literal literal = object.asLiteral();
|
Literal literal = object.asLiteral();
|
||||||
RDFDatatype datatype = literal.getDatatype();
|
RDFDatatype datatype = literal.getDatatype();
|
||||||
if (datatype == null || datatype.equals(XSDstring)) {
|
if (datatype == null || datatype.equals(XSDstring) || datatype.equals(RDFLangString.rdfLangString)) {
|
||||||
return STRING;
|
return STRING;
|
||||||
}
|
}
|
||||||
if (datatype.equals(XSDfloat)) {
|
if (datatype.equals(XSDfloat)) {
|
||||||
|
|
|
@ -244,8 +244,8 @@ public class VitroModelFactoryTest extends AbstractTestClass {
|
||||||
public void addMultipleToVitroOntModel() {
|
public void addMultipleToVitroOntModel() {
|
||||||
omg = new VitroOntModelGroup();
|
omg = new VitroOntModelGroup();
|
||||||
omg.om.add(MULTIPLE_STATEMENTS);
|
omg.om.add(MULTIPLE_STATEMENTS);
|
||||||
new MethodCalls().add(omg.g, "performAdd", "performAdd")
|
new MethodCalls().add(omg.g, "add", "add")
|
||||||
.add(omg.l, "addedStatements")
|
.add(omg.l, "addedStatement", "addedStatement")
|
||||||
.add(omg.ol, "addedStatements").test();
|
.add(omg.ol, "addedStatements").test();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,8 +346,8 @@ public class VitroModelFactoryTest extends AbstractTestClass {
|
||||||
public void addMultipleToVitroUnion() {
|
public void addMultipleToVitroUnion() {
|
||||||
umg = new VitroUnionModelGroup();
|
umg = new VitroUnionModelGroup();
|
||||||
umg.m.add(MULTIPLE_STATEMENTS);
|
umg.m.add(MULTIPLE_STATEMENTS);
|
||||||
new MethodCalls().add(umg.base.g, "performAdd", "performAdd")
|
new MethodCalls().add(umg.base.g, "add", "add")
|
||||||
.add(umg.base.l, "addedStatements")
|
.add(umg.base.l, "addedStatement", "addedStatement")
|
||||||
.add(umg.plus.g).add(umg.plus.l)
|
.add(umg.plus.g).add(umg.plus.l)
|
||||||
.add(umg.l, "addedStatements").test();
|
.add(umg.l, "addedStatements").test();
|
||||||
}
|
}
|
||||||
|
@ -452,8 +452,8 @@ public class VitroModelFactoryTest extends AbstractTestClass {
|
||||||
public void addMultipleToVitroOntUnion() {
|
public void addMultipleToVitroOntUnion() {
|
||||||
uomg = new VitroUnionOntModelGroup();
|
uomg = new VitroUnionOntModelGroup();
|
||||||
uomg.om.add(MULTIPLE_STATEMENTS);
|
uomg.om.add(MULTIPLE_STATEMENTS);
|
||||||
new MethodCalls().add(uomg.base.g, "performAdd", "performAdd")
|
new MethodCalls().add(uomg.base.g, "add", "add")
|
||||||
.add(uomg.base.l, "addedStatements")
|
.add(uomg.base.l, "addedStatement", "addedStatement")
|
||||||
.add(uomg.plus.g).add(uomg.plus.l)
|
.add(uomg.plus.g).add(uomg.plus.l)
|
||||||
.add(uomg.l, "addedStatements").test();
|
.add(uomg.l, "addedStatements").test();
|
||||||
}
|
}
|
||||||
|
@ -567,9 +567,9 @@ public class VitroModelFactoryTest extends AbstractTestClass {
|
||||||
omumg = new VitroOntModelUnionModelGroup();
|
omumg = new VitroOntModelUnionModelGroup();
|
||||||
omumg.om.add(MULTIPLE_STATEMENTS);
|
omumg.om.add(MULTIPLE_STATEMENTS);
|
||||||
new MethodCalls().add(omumg.om, "add").add(omumg.ol, "addedStatements")
|
new MethodCalls().add(omumg.om, "add").add(omumg.ol, "addedStatements")
|
||||||
.add(omumg.union.base.g, "performAdd", "performAdd")
|
.add(omumg.union.base.g, "add", "add")
|
||||||
.add(omumg.union.base.m)
|
.add(omumg.union.base.m)
|
||||||
.add(omumg.union.base.l, "addedStatements")
|
.add(omumg.union.base.l, "addedStatement", "addedStatement")
|
||||||
.add(omumg.union.plus.g)
|
.add(omumg.union.plus.g)
|
||||||
.add(omumg.union.plus.m).add(omumg.union.plus.l).test();
|
.add(omumg.union.plus.m).add(omumg.union.plus.l).test();
|
||||||
}
|
}
|
||||||
|
|
12
dependencies/pom.xml
vendored
12
dependencies/pom.xml
vendored
|
@ -65,18 +65,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<!-- 0.3 requires code changes -->
|
|
||||||
<groupId>com.github.jsonld-java</groupId>
|
|
||||||
<artifactId>jsonld-java</artifactId>
|
|
||||||
<version>0.2</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<!-- 0.3 requires code changes -->
|
|
||||||
<groupId>com.github.jsonld-java</groupId>
|
|
||||||
<artifactId>jsonld-java-jena</artifactId>
|
|
||||||
<version>0.2</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ibm.icu</groupId>
|
<groupId>com.ibm.icu</groupId>
|
||||||
<artifactId>icu4j</artifactId>
|
<artifactId>icu4j</artifactId>
|
||||||
|
|
Loading…
Add table
Reference in a new issue