From f62016cb93fd9f7108a3975afb6117ef6e17de52 Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Mon, 5 Aug 2024 13:45:06 +0100 Subject: [PATCH 01/14] Added fields HAS_DIRECT_PARENTS, HAS_DIRECT_CHILDREN, HAS_HIERARCHICAL_PARENTS, HAS_HIERARCHICAL_CHILDREN, IMPORTED, IS_DEFNING_ONTOLOGY. --- .../java/uk/ac/ebi/ols/shared/DefinedFields.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java b/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java index fda3ce5d..dd5042b4 100644 --- a/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java +++ b/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java @@ -1,9 +1,21 @@ package uk.ac.ebi.ols.shared; public enum DefinedFields { - IS_OBSOLETE("isObsolete", "isObsolete", "Set to true if this entity is obsolete, otherwise is set to false."), + IS_OBSOLETE("isObsolete", "isObsolete", + "Set to true if this entity is obsolete, otherwise is set to false."), DEFINITION("definition", "","The definition of this entity."), - DIRECT_PARENT("directParent", "","The list of direct parents for this entity."); + HAS_DIRECT_PARENTS("hasDirectParents", "", + "Indicates whether this class has direct parents or not."), + HAS_DIRECT_CHILDREN("hasDirectChildren", "has_children", + "Whether this class has direct children or not."), + HAS_HIERARCHICAL_PARENTS("hasHierarchicalParents", "", + "Whether this class has hierarchical parents or not."), + HAS_HIERARCHICAL_CHILDREN("hasHierarchicalChildren", "", + "Whether this class has hierarchical children or not."), + IMPORTED("imported", "", + "Whether this entity is imported or not."), + IS_DEFNING_ONTOLOGY("isDefiningOntology", + "is_defining_ontology","Whether this entity is defined in this ontology or not."); private final String text; private final String ols3Text; From e85b44fc8d061ed7c32cb139d2bbac1c6c03100e Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Mon, 5 Aug 2024 14:35:29 +0100 Subject: [PATCH 02/14] Imported field is now boolean and uses defined fields. --- .../ebi/spot/ols/controller/api/v1/V1SearchController.java | 2 +- .../src/main/java/uk/ac/ebi/rdf2json/OntologyGraph.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java index 355b2a93..2e16cfd0 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java @@ -140,7 +140,7 @@ public void search( } if (isLocal) { - solrQuery.addFilterQuery("imported:false"); + solrQuery.addFilterQuery(IMPORTED.getText() + ":false"); } if (isLeaf) { diff --git a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/OntologyGraph.java b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/OntologyGraph.java index ac8f47b1..8d1c1f23 100644 --- a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/OntologyGraph.java +++ b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/OntologyGraph.java @@ -24,6 +24,7 @@ import java.util.*; import java.util.stream.Collectors; import static uk.ac.ebi.rdf2json.OntologyNode.NodeType.*; +import static uk.ac.ebi.ols.shared.DefinedFields.*; public class OntologyGraph implements StreamRDF { @@ -146,7 +147,7 @@ private String urlToFilename(String url) { for(String id : nodes.keySet()) { OntologyNode c = nodes.get(id); if(c.uri != null) { - c.properties.addProperty("imported", PropertyValueLiteral.fromString("false")); + c.properties.addProperty(IMPORTED.getText(), PropertyValueLiteral.fromBoolean("false")); } } @@ -163,8 +164,8 @@ private String urlToFilename(String url) { for(String id : nodes.keySet()) { OntologyNode c = nodes.get(id); if(c.uri != null) { - if(!c.properties.hasProperty("imported")) { - c.properties.addProperty("imported", PropertyValueLiteral.fromString("true")); + if(!c.properties.hasProperty(IMPORTED.getText())) { + c.properties.addProperty(IMPORTED.getText(), PropertyValueLiteral.fromBoolean("true")); } } } From c7fb6304c68725c867d02d66cb44105117586008 Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Mon, 5 Aug 2024 15:32:49 +0100 Subject: [PATCH 03/14] isDefiningOntology uses defined fields. --- .../controller/api/v1/V1SearchController.java | 18 +++++++++++------- .../controller/api/v1/V1SelectController.java | 11 +++++++---- .../repository/v1/V1IndividualRepository.java | 9 +++++---- .../repository/v1/V1PropertyRepository.java | 8 ++++---- .../ols/repository/v1/V1TermRepository.java | 8 ++++---- .../repository/v1/mappers/V1TermMapper.java | 2 +- .../v2/helpers/V2SearchFieldsParser.java | 3 ++- dataload/extras/json2sssom/pom.xml | 5 +++++ .../json2sssom/src/main/java/JSON2SSSOM.java | 4 +++- 9 files changed, 42 insertions(+), 26 deletions(-) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java index 2e16cfd0..2a4b083f 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java @@ -92,8 +92,10 @@ public void search( String[] fields = {"label_s", "synonym_s", "short_form_s", "obo_id_s", "iri_s", "annotations_trimmed"}; solrQuery.setQuery( "((" + - createUnionQuery(query.toLowerCase(), SolrFieldMapper.mapFieldsList(List.of(fields)).toArray(new String[0]), true) - + ") AND (isDefiningOntology:\"true\"^100 OR isDefiningOntology:false^0))" + createUnionQuery(query.toLowerCase(), SolrFieldMapper.mapFieldsList(List.of(fields)) + .toArray(new String[0]), true) + + ") AND ("+IS_DEFNING_ONTOLOGY.getText() + ":\"true\"^100 OR " + + IS_DEFNING_ONTOLOGY.getText() + ":false^0))" ); } else { @@ -106,13 +108,14 @@ public void search( solrQuery.set("qf", String.join(" ", SolrFieldMapper.mapFieldsList(List.of(fields)))); solrQuery.set("bq", - "isDefiningOntology:\"true\"^100 " + + IS_DEFNING_ONTOLOGY.getText() + ":\"true\"^100 " + "lowercase_label:\"" + query.toLowerCase() + "\"^5 " + "lowercase_synonym:\"" + query.toLowerCase() + "\"^3"); } } else { if (exact) { - String[] fields = SolrFieldMapper.mapFieldsList(queryFields.stream().map(queryField -> queryField + "_s").collect(Collectors.toList())).toArray(new String[0]); + String[] fields = SolrFieldMapper.mapFieldsList(queryFields.stream().map(queryField -> queryField + "_s") + .collect(Collectors.toList())).toArray(new String[0]); solrQuery.setQuery(createUnionQuery(query.toLowerCase(), fields, true)); } else { @@ -207,7 +210,7 @@ public void search( "ontologyIri", "ontologyPreferredPrefix", "type", - "isDefiningOntology", + IS_DEFNING_ONTOLOGY.getText(), IS_OBSOLETE.getText()); /* * Fix: End @@ -259,8 +262,9 @@ public void search( if (fieldList.contains("description")) outDoc.put("description", JsonHelper.getStrings(json, "definition")); if (fieldList.contains("short_form")) outDoc.put("short_form", JsonHelper.getString(json, "shortForm")); if (fieldList.contains("obo_id")) outDoc.put("obo_id", JsonHelper.getString(json, "curie")); - if (fieldList.contains("is_defining_ontology")) outDoc.put("is_defining_ontology", - JsonHelper.getString(json, "isDefiningOntology") != null && JsonHelper.getString(json, "isDefiningOntology").equals("true")); + if (fieldList.contains(IS_DEFNING_ONTOLOGY.getOls3Text())) outDoc.put(IS_DEFNING_ONTOLOGY.getOls3Text(), + JsonHelper.getString(json, IS_DEFNING_ONTOLOGY.getText()) != null && + JsonHelper.getString(json, IS_DEFNING_ONTOLOGY.getText()).equals("true")); if (fieldList.contains("type")) { outDoc.put("type", JsonHelper.getType(json, "type")); } diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java index 0af18fed..bfeb2760 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java @@ -72,7 +72,9 @@ public void select( solrQuery.setQuery(query); solrQuery.set("defType", "edismax"); solrQuery.set("qf", "label whitespace_edge_label synonym whitespace_edge_synonym shortForm whitespace_edge_shortForm curie iri"); - solrQuery.set("bq", "type:ontology^10.0 isDefiningOntology:true^100.0 str_label:\"" + queryLc + "\"^1000 edge_label:\"" + queryLc + "\"^500 str_synonym:\"" + queryLc + "\" edge_synonym:\"" + queryLc + "\"^100"); + solrQuery.set("bq", "type:ontology^10.0 " + + IS_DEFNING_ONTOLOGY.getText() +":true^100.0 str_label:\"" + queryLc + "\"^1000 edge_label:\"" + + queryLc + "\"^500 str_synonym:\"" + queryLc + "\" edge_synonym:\"" + queryLc + "\"^100"); solrQuery.set("wt", "json"); solrQuery.setFields("_json", "id"); @@ -94,7 +96,7 @@ public void select( } if (isLocal) { - solrQuery.addFilterQuery("isDefiningOntology:true"); + solrQuery.addFilterQuery(IS_DEFNING_ONTOLOGY.getText() + ":true"); } if (childrenOf != null) { @@ -163,8 +165,9 @@ public void select( if (fieldList.contains("description")) outDoc.put("description", JsonHelper.getStrings(json, "definition")); if (fieldList.contains("short_form")) outDoc.put("short_form", JsonHelper.getString(json, "shortForm")); if (fieldList.contains("obo_id")) outDoc.put("obo_id", JsonHelper.getString(json, "curie")); - if (fieldList.contains("is_defining_ontology")) outDoc.put("is_defining_ontology", - JsonHelper.getString(json, "isDefiningOntology") != null && JsonHelper.getString(json, "isDefiningOntology").equals("true")); + if (fieldList.contains(IS_DEFNING_ONTOLOGY.getOls3Text())) outDoc.put(IS_DEFNING_ONTOLOGY.getOls3Text(), + JsonHelper.getString(json, IS_DEFNING_ONTOLOGY.getText()) != null && + JsonHelper.getString(json, IS_DEFNING_ONTOLOGY.getText()).equals("true")); if (fieldList.contains("type")) { outDoc.put("type", JsonHelper.getType(json, "type")); } diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1IndividualRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1IndividualRepository.java index fe883ebb..9de3a943 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1IndividualRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1IndividualRepository.java @@ -19,6 +19,7 @@ import uk.ac.ebi.spot.ols.repository.solr.OlsFacetedResultsPage; import uk.ac.ebi.spot.ols.repository.v1.mappers.V1IndividualMapper; import uk.ac.ebi.spot.ols.repository.v1.mappers.V1TermMapper; +import static uk.ac.ebi.ols.shared.DefinedFields.*; //@RepositoryRestResource(collectionResourceRel = "individuals", exported = false) @Component @@ -116,7 +117,7 @@ public OlsFacetedResultsPage findAllByIsDefiningOntology(String la OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("individual"), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); OlsFacetedResultsPage entities = solrClient.searchSolrPaginated(query, pageable); @@ -145,7 +146,7 @@ public OlsFacetedResultsPage findAllByIriAndIsDefiningOntology(Str OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("individual"), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("iri", List.of(iri), SearchType.WHOLE_FIELD); OlsFacetedResultsPage entities = solrClient.searchSolrPaginated(query, pageable); @@ -176,7 +177,7 @@ public OlsFacetedResultsPage findAllByShortFormAndIsDefiningOntolo OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("individual"), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("shortForm", List.of(shortForm), SearchType.WHOLE_FIELD); OlsFacetedResultsPage entities = solrClient.searchSolrPaginated(query, pageable); @@ -204,7 +205,7 @@ public OlsFacetedResultsPage findAllByOboIdAndIsDefiningOntology(S OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("individual"), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("oboId", List.of(oboId), SearchType.WHOLE_FIELD); OlsFacetedResultsPage entities = solrClient.searchSolrPaginated(query, pageable); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java index ed584561..94aedf64 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java @@ -119,7 +119,7 @@ public Page findAllByIsDefiningOntology(String lang, Pageable pageab OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("property"), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) .map(result -> V1PropertyMapper.mapProperty(result, lang)); @@ -141,7 +141,7 @@ public Page findAllByIriAndIsDefiningOntology(String iri, String lan OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("property"), SearchType.WHOLE_FIELD); query.addFilter("iri", List.of(iri), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) .map(result -> V1PropertyMapper.mapProperty(result, lang)); @@ -163,7 +163,7 @@ public Page findAllByShortFormAndIsDefiningOntology(String shortForm OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("property"), SearchType.WHOLE_FIELD); query.addFilter("shortForm", List.of(shortForm), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) .map(result -> V1PropertyMapper.mapProperty(result, lang)); @@ -186,7 +186,7 @@ public Page findAllByOboIdAndIsDefiningOntology(String oboId, String OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("property"), SearchType.WHOLE_FIELD); query.addFilter("oboId", List.of(oboId), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) .map(result -> V1PropertyMapper.mapProperty(result, lang)); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java index 819b735f..dd47e77d 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java @@ -215,7 +215,7 @@ public Page findAllByIsDefiningOntology(String lang, Pageable pageable) OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("class"), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) .map(result -> V1TermMapper.mapTerm(result, lang)); @@ -236,7 +236,7 @@ public Page findAllByIriAndIsDefiningOntology(String iri, String lang, P OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("class"), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("iri", List.of(iri), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) @@ -257,7 +257,7 @@ public Page findAllByShortFormAndIsDefiningOntology(String shortForm, St OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("class"), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("shortForm", List.of(shortForm), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) @@ -279,7 +279,7 @@ public Page findAllByOboIdAndIsDefiningOntology(String oboId, String lan OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("class"), SearchType.WHOLE_FIELD); - query.addFilter("isDefiningOntology", List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("curie", List.of(oboId), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java index 8e13a298..5cf3463e 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java @@ -45,7 +45,7 @@ public static V1Term mapTerm(JsonElement json, String lang) { term.oboSynonyms = V1OboSynonymExtractor.extractFromJson(localizedJson); term.isPreferredRoot = false; - term.isDefiningOntology = Boolean.parseBoolean(JsonHelper.getString(localizedJson, "isDefiningOntology")); + term.isDefiningOntology = Boolean.parseBoolean(JsonHelper.getString(localizedJson, IS_DEFNING_ONTOLOGY.getText())); term.hasChildren = Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasDirectChildren")) || Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasHierarchicalChildren")); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/helpers/V2SearchFieldsParser.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/helpers/V2SearchFieldsParser.java index 55a150bf..4c2a3157 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/helpers/V2SearchFieldsParser.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/helpers/V2SearchFieldsParser.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import static uk.ac.ebi.ols.shared.DefinedFields.*; public class V2SearchFieldsParser { @@ -32,7 +33,7 @@ public static void addBoostFieldsToQuery(OlsSolrQuery query, String boostFields) if(boostFields == null) { query.addBoostField("type", "ontology", 10, SearchType.WHOLE_FIELD); - query.addBoostField("isDefiningOntology", "true", 1000, SearchType.WHOLE_FIELD); + query.addBoostField(IS_DEFNING_ONTOLOGY.getText(), "true", 1000, SearchType.WHOLE_FIELD); query.addBoostField("label", query.getSearchText(), 1000, SearchType.WHOLE_FIELD); query.addBoostField("label", query.getSearchText(), 500, SearchType.EDGES); query.addBoostField("curie", query.getSearchText(), 500, SearchType.EDGES); diff --git a/dataload/extras/json2sssom/pom.xml b/dataload/extras/json2sssom/pom.xml index e75746de..871bc252 100644 --- a/dataload/extras/json2sssom/pom.xml +++ b/dataload/extras/json2sssom/pom.xml @@ -10,6 +10,11 @@ jar + + uk.ac.ebi.spot.ols + ols4-shared + 1.0.0-SNAPSHOT + org.apache.jena apache-jena-libs diff --git a/dataload/extras/json2sssom/src/main/java/JSON2SSSOM.java b/dataload/extras/json2sssom/src/main/java/JSON2SSSOM.java index 68086c36..c083cb1a 100644 --- a/dataload/extras/json2sssom/src/main/java/JSON2SSSOM.java +++ b/dataload/extras/json2sssom/src/main/java/JSON2SSSOM.java @@ -13,6 +13,8 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import static uk.ac.ebi.ols.shared.DefinedFields.*; + public class JSON2SSSOM { static Gson gson = new Gson(); @@ -191,7 +193,7 @@ public static void writeMappingsForEntity( CSVPrinter writer, CurieMap curieMap) throws IOException { - JsonElement isDefiningOntology = entity.get("isDefiningOntology"); + JsonElement isDefiningOntology = entity.get(IS_DEFNING_ONTOLOGY.getText()); if(isDefiningOntology != null && isDefiningOntology.getAsBoolean() == false) { // don't print mappings for imported entities (they will already be printed in the defining ontology) From ddacd9e621b211f6bdf3437e1a4c8c32268634db Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Mon, 5 Aug 2024 15:51:54 +0100 Subject: [PATCH 04/14] Fixed spelling of IS_DEFINING_ONTOLOGY and used it in LinkerPass2. --- .../ols/controller/api/v1/V1SearchController.java | 15 +++++++-------- .../ols/controller/api/v1/V1SelectController.java | 11 +++++------ .../ols/repository/v1/V1IndividualRepository.java | 8 ++++---- .../ols/repository/v1/V1PropertyRepository.java | 8 ++++---- .../spot/ols/repository/v1/V1TermRepository.java | 8 ++++---- .../ols/repository/v1/mappers/V1TermMapper.java | 2 +- .../v2/helpers/V2SearchFieldsParser.java | 2 +- .../json2sssom/src/main/java/JSON2SSSOM.java | 2 +- dataload/linker/pom.xml | 5 +++++ dataload/linker/src/main/java/LinkerPass2.java | 12 ++++++------ .../java/uk/ac/ebi/ols/shared/DefinedFields.java | 2 +- 11 files changed, 39 insertions(+), 36 deletions(-) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java index 2a4b083f..23d3ce99 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SearchController.java @@ -35,7 +35,6 @@ import org.springframework.web.bind.annotation.RestController; import uk.ac.ebi.spot.ols.repository.Validation; -import uk.ac.ebi.spot.ols.repository.neo4j.OlsNeo4jClient; import uk.ac.ebi.spot.ols.repository.solr.OlsSolrClient; import uk.ac.ebi.spot.ols.repository.transforms.LocalizationTransform; import uk.ac.ebi.spot.ols.repository.transforms.RemoveLiteralDatatypesTransform; @@ -94,8 +93,8 @@ public void search( "((" + createUnionQuery(query.toLowerCase(), SolrFieldMapper.mapFieldsList(List.of(fields)) .toArray(new String[0]), true) - + ") AND ("+IS_DEFNING_ONTOLOGY.getText() + ":\"true\"^100 OR " + - IS_DEFNING_ONTOLOGY.getText() + ":false^0))" + + ") AND ("+ IS_DEFINING_ONTOLOGY.getText() + ":\"true\"^100 OR " + + IS_DEFINING_ONTOLOGY.getText() + ":false^0))" ); } else { @@ -108,7 +107,7 @@ public void search( solrQuery.set("qf", String.join(" ", SolrFieldMapper.mapFieldsList(List.of(fields)))); solrQuery.set("bq", - IS_DEFNING_ONTOLOGY.getText() + ":\"true\"^100 " + + IS_DEFINING_ONTOLOGY.getText() + ":\"true\"^100 " + "lowercase_label:\"" + query.toLowerCase() + "\"^5 " + "lowercase_synonym:\"" + query.toLowerCase() + "\"^3"); } @@ -210,7 +209,7 @@ public void search( "ontologyIri", "ontologyPreferredPrefix", "type", - IS_DEFNING_ONTOLOGY.getText(), + IS_DEFINING_ONTOLOGY.getText(), IS_OBSOLETE.getText()); /* * Fix: End @@ -262,9 +261,9 @@ public void search( if (fieldList.contains("description")) outDoc.put("description", JsonHelper.getStrings(json, "definition")); if (fieldList.contains("short_form")) outDoc.put("short_form", JsonHelper.getString(json, "shortForm")); if (fieldList.contains("obo_id")) outDoc.put("obo_id", JsonHelper.getString(json, "curie")); - if (fieldList.contains(IS_DEFNING_ONTOLOGY.getOls3Text())) outDoc.put(IS_DEFNING_ONTOLOGY.getOls3Text(), - JsonHelper.getString(json, IS_DEFNING_ONTOLOGY.getText()) != null && - JsonHelper.getString(json, IS_DEFNING_ONTOLOGY.getText()).equals("true")); + if (fieldList.contains(IS_DEFINING_ONTOLOGY.getOls3Text())) outDoc.put(IS_DEFINING_ONTOLOGY.getOls3Text(), + JsonHelper.getString(json, IS_DEFINING_ONTOLOGY.getText()) != null && + JsonHelper.getString(json, IS_DEFINING_ONTOLOGY.getText()).equals("true")); if (fieldList.contains("type")) { outDoc.put("type", JsonHelper.getType(json, "type")); } diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java index bfeb2760..2f57d289 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v1/V1SelectController.java @@ -17,7 +17,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import uk.ac.ebi.spot.ols.repository.Validation; -import uk.ac.ebi.spot.ols.repository.neo4j.OlsNeo4jClient; import uk.ac.ebi.spot.ols.repository.solr.OlsSolrClient; import uk.ac.ebi.spot.ols.repository.transforms.LocalizationTransform; import uk.ac.ebi.spot.ols.repository.transforms.RemoveLiteralDatatypesTransform; @@ -73,7 +72,7 @@ public void select( solrQuery.set("defType", "edismax"); solrQuery.set("qf", "label whitespace_edge_label synonym whitespace_edge_synonym shortForm whitespace_edge_shortForm curie iri"); solrQuery.set("bq", "type:ontology^10.0 " + - IS_DEFNING_ONTOLOGY.getText() +":true^100.0 str_label:\"" + queryLc + "\"^1000 edge_label:\"" + + IS_DEFINING_ONTOLOGY.getText() +":true^100.0 str_label:\"" + queryLc + "\"^1000 edge_label:\"" + queryLc + "\"^500 str_synonym:\"" + queryLc + "\" edge_synonym:\"" + queryLc + "\"^100"); solrQuery.set("wt", "json"); @@ -96,7 +95,7 @@ public void select( } if (isLocal) { - solrQuery.addFilterQuery(IS_DEFNING_ONTOLOGY.getText() + ":true"); + solrQuery.addFilterQuery(IS_DEFINING_ONTOLOGY.getText() + ":true"); } if (childrenOf != null) { @@ -165,9 +164,9 @@ public void select( if (fieldList.contains("description")) outDoc.put("description", JsonHelper.getStrings(json, "definition")); if (fieldList.contains("short_form")) outDoc.put("short_form", JsonHelper.getString(json, "shortForm")); if (fieldList.contains("obo_id")) outDoc.put("obo_id", JsonHelper.getString(json, "curie")); - if (fieldList.contains(IS_DEFNING_ONTOLOGY.getOls3Text())) outDoc.put(IS_DEFNING_ONTOLOGY.getOls3Text(), - JsonHelper.getString(json, IS_DEFNING_ONTOLOGY.getText()) != null && - JsonHelper.getString(json, IS_DEFNING_ONTOLOGY.getText()).equals("true")); + if (fieldList.contains(IS_DEFINING_ONTOLOGY.getOls3Text())) outDoc.put(IS_DEFINING_ONTOLOGY.getOls3Text(), + JsonHelper.getString(json, IS_DEFINING_ONTOLOGY.getText()) != null && + JsonHelper.getString(json, IS_DEFINING_ONTOLOGY.getText()).equals("true")); if (fieldList.contains("type")) { outDoc.put("type", JsonHelper.getType(json, "type")); } diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1IndividualRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1IndividualRepository.java index 9de3a943..b5490176 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1IndividualRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1IndividualRepository.java @@ -117,7 +117,7 @@ public OlsFacetedResultsPage findAllByIsDefiningOntology(String la OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("individual"), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); OlsFacetedResultsPage entities = solrClient.searchSolrPaginated(query, pageable); @@ -146,7 +146,7 @@ public OlsFacetedResultsPage findAllByIriAndIsDefiningOntology(Str OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("individual"), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("iri", List.of(iri), SearchType.WHOLE_FIELD); OlsFacetedResultsPage entities = solrClient.searchSolrPaginated(query, pageable); @@ -177,7 +177,7 @@ public OlsFacetedResultsPage findAllByShortFormAndIsDefiningOntolo OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("individual"), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("shortForm", List.of(shortForm), SearchType.WHOLE_FIELD); OlsFacetedResultsPage entities = solrClient.searchSolrPaginated(query, pageable); @@ -205,7 +205,7 @@ public OlsFacetedResultsPage findAllByOboIdAndIsDefiningOntology(S OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("individual"), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("oboId", List.of(oboId), SearchType.WHOLE_FIELD); OlsFacetedResultsPage entities = solrClient.searchSolrPaginated(query, pageable); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java index 94aedf64..f4b92628 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java @@ -119,7 +119,7 @@ public Page findAllByIsDefiningOntology(String lang, Pageable pageab OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("property"), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) .map(result -> V1PropertyMapper.mapProperty(result, lang)); @@ -141,7 +141,7 @@ public Page findAllByIriAndIsDefiningOntology(String iri, String lan OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("property"), SearchType.WHOLE_FIELD); query.addFilter("iri", List.of(iri), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) .map(result -> V1PropertyMapper.mapProperty(result, lang)); @@ -163,7 +163,7 @@ public Page findAllByShortFormAndIsDefiningOntology(String shortForm OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("property"), SearchType.WHOLE_FIELD); query.addFilter("shortForm", List.of(shortForm), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) .map(result -> V1PropertyMapper.mapProperty(result, lang)); @@ -186,7 +186,7 @@ public Page findAllByOboIdAndIsDefiningOntology(String oboId, String OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("property"), SearchType.WHOLE_FIELD); query.addFilter("oboId", List.of(oboId), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) .map(result -> V1PropertyMapper.mapProperty(result, lang)); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java index dd47e77d..02f9e574 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java @@ -215,7 +215,7 @@ public Page findAllByIsDefiningOntology(String lang, Pageable pageable) OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("class"), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) .map(result -> V1TermMapper.mapTerm(result, lang)); @@ -236,7 +236,7 @@ public Page findAllByIriAndIsDefiningOntology(String iri, String lang, P OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("class"), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("iri", List.of(iri), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) @@ -257,7 +257,7 @@ public Page findAllByShortFormAndIsDefiningOntology(String shortForm, St OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("class"), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("shortForm", List.of(shortForm), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) @@ -279,7 +279,7 @@ public Page findAllByOboIdAndIsDefiningOntology(String oboId, String lan OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("class"), SearchType.WHOLE_FIELD); - query.addFilter(IS_DEFNING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); + query.addFilter(IS_DEFINING_ONTOLOGY.getText(), List.of("true"), SearchType.WHOLE_FIELD); query.addFilter("curie", List.of(oboId), SearchType.WHOLE_FIELD); return solrClient.searchSolrPaginated(query, pageable) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java index 5cf3463e..4d7809ed 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java @@ -45,7 +45,7 @@ public static V1Term mapTerm(JsonElement json, String lang) { term.oboSynonyms = V1OboSynonymExtractor.extractFromJson(localizedJson); term.isPreferredRoot = false; - term.isDefiningOntology = Boolean.parseBoolean(JsonHelper.getString(localizedJson, IS_DEFNING_ONTOLOGY.getText())); + term.isDefiningOntology = Boolean.parseBoolean(JsonHelper.getString(localizedJson, IS_DEFINING_ONTOLOGY.getText())); term.hasChildren = Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasDirectChildren")) || Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasHierarchicalChildren")); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/helpers/V2SearchFieldsParser.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/helpers/V2SearchFieldsParser.java index 4c2a3157..aa54693b 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/helpers/V2SearchFieldsParser.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/helpers/V2SearchFieldsParser.java @@ -33,7 +33,7 @@ public static void addBoostFieldsToQuery(OlsSolrQuery query, String boostFields) if(boostFields == null) { query.addBoostField("type", "ontology", 10, SearchType.WHOLE_FIELD); - query.addBoostField(IS_DEFNING_ONTOLOGY.getText(), "true", 1000, SearchType.WHOLE_FIELD); + query.addBoostField(IS_DEFINING_ONTOLOGY.getText(), "true", 1000, SearchType.WHOLE_FIELD); query.addBoostField("label", query.getSearchText(), 1000, SearchType.WHOLE_FIELD); query.addBoostField("label", query.getSearchText(), 500, SearchType.EDGES); query.addBoostField("curie", query.getSearchText(), 500, SearchType.EDGES); diff --git a/dataload/extras/json2sssom/src/main/java/JSON2SSSOM.java b/dataload/extras/json2sssom/src/main/java/JSON2SSSOM.java index c083cb1a..1215778f 100644 --- a/dataload/extras/json2sssom/src/main/java/JSON2SSSOM.java +++ b/dataload/extras/json2sssom/src/main/java/JSON2SSSOM.java @@ -193,7 +193,7 @@ public static void writeMappingsForEntity( CSVPrinter writer, CurieMap curieMap) throws IOException { - JsonElement isDefiningOntology = entity.get(IS_DEFNING_ONTOLOGY.getText()); + JsonElement isDefiningOntology = entity.get(IS_DEFINING_ONTOLOGY.getText()); if(isDefiningOntology != null && isDefiningOntology.getAsBoolean() == false) { // don't print mappings for imported entities (they will already be printed in the defining ontology) diff --git a/dataload/linker/pom.xml b/dataload/linker/pom.xml index a63e7d66..c5541a6a 100644 --- a/dataload/linker/pom.xml +++ b/dataload/linker/pom.xml @@ -10,6 +10,11 @@ jar + + uk.ac.ebi.spot.ols + ols4-shared + 1.0.0-SNAPSHOT + com.google.guava guava diff --git a/dataload/linker/src/main/java/LinkerPass2.java b/dataload/linker/src/main/java/LinkerPass2.java index 449ecce3..fe60180b 100644 --- a/dataload/linker/src/main/java/LinkerPass2.java +++ b/dataload/linker/src/main/java/LinkerPass2.java @@ -1,15 +1,15 @@ - -import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import com.google.gson.JsonPrimitive; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; import java.io.*; -import java.util.*; +import java.util.HashSet; +import java.util.Set; +import java.util.TreeSet; + +import static uk.ac.ebi.ols.shared.DefinedFields.IS_DEFINING_ONTOLOGY; public class LinkerPass2 { @@ -159,7 +159,7 @@ private static void writeEntityArray(JsonReader jsonReader, JsonWriter jsonWrite EntityDefinitionSet defOfThisEntity = pass1Result.iriToDefinitions.get(entityIri); if(defOfThisEntity != null) { - jsonWriter.name("isDefiningOntology"); + jsonWriter.name(IS_DEFINING_ONTOLOGY.getText()); jsonWriter.value(defOfThisEntity.definingOntologyIds.contains(ontologyId)); if (defOfThisEntity.definingDefinitions.size() > 0) { diff --git a/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java b/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java index dd5042b4..41cb171b 100644 --- a/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java +++ b/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java @@ -14,7 +14,7 @@ public enum DefinedFields { "Whether this class has hierarchical children or not."), IMPORTED("imported", "", "Whether this entity is imported or not."), - IS_DEFNING_ONTOLOGY("isDefiningOntology", + IS_DEFINING_ONTOLOGY("isDefiningOntology", "is_defining_ontology","Whether this entity is defined in this ontology or not."); private final String text; From e4a691a57878e57c77928581083469501afaf282 Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Mon, 5 Aug 2024 16:39:19 +0100 Subject: [PATCH 05/14] hasDirectChildren field is now boolean and uses defined fields. --- .../spot/ols/repository/v1/V1AncestorsJsTreeBuilder.java | 5 +++-- .../ebi/spot/ols/repository/v1/V1ChildrenJsTreeBuilder.java | 3 ++- .../spot/ols/repository/v1/mappers/V1PropertyMapper.java | 6 ++++-- .../ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java | 2 +- .../ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java | 6 ++++-- frontend/src/model/Entity.ts | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1AncestorsJsTreeBuilder.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1AncestorsJsTreeBuilder.java index 6ecc9f12..1df8d767 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1AncestorsJsTreeBuilder.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1AncestorsJsTreeBuilder.java @@ -8,6 +8,7 @@ import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; +import static uk.ac.ebi.ols.shared.DefinedFields.*; public class V1AncestorsJsTreeBuilder { @@ -90,8 +91,8 @@ private void createJsTreeEntries(List> jstree, JsonObject ent boolean opened = (!selected); - boolean hasDirectChildren = Objects.equals(JsonHelper.getString(entity, "hasDirectChildren"), "true"); - boolean hasHierarchicalChildren = Objects.equals(JsonHelper.getString(entity, "hasHierarchicalChildren"), "true"); + boolean hasDirectChildren = Objects.equals(JsonHelper.getString(entity, HAS_DIRECT_CHILDREN.getText()), "true"); + boolean hasHierarchicalChildren = Objects.equals(JsonHelper.getString(entity, HAS_DIRECT_CHILDREN.getText()), "true"); // only nodes that aren't already opened are marked as having children, (iff they actually have children!) boolean children = (!opened) && (hasDirectChildren || hasHierarchicalChildren); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1ChildrenJsTreeBuilder.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1ChildrenJsTreeBuilder.java index 2c5f8ee1..fe8ff843 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1ChildrenJsTreeBuilder.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1ChildrenJsTreeBuilder.java @@ -4,6 +4,7 @@ import java.nio.charset.StandardCharsets; import java.util.*; +import static uk.ac.ebi.ols.shared.DefinedFields.*; public class V1ChildrenJsTreeBuilder { @@ -34,7 +35,7 @@ List> buildJsTree() { jstreeEntry.put("text", JsonHelper.getString(child.getAsJsonObject(), "label")); jstreeEntry.put("state", Map.of("opened", false)); jstreeEntry.put("children", - JsonHelper.getString(child.getAsJsonObject(), "hasDirectChildren").equals("true") + JsonHelper.getString(child.getAsJsonObject(), HAS_DIRECT_CHILDREN.getText()).equals("true") || JsonHelper.getString(child.getAsJsonObject(), "hasHierarchicalChildren").equals("true") ); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java index 150dde16..57e409a3 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java @@ -8,6 +8,8 @@ import java.util.Objects; +import static uk.ac.ebi.ols.shared.DefinedFields.*; + public class V1PropertyMapper { public static V1Property mapProperty(JsonElement json, String lang) { @@ -34,8 +36,8 @@ public static V1Property mapProperty(JsonElement json, String lang) { property.shortForm = JsonHelper.getString(localizedJson, "shortForm"); property.oboId = property.shortForm.replace("_", ":"); - property.hasChildren = Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasDirectChildren")) - || Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasHierarchicalChildren")); + property.hasChildren = Boolean.parseBoolean(JsonHelper.getString(localizedJson, HAS_DIRECT_CHILDREN.getText())) + || Boolean.parseBoolean(JsonHelper.getString(localizedJson, HAS_DIRECT_CHILDREN.getText())); property.isRoot = !( Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasDirectParent")) || diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java index 4d7809ed..a346c2c8 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java @@ -47,7 +47,7 @@ public static V1Term mapTerm(JsonElement json, String lang) { term.isDefiningOntology = Boolean.parseBoolean(JsonHelper.getString(localizedJson, IS_DEFINING_ONTOLOGY.getText())); - term.hasChildren = Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasDirectChildren")) + term.hasChildren = Boolean.parseBoolean(JsonHelper.getString(localizedJson, HAS_DIRECT_CHILDREN.getText())) || Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasHierarchicalChildren")); term.isRoot = !( diff --git a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java index 85f4a4bc..ee6ccd9b 100644 --- a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java +++ b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java @@ -10,6 +10,8 @@ import java.util.List; import java.util.Set; +import static uk.ac.ebi.ols.shared.DefinedFields.*; + public class HierarchyFlagsAnnotator { public static void annotateHierarchyFlags(OntologyGraph graph) { @@ -94,9 +96,9 @@ public static void annotateHierarchyFlags(OntologyGraph graph) { continue; if(hasChildren.contains(c.uri)) { - c.properties.addProperty("hasDirectChildren", PropertyValueLiteral.fromString("true")); + c.properties.addProperty(HAS_DIRECT_CHILDREN.getText(), PropertyValueLiteral.fromBoolean("true")); } else { - c.properties.addProperty("hasDirectChildren", PropertyValueLiteral.fromString("false")); + c.properties.addProperty(HAS_DIRECT_CHILDREN.getText(), PropertyValueLiteral.fromBoolean("false")); } if(hasHierarchicalChildren.contains(c.uri)) { diff --git a/frontend/src/model/Entity.ts b/frontend/src/model/Entity.ts index cf8b65d4..4c963fa2 100644 --- a/frontend/src/model/Entity.ts +++ b/frontend/src/model/Entity.ts @@ -45,7 +45,7 @@ export default abstract class Entity extends Thing { } hasDirectChildren(): boolean { - return this.properties["hasDirectChildren"] === "true"; + return this.properties["hasDirectChildren"] === true; } hasHierarchicalChildren(): boolean { From 4c8ac4d7468beea9f53f2c46bcd0581262855603 Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Tue, 6 Aug 2024 09:40:03 +0100 Subject: [PATCH 06/14] Changed hasDirectParent to hasDirectParents to match with hasDirectChildren naming convention. hasDirectParents is now boolean and uses DefinedFields. --- .../spot/ols/controller/api/v2/V2IndividualController.java | 2 -- .../java/uk/ac/ebi/spot/ols/repository/v1/JsonHelper.java | 3 +++ .../ebi/spot/ols/repository/v1/V1PropertyRepository.java | 2 +- .../uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java | 2 +- .../spot/ols/repository/v1/mappers/V1PropertyMapper.java | 2 +- .../ebi/spot/ols/repository/v1/mappers/V1TermMapper.java | 2 +- .../ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java | 7 ++++--- frontend/src/pages/ontologies/ontologiesSlice.ts | 4 ++-- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v2/V2IndividualController.java b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v2/V2IndividualController.java index 63385d3a..dd8d4929 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v2/V2IndividualController.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v2/V2IndividualController.java @@ -101,8 +101,6 @@ public HttpEntity getIndividual( } - // The instances of classes are individuals. So, the /instances endpoint is part of the Class controller. - // @RequestMapping(path = "/ontologies/{onto}/classes/{class}/instances", produces = {MediaType.APPLICATION_JSON_VALUE }, method = RequestMethod.GET) public HttpEntity> getClassInstances( @PageableDefault(size = 20, page = 0) Pageable pageable, diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/JsonHelper.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/JsonHelper.java index 3d729eaf..44842360 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/JsonHelper.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/JsonHelper.java @@ -14,6 +14,9 @@ public static String getString(JsonObject json, String key) { return objectToString(json.get(key)); } + public static boolean getBoolean(JsonObject json, String key) { + return json.getAsJsonPrimitive(key).getAsBoolean(); + } public static String objectToString(JsonElement value) { diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java index 261497f1..0598ce49 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java @@ -94,7 +94,7 @@ public Page getRoots(String ontologyId, boolean obsolete, String lan OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("property"), SearchType.WHOLE_FIELD); query.addFilter("ontologyId", List.of(ontologyId), SearchType.WHOLE_FIELD); - query.addFilter("hasDirectParent", List.of("false"), SearchType.WHOLE_FIELD); + query.addFilter(HAS_DIRECT_PARENTS.getText(), List.of("false"), SearchType.WHOLE_FIELD); query.addFilter("hasHierarchicalParent", List.of("false"), SearchType.WHOLE_FIELD); if(!obsolete) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java index c6ebaee6..55736acc 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java @@ -181,7 +181,7 @@ public Page getRoots(String ontologyId, boolean obsolete, String lang, P OlsSolrQuery query = new OlsSolrQuery(); query.addFilter("type", List.of("class"), SearchType.WHOLE_FIELD); query.addFilter("ontologyId", List.of(ontologyId), SearchType.WHOLE_FIELD); - query.addFilter("hasDirectParent", List.of("false"), SearchType.WHOLE_FIELD); + query.addFilter(HAS_DIRECT_PARENTS.getText(), List.of("false"), SearchType.WHOLE_FIELD); query.addFilter("hasHierarchicalParent", List.of("false"), SearchType.WHOLE_FIELD); if (!obsolete) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java index 57e409a3..f62b790a 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java @@ -40,7 +40,7 @@ public static V1Property mapProperty(JsonElement json, String lang) { || Boolean.parseBoolean(JsonHelper.getString(localizedJson, HAS_DIRECT_CHILDREN.getText())); property.isRoot = !( - Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasDirectParent")) || + JsonHelper.getBoolean(localizedJson, HAS_DIRECT_PARENTS.getText()) || Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasHierarchicalParent")) ); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java index a346c2c8..2e060d7d 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java @@ -51,7 +51,7 @@ public static V1Term mapTerm(JsonElement json, String lang) { || Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasHierarchicalChildren")); term.isRoot = !( - Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasDirectParent")) || + JsonHelper.getBoolean(localizedJson, HAS_DIRECT_PARENTS.getText()) || Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasHierarchicalParent")) ); diff --git a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java index ee6ccd9b..4325d13d 100644 --- a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java +++ b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java @@ -39,7 +39,7 @@ public static void annotateHierarchyFlags(OntologyGraph graph) { List parents = c.properties.getPropertyValues("directParent"); - boolean hasDirectParent = false; + boolean hasDirectParents = false; if(parents != null) { for (PropertyValue parent : parents) { @@ -51,12 +51,13 @@ public static void annotateHierarchyFlags(OntologyGraph graph) { continue; } - hasDirectParent = true; + hasDirectParents = true; hasChildren.add(iri); } } - c.properties.addProperty("hasDirectParent", PropertyValueLiteral.fromString(hasDirectParent ? "true" : "false")); + c.properties.addProperty(HAS_DIRECT_PARENTS.getText(), + PropertyValueLiteral.fromBoolean(hasDirectParents ? "true" : "false")); // 2. Hierarchical parents // diff --git a/frontend/src/pages/ontologies/ontologiesSlice.ts b/frontend/src/pages/ontologies/ontologiesSlice.ts index e11ca825..85ecd072 100644 --- a/frontend/src/pages/ontologies/ontologiesSlice.ts +++ b/frontend/src/pages/ontologies/ontologiesSlice.ts @@ -346,7 +346,7 @@ export const getRootEntities = createAsyncThunk( ), getPaginated( `api/v2/ontologies/${ontologyId}/individuals?${new URLSearchParams({ - hasDirectParent: "false", + // hasDirectParent: "false", size: "1000", lang, includeObsoleteEntities: showObsoleteEnabled, @@ -387,7 +387,7 @@ export const getRootEntities = createAsyncThunk( } else { const rootsPage = await getPaginated( `api/v2/ontologies/${ontologyId}/${entityType}?${new URLSearchParams({ - hasDirectParent: "false", + // hasDirectParent: "false", size: "1000", lang, includeObsoleteEntities: showObsoleteEnabled, From 8d84434d66cbfda2253e28cd356bfecc409e510c Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Tue, 6 Aug 2024 09:48:20 +0100 Subject: [PATCH 07/14] Missed HierarchyFlagsAnnotator in previous commit. --- .../ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java index 4325d13d..db9ed634 100644 --- a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java +++ b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java @@ -103,9 +103,9 @@ public static void annotateHierarchyFlags(OntologyGraph graph) { } if(hasHierarchicalChildren.contains(c.uri)) { - c.properties.addProperty("hasHierarchicalChildren", PropertyValueLiteral.fromString("true")); + c.properties.addProperty(HAS_HIERARCHICAL_CHILDREN.getText(), PropertyValueLiteral.fromBoolean("true")); } else { - c.properties.addProperty("hasHierarchicalChildren", PropertyValueLiteral.fromString("false")); + c.properties.addProperty(HAS_HIERARCHICAL_CHILDREN.getText(), PropertyValueLiteral.fromBoolean("false")); } } } From a747fe3549ffe7b8d007f651cc717fe1661911e8 Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Tue, 6 Aug 2024 10:07:36 +0100 Subject: [PATCH 08/14] Changed hasHierarchicalParent to hasHierarchicalParents. hasHierarchicalParents is now boolean and uses DefinedFields. --- .../ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java | 2 +- .../uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java | 2 +- .../spot/ols/repository/v1/mappers/V1PropertyMapper.java | 2 +- .../ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java | 2 +- .../ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java | 6 +++--- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java index 0598ce49..3098f086 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1PropertyRepository.java @@ -95,7 +95,7 @@ public Page getRoots(String ontologyId, boolean obsolete, String lan query.addFilter("type", List.of("property"), SearchType.WHOLE_FIELD); query.addFilter("ontologyId", List.of(ontologyId), SearchType.WHOLE_FIELD); query.addFilter(HAS_DIRECT_PARENTS.getText(), List.of("false"), SearchType.WHOLE_FIELD); - query.addFilter("hasHierarchicalParent", List.of("false"), SearchType.WHOLE_FIELD); + query.addFilter(HAS_HIERARCHICAL_PARENTS.getText(), List.of("false"), SearchType.WHOLE_FIELD); if(!obsolete) query.addFilter(IS_OBSOLETE.getText(), List.of("false"), SearchType.WHOLE_FIELD); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java index 55736acc..c9eb337b 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/V1TermRepository.java @@ -182,7 +182,7 @@ public Page getRoots(String ontologyId, boolean obsolete, String lang, P query.addFilter("type", List.of("class"), SearchType.WHOLE_FIELD); query.addFilter("ontologyId", List.of(ontologyId), SearchType.WHOLE_FIELD); query.addFilter(HAS_DIRECT_PARENTS.getText(), List.of("false"), SearchType.WHOLE_FIELD); - query.addFilter("hasHierarchicalParent", List.of("false"), SearchType.WHOLE_FIELD); + query.addFilter(HAS_HIERARCHICAL_PARENTS.getText(), List.of("false"), SearchType.WHOLE_FIELD); if (!obsolete) query.addFilter(IS_OBSOLETE.getText(), List.of("false"), SearchType.WHOLE_FIELD); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java index f62b790a..19153f65 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1PropertyMapper.java @@ -41,7 +41,7 @@ public static V1Property mapProperty(JsonElement json, String lang) { property.isRoot = !( JsonHelper.getBoolean(localizedJson, HAS_DIRECT_PARENTS.getText()) || - Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasHierarchicalParent")) + JsonHelper.getBoolean(localizedJson, HAS_HIERARCHICAL_PARENTS.getText()) ); return property; diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java index 2e060d7d..a3027046 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v1/mappers/V1TermMapper.java @@ -52,7 +52,7 @@ public static V1Term mapTerm(JsonElement json, String lang) { term.isRoot = !( JsonHelper.getBoolean(localizedJson, HAS_DIRECT_PARENTS.getText()) || - Boolean.parseBoolean(JsonHelper.getString(localizedJson, "hasHierarchicalParent")) + JsonHelper.getBoolean(localizedJson, HAS_HIERARCHICAL_PARENTS.getText()) ); term.isObsolete = Boolean.parseBoolean(JsonHelper.getString(localizedJson, IS_OBSOLETE.getText())); diff --git a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java index db9ed634..410f8997 100644 --- a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java +++ b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HierarchyFlagsAnnotator.java @@ -64,7 +64,7 @@ public static void annotateHierarchyFlags(OntologyGraph graph) { List hierarchicalParents = c.properties.getPropertyValues("hierarchicalParent"); - boolean hasHierarchicalParent = false; + boolean hasHierarchicalParents = false; if(hierarchicalParents != null) { for (PropertyValue parent : hierarchicalParents) { @@ -76,12 +76,12 @@ public static void annotateHierarchyFlags(OntologyGraph graph) { continue; } - hasHierarchicalParent = true; + hasHierarchicalParents = true; hasHierarchicalChildren.add(iri); } } - c.properties.addProperty("hasHierarchicalParent", PropertyValueLiteral.fromString(hasHierarchicalParent ? "true" : "false")); + c.properties.addProperty(HAS_HIERARCHICAL_PARENTS.getText(), PropertyValueLiteral.fromBoolean(hasHierarchicalParents ? "true" : "false")); } } From eefda1ac005c18f51e8316066de6195b1f3a3183 Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Tue, 6 Aug 2024 11:07:35 +0100 Subject: [PATCH 09/14] Renamed enpoint /ontologies/{onto}/classes/{class}/instances to /ontologies/{onto}/classes/{class}/individuals. --- .../spot/ols/controller/api/v2/V2IndividualController.java | 6 +++--- .../ebi/spot/ols/repository/v2/V2IndividualRepository.java | 2 +- frontend/src/pages/ontologies/ontologiesSlice.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v2/V2IndividualController.java b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v2/V2IndividualController.java index dd8d4929..00feeb84 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v2/V2IndividualController.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/controller/api/v2/V2IndividualController.java @@ -101,8 +101,8 @@ public HttpEntity getIndividual( } - @RequestMapping(path = "/ontologies/{onto}/classes/{class}/instances", produces = {MediaType.APPLICATION_JSON_VALUE }, method = RequestMethod.GET) - public HttpEntity> getClassInstances( + @RequestMapping(path = "/ontologies/{onto}/classes/{class}/individuals", produces = {MediaType.APPLICATION_JSON_VALUE }, method = RequestMethod.GET) + public HttpEntity> getClassIndividuals( @PageableDefault(size = 20, page = 0) Pageable pageable, @PathVariable("onto") String ontologyId, @PathVariable("class") String classIri, @@ -113,7 +113,7 @@ public HttpEntity> getClassInstances( return new ResponseEntity<>( new V2PagedResponse<>( - individualRepository.getInstancesOfClass(ontologyId, classIri, pageable, lang) + individualRepository.getIndividualsOfClass(ontologyId, classIri, pageable, lang) ), HttpStatus.OK); diff --git a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/V2IndividualRepository.java b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/V2IndividualRepository.java index ed449380..467e4cf8 100644 --- a/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/V2IndividualRepository.java +++ b/backend/src/main/java/uk/ac/ebi/spot/ols/repository/v2/V2IndividualRepository.java @@ -101,7 +101,7 @@ public V2Entity getByOntologyIdAndIri(String ontologyId, String iri, String lang ); } - public OlsFacetedResultsPage getInstancesOfClass( + public OlsFacetedResultsPage getIndividualsOfClass( String ontologyId, String classIri, Pageable pageable, String lang) throws IOException { Validation.validateOntologyId(ontologyId); diff --git a/frontend/src/pages/ontologies/ontologiesSlice.ts b/frontend/src/pages/ontologies/ontologiesSlice.ts index 85ecd072..a6181cf8 100644 --- a/frontend/src/pages/ontologies/ontologiesSlice.ts +++ b/frontend/src/pages/ontologies/ontologiesSlice.ts @@ -216,7 +216,7 @@ export const getClassInstances = createAsyncThunk( const doubleEncodedTermUri = encodeURIComponent( encodeURIComponent(classIri) ); - path = `api/v2/ontologies/${ontologyId}/classes/${doubleEncodedTermUri}/instances?${new URLSearchParams( + path = `api/v2/ontologies/${ontologyId}/classes/${doubleEncodedTermUri}/individuals?${new URLSearchParams( apiSearchParams )}`; const instances = (await getPaginated(path)).map((i) => @@ -433,7 +433,7 @@ export const getNodeChildren = createAsyncThunk( ); } else if (entityTypePlural === "individuals") { childrenPage = await getPaginated( - `api/v2/ontologies/${ontologyId}/classes/${doubleEncodedUri}/instances?${new URLSearchParams( + `api/v2/ontologies/${ontologyId}/classes/${doubleEncodedUri}/individuals?${new URLSearchParams( { size: "1000", lang, From b51dec00f683629d1ff3a18d4c8ba5d6232cdda3 Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Tue, 6 Aug 2024 13:41:50 +0100 Subject: [PATCH 10/14] Ordered DefinedFields and made isPreferredRoots boolean. --- .../annotators/PreferredRootsAnnotator.java | 6 ++++-- .../java/uk/ac/ebi/ols/shared/DefinedFields.java | 16 +++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/PreferredRootsAnnotator.java b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/PreferredRootsAnnotator.java index 30c52f55..a01e3f30 100644 --- a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/PreferredRootsAnnotator.java +++ b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/PreferredRootsAnnotator.java @@ -10,6 +10,8 @@ import uk.ac.ebi.rdf2json.OntologyNode; import uk.ac.ebi.rdf2json.properties.*; +import static uk.ac.ebi.ols.shared.DefinedFields.*; + public class PreferredRootsAnnotator { public static Set getPreferredRoots(OntologyGraph graph) { @@ -58,9 +60,9 @@ public static void annotatePreferredRoots(OntologyGraph graph) { continue; if(preferredRoots.contains(c.uri)) { - c.properties.addProperty("isPreferredRoot", PropertyValueLiteral.fromString("true")); + c.properties.addProperty(IS_PREFERRED_ROOT.getText(), PropertyValueLiteral.fromBoolean("true")); } else { - c.properties.addProperty("isPreferredRoot", PropertyValueLiteral.fromString("false")); + c.properties.addProperty(IS_PREFERRED_ROOT.getText(), PropertyValueLiteral.fromBoolean("false")); } } } diff --git a/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java b/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java index 41cb171b..6b635b7f 100644 --- a/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java +++ b/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java @@ -1,21 +1,23 @@ package uk.ac.ebi.ols.shared; public enum DefinedFields { - IS_OBSOLETE("isObsolete", "isObsolete", - "Set to true if this entity is obsolete, otherwise is set to false."), DEFINITION("definition", "","The definition of this entity."), - HAS_DIRECT_PARENTS("hasDirectParents", "", - "Indicates whether this class has direct parents or not."), HAS_DIRECT_CHILDREN("hasDirectChildren", "has_children", "Whether this class has direct children or not."), - HAS_HIERARCHICAL_PARENTS("hasHierarchicalParents", "", - "Whether this class has hierarchical parents or not."), + HAS_DIRECT_PARENTS("hasDirectParents", "", + "Indicates whether this class has direct parents or not."), HAS_HIERARCHICAL_CHILDREN("hasHierarchicalChildren", "", "Whether this class has hierarchical children or not."), + HAS_HIERARCHICAL_PARENTS("hasHierarchicalParents", "", + "Whether this class has hierarchical parents or not."), IMPORTED("imported", "", "Whether this entity is imported or not."), IS_DEFINING_ONTOLOGY("isDefiningOntology", - "is_defining_ontology","Whether this entity is defined in this ontology or not."); + "is_defining_ontology","Whether this entity is defined in this ontology or not."), + IS_OBSOLETE("isObsolete", "isObsolete", + "Set to true if this entity is obsolete, otherwise is set to false."), + IS_PREFERRED_ROOT("isPreferredRoot", "is_preferred_root", + "Set to true if this entity is a preferred root or not."); private final String text; private final String ols3Text; From 5f2b46b5d2b67f3378a61f9eda76837170ad604e Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Tue, 6 Aug 2024 14:35:27 +0100 Subject: [PATCH 11/14] HAS_LOCAL_DEFINITION uses DefinedFields --- dataload/linker/src/main/java/EntityDefinitionSet.java | 1 - dataload/linker/src/main/java/LinkerPass2.java | 3 ++- .../src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dataload/linker/src/main/java/EntityDefinitionSet.java b/dataload/linker/src/main/java/EntityDefinitionSet.java index 7cab8687..fcbab376 100644 --- a/dataload/linker/src/main/java/EntityDefinitionSet.java +++ b/dataload/linker/src/main/java/EntityDefinitionSet.java @@ -1,6 +1,5 @@ import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; diff --git a/dataload/linker/src/main/java/LinkerPass2.java b/dataload/linker/src/main/java/LinkerPass2.java index fe60180b..59ae7f39 100644 --- a/dataload/linker/src/main/java/LinkerPass2.java +++ b/dataload/linker/src/main/java/LinkerPass2.java @@ -9,6 +9,7 @@ import java.util.Set; import java.util.TreeSet; +import static uk.ac.ebi.ols.shared.DefinedFields.HAS_LOCAL_DEFINITION; import static uk.ac.ebi.ols.shared.DefinedFields.IS_DEFINING_ONTOLOGY; public class LinkerPass2 { @@ -351,7 +352,7 @@ private static void writeIriMapping(JsonWriter jsonWriter, EntityDefinitionSet d jsonWriter.name("numAppearsIn"); jsonWriter.value(Integer.toString(definitions.definitions.size())); - jsonWriter.name("hasLocalDefinition"); + jsonWriter.name(HAS_LOCAL_DEFINITION.getText()); jsonWriter.value(definitions.ontologyIdToDefinitions.containsKey(ontologyId)); EntityDefinition defFromThisOntology = definitions.ontologyIdToDefinitions.get(ontologyId); diff --git a/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java b/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java index 6b635b7f..aeb1de0d 100644 --- a/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java +++ b/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java @@ -10,6 +10,8 @@ public enum DefinedFields { "Whether this class has hierarchical children or not."), HAS_HIERARCHICAL_PARENTS("hasHierarchicalParents", "", "Whether this class has hierarchical parents or not."), + HAS_LOCAL_DEFINITION("hasLocalDefinition", "", + "True if term is definined within this ontology."), IMPORTED("imported", "", "Whether this entity is imported or not."), IS_DEFINING_ONTOLOGY("isDefiningOntology", From fd5e02a417514728de20e1e6bc614bfa9aa75704 Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Tue, 6 Aug 2024 15:00:43 +0100 Subject: [PATCH 12/14] HAS_INDIVIDUAL is now boolean and uses DefinedFields --- .../ac/ebi/rdf2json/annotators/HasIndividualsAnnotator.java | 4 +++- .../src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HasIndividualsAnnotator.java b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HasIndividualsAnnotator.java index ec91f385..62c617af 100644 --- a/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HasIndividualsAnnotator.java +++ b/dataload/rdf2json/src/main/java/uk/ac/ebi/rdf2json/annotators/HasIndividualsAnnotator.java @@ -8,6 +8,8 @@ import java.util.List; +import static uk.ac.ebi.ols.shared.DefinedFields.*; + public class HasIndividualsAnnotator { public static void annotateHasIndividuals(OntologyGraph graph) { @@ -32,7 +34,7 @@ public static void annotateHasIndividuals(OntologyGraph graph) { && typeNode.types.contains(OntologyNode.NodeType.CLASS) && typeNode.uri != null) { - typeNode.properties.addProperty("hasIndividuals", PropertyValueLiteral.fromString("true")); + typeNode.properties.addProperty(HAS_INDIVIDUALS.getText(), PropertyValueLiteral.fromBoolean("true")); } } } diff --git a/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java b/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java index aeb1de0d..51e65cd7 100644 --- a/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java +++ b/ols-shared/src/main/java/uk/ac/ebi/ols/shared/DefinedFields.java @@ -10,6 +10,7 @@ public enum DefinedFields { "Whether this class has hierarchical children or not."), HAS_HIERARCHICAL_PARENTS("hasHierarchicalParents", "", "Whether this class has hierarchical parents or not."), + HAS_INDIVIDUALS("hasIndividuals", "", ""), HAS_LOCAL_DEFINITION("hasLocalDefinition", "", "True if term is definined within this ontology."), IMPORTED("imported", "", From a1d820fe8497fb2ff3c28940a69a2a80dfc14cb6 Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Wed, 7 Aug 2024 16:24:35 +0100 Subject: [PATCH 13/14] hasHierarchicalChildren needs to test against boolean on frontend. --- frontend/src/model/Entity.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/model/Entity.ts b/frontend/src/model/Entity.ts index 4c963fa2..a38d6d02 100644 --- a/frontend/src/model/Entity.ts +++ b/frontend/src/model/Entity.ts @@ -49,7 +49,7 @@ export default abstract class Entity extends Thing { } hasHierarchicalChildren(): boolean { - return this.properties["hasHierarchicalChildren"] === "true"; + return this.properties["hasHierarchicalChildren"] === true; } hasChildren(): boolean { From 4c7b5f8aa062dfd1daa2c0750b9c75df8ef5d6bc Mon Sep 17 00:00:00 2001 From: henrietteharmse Date: Thu, 8 Aug 2024 09:24:11 +0100 Subject: [PATCH 14/14] Fixed hasDirectParent issue. --- frontend/src/pages/ontologies/ontologiesSlice.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/ontologies/ontologiesSlice.ts b/frontend/src/pages/ontologies/ontologiesSlice.ts index a6181cf8..bb7710f0 100644 --- a/frontend/src/pages/ontologies/ontologiesSlice.ts +++ b/frontend/src/pages/ontologies/ontologiesSlice.ts @@ -346,7 +346,7 @@ export const getRootEntities = createAsyncThunk( ), getPaginated( `api/v2/ontologies/${ontologyId}/individuals?${new URLSearchParams({ - // hasDirectParent: "false", + hasDirectParents: "false", size: "1000", lang, includeObsoleteEntities: showObsoleteEnabled, @@ -387,7 +387,7 @@ export const getRootEntities = createAsyncThunk( } else { const rootsPage = await getPaginated( `api/v2/ontologies/${ontologyId}/${entityType}?${new URLSearchParams({ - // hasDirectParent: "false", + hasDirectParents: "false", size: "1000", lang, includeObsoleteEntities: showObsoleteEnabled,