Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ protected BasicDBObject prepareSearchProvenance() {
private void updateScientificObjectsWithExperimentsScientificObjects() {
ScientificObjectRdf4jDAO agronomicalObjectDao = new ScientificObjectRdf4jDAO();

ArrayList<ScientificObject> scientificObjectsSearched = agronomicalObjectDao.find(null, null, null, null, experiment, null);
ArrayList<ScientificObject> scientificObjectsSearched = agronomicalObjectDao.find(null, null, null, null, experiment, null, true);

scientificObjectsSearched.forEach((scientificObject) -> {
this.scientificObjects.add(scientificObject.getUri());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -606,8 +606,9 @@ public ArrayList<Property> findScientificObjectProperties(String uri) {
* @param alias
* @return scientific objects list, result of the user query, empty if no result
*/
public ArrayList<ScientificObject> find(Integer page, Integer pageSize, String uri, String rdfType, String experiment, String alias) {
public ArrayList<ScientificObject> find(Integer page, Integer pageSize, String uri, String rdfType, String experiment, String alias, Boolean withProperties) {
try {

SPARQLQueryBuilder sparqlQuery = prepareSearchQuery(false, page, pageSize, uri, rdfType, experiment, alias);
//SILEX:test
//For pool connection issues
Expand All @@ -618,7 +619,7 @@ public ArrayList<ScientificObject> find(Integer page, Integer pageSize, String u

TupleQuery tupleQuery = getConnection().prepareTupleQuery(QueryLanguage.SPARQL, sparqlQuery.toString());
Map<String, ScientificObject> foundedScientificObjects = new HashMap<>();

try (TupleQueryResult result = tupleQuery.evaluate()) {
while (result.hasNext()) {
BindingSet bindingSet = result.next();
Expand Down Expand Up @@ -652,29 +653,31 @@ public ArrayList<ScientificObject> find(Integer page, Integer pageSize, String u
scientificObject.setRdfType(bindingSet.getValue(RDF_TYPE).stringValue());
}
}

//Get scientific object properties
scientificObject.setProperties(findScientificObjectProperties(actualUri));
if(withProperties){
//Get scientific object properties
scientificObject.setProperties(findScientificObjectProperties(actualUri));
}

foundedScientificObjects.put(actualUri, scientificObject);
}
}

ArrayList<String> scientificObjectsUris = new ArrayList<>();
ArrayList<ScientificObject> scientificObjects = new ArrayList<>();
foundedScientificObjects.entrySet().forEach((entry) -> {
scientificObjects.add(entry.getValue());
scientificObjectsUris.add(entry.getKey());
});

//Get geometries in relational database
//Get geometries in relational database
ScientificObjectSQLDAO scientificObjectDao = new ScientificObjectSQLDAO();
HashMap<String, String> geometries = scientificObjectDao.getGeometries(scientificObjectsUris);

scientificObjects.forEach((scientificObject) -> {
scientificObject.setGeometry(geometries.get(scientificObject.getUri()));
});


return scientificObjects;
} catch (SQLException ex) {
java.util.logging.Logger.getLogger(ScientificObjectRdf4jDAO.class.getName()).log(Level.SEVERE, null, ex);
Expand Down Expand Up @@ -721,7 +724,20 @@ protected SPARQLQueryBuilder prepareSearchQuery(boolean count, Integer page, Int
sparqlQuery.appendAndFilter("REGEX ( str(?" + URI + "),\".*" + uri + ".*\",\"i\")");
}

//Label filter

//Rdf type filter
if (rdfType != null) {
sparqlQuery.appendTriplet("?" + URI, Rdf.RELATION_TYPE.toString(), rdfType, null);
} else {
sparqlQuery.appendTriplet("?" + URI, Rdf.RELATION_TYPE.toString(), "?" + RDF_TYPE, null);
sparqlQuery.appendTriplet(
"?" + RDF_TYPE,
"<" + Rdfs.RELATION_SUBCLASS_OF.toString() + ">*",
Oeso.CONCEPT_SCIENTIFIC_OBJECT.toString(), null);
sparqlQuery.appendSelect(" ?" + RDF_TYPE);
}

//Label filter
sparqlQuery.appendSelect("?" + ALIAS);
if (alias == null && !count) {
sparqlQuery.beginBodyOptional();
Expand All @@ -740,17 +756,6 @@ protected SPARQLQueryBuilder prepareSearchQuery(boolean count, Integer page, Int
sparqlQuery.appendOptional("?" + URI + " <" + Oeso.RELATION_PARTICIPATES_IN.toString() + "> " + "?" + EXPERIMENT + " . ");
}

//Rdf type filter
if (rdfType != null) {
sparqlQuery.appendTriplet("?" + URI, Rdf.RELATION_TYPE.toString(), rdfType, null);
} else {
sparqlQuery.appendSelect(" ?" + RDF_TYPE);
sparqlQuery.appendTriplet("?" + URI, Rdf.RELATION_TYPE.toString(), "?" + RDF_TYPE, null);
sparqlQuery.appendTriplet(
"?" + RDF_TYPE,
"<" + Rdfs.RELATION_SUBCLASS_OF.toString() + ">*",
Oeso.CONCEPT_SCIENTIFIC_OBJECT.toString(), null);
}

if (page != null && pageSize != null) {
sparqlQuery.appendLimit(pageSize);
Expand Down Expand Up @@ -996,7 +1001,7 @@ public void delete(List<ScientificObject> objects) throws DAOPersistenceExceptio
* null if this scientific object does not exist.
*/
public ScientificObject getScientificObjectInContext(String uri, String context) {
ArrayList<ScientificObject> scientificObjects = find(null, null, uri, null, context, null);
ArrayList<ScientificObject> scientificObjects = find(null, null, uri, null, context, null,true);
if (!scientificObjects.isEmpty()) {
return scientificObjects.get(0);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -253,10 +253,7 @@ public HashMap<String, String> getGeometries(ArrayList<String> scientificObjects
query.appendSelect("ST_AsGeoJSON(ST_Transform(" + GEOMETRY + ", 4326)), ao." + URI);
query.appendFrom(table, tableAlias);

for (String scientificObjectURI : scientificObjectsURIs) {
query.appendORWhereConditionIfNeeded(URI, scientificObjectURI, "=", null, tableAlias);
}

query.appendINConditions(URI, scientificObjectsURIs, tableAlias);
LOGGER.debug(getTraceabilityLogs() + " quert : " + query.toString());

ResultSet queryResult = statement.executeQuery(query.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,11 +255,13 @@ public Response getScientificObjectsBySearch(
@ApiParam(value = "Search by URI", example = DocumentationAnnotation.EXAMPLE_SCIENTIFIC_OBJECT_URI) @QueryParam("uri") String uri,
@ApiParam(value = "Search by experiment URI", example = DocumentationAnnotation.EXAMPLE_EXPERIMENT_URI) @QueryParam("experiment") @URL String experimentURI,
@ApiParam(value = "Search by alias", example = DocumentationAnnotation.EXAMPLE_EXPERIMENT_ALIAS) @QueryParam("alias") String alias,
@ApiParam(value = "Search by rdfType", example = DocumentationAnnotation.EXAMPLE_SCIENTIFIC_OBJECT_TYPE) @QueryParam("rdfType") @URL String rdfType
@ApiParam(value = "Search by rdfType", example = DocumentationAnnotation.EXAMPLE_SCIENTIFIC_OBJECT_TYPE) @QueryParam("rdfType") @URL String rdfType,
@ApiParam(value = "Retreive detailled properties", example = "true") @DefaultValue("true") @QueryParam("withProperties") Boolean withProperties

) {
ArrayList<ScientificObjectDTO> scientificObjectsToReturn = new ArrayList<>();
ArrayList<ScientificObject> scientificObjects = new ArrayList<>();

ArrayList<Status> statusList = new ArrayList<>();
ResultForm<ScientificObjectDTO> getResponse;

Expand All @@ -271,11 +273,13 @@ public Response getScientificObjectsBySearch(
//1. Get count
Integer totalCount = scientificObjectDaoSesame.count(uri, rdfType, experimentURI, alias);


// If scientific objects found
if(totalCount > 0){
//2. Get list of scientific objects
scientificObjects = scientificObjectDaoSesame.find(page, pageSize, uri, rdfType, experimentURI, alias);
scientificObjects = scientificObjectDaoSesame.find(page, pageSize, uri, rdfType, experimentURI, alias, withProperties);
}


if (scientificObjects == null) { //Request failure
getResponse = new ResultForm<>(0, 0, scientificObjectsToReturn, true);
Expand All @@ -284,11 +288,13 @@ public Response getScientificObjectsBySearch(
getResponse = new ResultForm<>(0, 0, scientificObjectsToReturn, true);
return noResultFound(getResponse, statusList);
} else {


//Convert all scientific objects to DTO
scientificObjects.forEach((scientificObject) -> {
scientificObjectsToReturn.add(new ScientificObjectDTO(scientificObject));
});

getResponse = new ResultForm<>(scientificObjectDaoSesame.getPageSize(), scientificObjectDaoSesame.getPage(), scientificObjectsToReturn, true, totalCount);
if (getResponse.getResult().dataSize() == 0) {
return noResultFound(getResponse, statusList);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,7 @@ public Response getObservationUnits (
rdfType = Oeso.NAMESPACE + observationLevel;
}

ArrayList<ScientificObject> scientificObjects = scientificObjectsDAO.find(null, null, null, rdfType, studyDbId, null);
ArrayList<ScientificObject> scientificObjects = scientificObjectsDAO.find(null, null, null, rdfType, studyDbId, null, true);

ExperimentSQLDAO experimentDAO = new ExperimentSQLDAO();
experimentDAO.uri = studyDbId;
Expand Down Expand Up @@ -735,7 +735,7 @@ private ArrayList<BrapiObservationDTO> getObservationsList(StudySQLDAO studyDAO,

ArrayList<BrapiObservationDTO> observations = new ArrayList();
ScientificObjectRdf4jDAO objectDAO = new ScientificObjectRdf4jDAO();
ArrayList<ScientificObject> objectsList = objectDAO.find(null, null, null, null, studyDAO.studyDbIds.get(0), null);
ArrayList<ScientificObject> objectsList = objectDAO.find(null, null, null, null, studyDAO.studyDbIds.get(0), null, true);
ArrayList<Variable> variablesList = new ArrayList();

if (variableURIs.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,7 @@ private ArrayList<BrapiObservationDTO> getObservationsList(StudySQLDAO studyDAO,

ArrayList<BrapiObservationDTO> observations = new ArrayList();
ScientificObjectRdf4jDAO objectDAO = new ScientificObjectRdf4jDAO();
ArrayList<ScientificObject> objectsList = objectDAO.find(null, null, null, null, studyDAO.studyDbIds.get(0), null);
ArrayList<ScientificObject> objectsList = objectDAO.find(null, null, null, null, studyDAO.studyDbIds.get(0), null, true);
ArrayList<Variable> variablesList = new ArrayList();

if (variableURIs.isEmpty()) {
Expand Down