before any api publishing all named graph related to previous aggregation for that api are dropped

This commit is contained in:
Enrico Ottonello 2020-01-15 12:30:18 +01:00
parent 8530e488d0
commit 15cc87456c
1 changed files with 13 additions and 1 deletions

View File

@ -18,6 +18,7 @@ import org.eclipse.rdf4j.repository.Repository;
import org.eclipse.rdf4j.repository.RepositoryConnection; import org.eclipse.rdf4j.repository.RepositoryConnection;
import org.eclipse.rdf4j.repository.RepositoryResult; import org.eclipse.rdf4j.repository.RepositoryResult;
import org.eclipse.rdf4j.repository.manager.RemoteRepositoryManager; import org.eclipse.rdf4j.repository.manager.RemoteRepositoryManager;
import org.eclipse.rdf4j.repository.util.Repositories;
import org.eclipse.rdf4j.rio.RDFFormat; import org.eclipse.rdf4j.rio.RDFFormat;
import eu.dnetlib.ariadneplus.publisher.AriadnePlusPublisherException; import eu.dnetlib.ariadneplus.publisher.AriadnePlusPublisherException;
@ -250,17 +251,24 @@ public class GraphDBClient {
IRI datasourceApisGraph = factory.createIRI(getGraphDBBaseURI(), "datasourceApis"); IRI datasourceApisGraph = factory.createIRI(getGraphDBBaseURI(), "datasourceApis");
Statement numPartitionsStmt = null; Statement numPartitionsStmt = null;
try (RepositoryConnection con = repository.getConnection()) { try (RepositoryConnection con = repository.getConnection()) {
int numPartitions = 0;
log.debug("Removing datasourceApi partition info s:" + rApi.toString() + " p:" + HAS_NUM_PARTITIONS + " g:" + datasourceApisGraph ); log.debug("Removing datasourceApi partition info s:" + rApi.toString() + " p:" + HAS_NUM_PARTITIONS + " g:" + datasourceApisGraph );
RepositoryResult<Statement> numPartitionsStmts = con.getStatements(rApi, HAS_NUM_PARTITIONS, null, false, datasourceApisGraph); RepositoryResult<Statement> numPartitionsStmts = con.getStatements(rApi, HAS_NUM_PARTITIONS, null, false, datasourceApisGraph);
if (numPartitionsStmts.hasNext()) { if (numPartitionsStmts.hasNext()) {
con.begin(); con.begin();
numPartitionsStmt = numPartitionsStmts.next(); numPartitionsStmt = numPartitionsStmts.next();
int numPartitions = Integer.parseInt(numPartitionsStmt.getObject().stringValue()); numPartitions = Integer.parseInt(numPartitionsStmt.getObject().stringValue());
log.debug(" old partitions count: " + numPartitions); log.debug(" old partitions count: " + numPartitions);
con.remove(rApi, HAS_NUM_PARTITIONS, factory.createLiteral(numPartitions), datasourceApisGraph); con.remove(rApi, HAS_NUM_PARTITIONS, factory.createLiteral(numPartitions), datasourceApisGraph);
con.commit(); con.commit();
con.close(); con.close();
} }
for (int numPartition=1; numPartition<=numPartitions; numPartition++) {
String namedGraph = String.format("api_________::ariadne_plus::ads::1_partition_%d", numPartition);
IRI graph = factory.createIRI(namedGraph);
log.debug("removing namedGraph: " + graph);
Repositories.consume(repository, conn -> conn.clear(graph));
}
} }
catch (RDF4JException e) { catch (RDF4JException e) {
log.error("error removing datasourceApi partition info ", e); log.error("error removing datasourceApi partition info ", e);
@ -276,6 +284,10 @@ public class GraphDBClient {
} }
} }
//CLEAR GRAPH <https://ariadne-infrastructure.eu/datasourceApis>
private String getRecordURI(final String objIdentifier, final String datasourceApi) { private String getRecordURI(final String objIdentifier, final String datasourceApi) {
return "/" + datasourceApi + "/" + objIdentifier; return "/" + datasourceApi + "/" + objIdentifier;
} }