From 414850363fd136c5fca38f42b33d24d1eb9661cd Mon Sep 17 00:00:00 2001 From: Andrew Davison Date: Tue, 29 Sep 2026 16:35:41 +0200 Subject: [PATCH] Sort query results by exactly one, deliberately chosen property (#129) The KG query API allows "sort": true on only one root-level property, but generate_query() flagged every property named name, fullName or lookupLabel, so classes with both name and lookup_label sent two sort keys and the KG used whichever came first. Each generated class now has a sort_property attribute, chosen by the builder from a priority order (name, full_name, lookup_label, family_name) with per-class exceptions: ParcellationEntity and ParcellationEntityVersion sort by lookup_label, which keeps entities from the same atlas together. Query.serialize() now rejects queries with more than one sort key. As a result, SlicingDevice, Electrode, ElectrodeArray and Pipette are sorted by name instead of lookup_label, and Person is now sorted by family_name. Adds offline tests over all v4 and v5 classes, live tests of the KG's ordering (case-insensitive, missing values first), and documentation of result ordering, including that the core API, used by default for unfiltered list(), does not sort. Implementation made use of Claude Opus 5.5 --- builder/fairgraph_module_template.py.txt | 3 + builder/update_openminds.py | 28 +++++ doc/contributing.rst | 4 + doc/queries.rst | 26 +++++ doc/release_notes.rst | 8 ++ fairgraph/kgobject.py | 18 ++- .../v4/chemicals/chemical_mixture.py | 1 + .../v4/chemicals/chemical_substance.py | 1 + .../openminds/v4/computation/data_analysis.py | 1 + .../openminds/v4/computation/data_copy.py | 1 + .../openminds/v4/computation/environment.py | 1 + .../v4/computation/generic_computation.py | 1 + .../v4/computation/hardware_system.py | 1 + .../v4/computation/launch_configuration.py | 1 + .../openminds/v4/computation/local_file.py | 1 + .../v4/computation/model_validation.py | 1 + .../openminds/v4/computation/optimization.py | 1 + .../openminds/v4/computation/simulation.py | 1 + .../v4/computation/software_agent.py | 1 + .../v4/computation/validation_test.py | 1 + .../v4/computation/validation_test_version.py | 1 + .../openminds/v4/computation/visualization.py | 1 + .../v4/computation/workflow_recipe.py | 1 + .../v4/computation/workflow_recipe_version.py | 1 + .../v4/controlled_terms/action_status_type.py | 1 + .../v4/controlled_terms/age_category.py | 1 + .../v4/controlled_terms/analysis_technique.py | 1 + .../anatomical_axes_orientation.py | 1 + .../anatomical_identification_type.py | 1 + .../v4/controlled_terms/anatomical_plane.py | 1 + .../annotation_criteria_type.py | 1 + .../v4/controlled_terms/annotation_type.py | 1 + .../v4/controlled_terms/atlas_type.py | 1 + .../auditory_stimulus_type.py | 1 + .../v4/controlled_terms/biological_order.py | 1 + .../v4/controlled_terms/biological_process.py | 1 + .../v4/controlled_terms/biological_sex.py | 1 + .../v4/controlled_terms/breeding_type.py | 1 + .../v4/controlled_terms/cell_culture_type.py | 1 + .../v4/controlled_terms/cell_type.py | 1 + .../controlled_terms/chemical_mixture_type.py | 1 + .../openminds/v4/controlled_terms/colormap.py | 1 + .../v4/controlled_terms/contribution_type.py | 1 + .../cranial_window_construction_type.py | 1 + .../cranial_window_reinforcement_type.py | 1 + .../controlled_terms/criteria_quality_type.py | 1 + .../v4/controlled_terms/data_type.py | 1 + .../v4/controlled_terms/device_type.py | 1 + .../v4/controlled_terms/difference_measure.py | 1 + .../openminds/v4/controlled_terms/disease.py | 1 + .../v4/controlled_terms/disease_model.py | 1 + .../v4/controlled_terms/educational_level.py | 1 + .../electrical_stimulus_type.py | 1 + .../v4/controlled_terms/ethics_assessment.py | 1 + .../controlled_terms/experimental_approach.py | 1 + .../controlled_terms/file_bundle_grouping.py | 1 + .../controlled_terms/file_repository_type.py | 1 + .../v4/controlled_terms/file_usage_role.py | 1 + .../controlled_terms/genetic_strain_type.py | 1 + .../gustatory_stimulus_type.py | 1 + .../v4/controlled_terms/handedness.py | 1 + .../openminds/v4/controlled_terms/language.py | 1 + .../v4/controlled_terms/laterality.py | 1 + .../learning_resource_type.py | 1 + .../v4/controlled_terms/measured_quantity.py | 1 + .../controlled_terms/measured_signal_type.py | 1 + .../controlled_terms/meta_data_model_type.py | 1 + .../model_abstraction_level.py | 1 + .../v4/controlled_terms/model_scope.py | 1 + .../v4/controlled_terms/molecular_entity.py | 1 + .../v4/controlled_terms/mri_pulse_sequence.py | 1 + .../v4/controlled_terms/mri_weighting.py | 1 + .../olfactory_stimulus_type.py | 1 + .../v4/controlled_terms/operating_device.py | 1 + .../v4/controlled_terms/operating_system.py | 1 + .../controlled_terms/optical_stimulus_type.py | 1 + .../openminds/v4/controlled_terms/organ.py | 1 + .../v4/controlled_terms/organism_substance.py | 1 + .../v4/controlled_terms/organism_system.py | 1 + .../controlled_terms/patch_clamp_variation.py | 1 + .../v4/controlled_terms/preparation_type.py | 1 + .../controlled_terms/product_accessibility.py | 1 + .../controlled_terms/programming_language.py | 1 + .../controlled_terms/qualitative_overlap.py | 1 + .../v4/controlled_terms/semantic_data_type.py | 1 + .../openminds/v4/controlled_terms/service.py | 1 + .../v4/controlled_terms/setup_type.py | 1 + .../software_application_category.py | 1 + .../v4/controlled_terms/software_feature.py | 1 + .../openminds/v4/controlled_terms/species.py | 1 + .../controlled_terms/stimulation_approach.py | 1 + .../controlled_terms/stimulation_technique.py | 1 + .../v4/controlled_terms/subcellular_entity.py | 1 + .../v4/controlled_terms/subject_attribute.py | 1 + .../controlled_terms/tactile_stimulus_type.py | 1 + .../v4/controlled_terms/technique.py | 1 + .../v4/controlled_terms/term_suggestion.py | 1 + .../v4/controlled_terms/terminology.py | 1 + .../tissue_sample_attribute.py | 1 + .../v4/controlled_terms/tissue_sample_type.py | 1 + .../controlled_terms/type_of_uncertainty.py | 1 + .../controlled_terms/uberon_parcellation.py | 1 + .../controlled_terms/unit_of_measurement.py | 1 + .../controlled_terms/visual_stimulus_type.py | 1 + .../openminds/v4/core/actors/consortium.py | 1 + .../openminds/v4/core/actors/organization.py | 1 + fairgraph/openminds/v4/core/actors/person.py | 1 + .../openminds/v4/core/data/content_type.py | 1 + .../v4/core/data/content_type_pattern.py | 1 + fairgraph/openminds/v4/core/data/file.py | 1 + .../openminds/v4/core/data/file_bundle.py | 1 + .../openminds/v4/core/data/file_repository.py | 1 + .../v4/core/data/file_repository_structure.py | 1 + fairgraph/openminds/v4/core/data/license.py | 1 + .../openminds/v4/core/products/dataset.py | 1 + .../v4/core/products/dataset_version.py | 1 + .../v4/core/products/meta_data_model.py | 1 + .../core/products/meta_data_model_version.py | 1 + fairgraph/openminds/v4/core/products/model.py | 1 + .../v4/core/products/model_version.py | 1 + .../openminds/v4/core/products/project.py | 1 + fairgraph/openminds/v4/core/products/setup.py | 1 + .../openminds/v4/core/products/software.py | 1 + .../v4/core/products/software_version.py | 1 + .../openminds/v4/core/products/web_service.py | 1 + .../v4/core/products/web_service_version.py | 1 + .../v4/core/research/behavioral_protocol.py | 1 + .../v4/core/research/configuration.py | 1 + .../v4/core/research/property_value_list.py | 1 + .../openminds/v4/core/research/protocol.py | 1 + .../v4/core/research/protocol_execution.py | 1 + .../openminds/v4/core/research/strain.py | 1 + .../openminds/v4/core/research/subject.py | 1 + .../v4/core/research/subject_group.py | 1 + .../v4/core/research/subject_group_state.py | 1 + .../v4/core/research/subject_state.py | 1 + .../v4/core/research/tissue_sample.py | 1 + .../core/research/tissue_sample_collection.py | 1 + .../tissue_sample_collection_state.py | 1 + .../v4/core/research/tissue_sample_state.py | 1 + .../v4/ephys/activity/cell_patching.py | 1 + .../v4/ephys/activity/electrode_placement.py | 1 + .../v4/ephys/activity/recording_activity.py | 1 + .../openminds/v4/ephys/device/electrode.py | 1 + .../v4/ephys/device/electrode_array.py | 1 + .../v4/ephys/device/electrode_array_usage.py | 1 + .../v4/ephys/device/electrode_usage.py | 1 + .../openminds/v4/ephys/device/pipette.py | 1 + .../v4/ephys/device/pipette_usage.py | 1 + .../openminds/v4/ephys/entity/recording.py | 1 + fairgraph/openminds/v4/publications/book.py | 1 + .../openminds/v4/publications/chapter.py | 1 + .../v4/publications/learning_resource.py | 1 + .../openminds/v4/publications/live_paper.py | 1 + .../publications/live_paper_resource_item.py | 1 + .../v4/publications/live_paper_section.py | 1 + .../v4/publications/live_paper_version.py | 1 + .../openminds/v4/publications/periodical.py | 1 + .../v4/publications/scholarly_article.py | 1 + .../openminds/v4/sands/atlas/brain_atlas.py | 1 + .../v4/sands/atlas/brain_atlas_version.py | 1 + .../v4/sands/atlas/common_coordinate_space.py | 1 + .../atlas/common_coordinate_space_version.py | 1 + .../v4/sands/atlas/parcellation_entity.py | 1 + .../atlas/parcellation_entity_version.py | 1 + .../non_atlas/custom_anatomical_entity.py | 1 + .../non_atlas/custom_coordinate_space.py | 1 + .../activity/cranial_window_preparation.py | 1 + .../activity/tissue_culture_preparation.py | 1 + .../activity/tissue_sample_slicing.py | 1 + .../v4/specimen_prep/device/slicing_device.py | 1 + .../device/slicing_device_usage.py | 1 + .../activity/stimulation_activity.py | 1 + .../v4/stimulation/stimulus/ephys_stimulus.py | 1 + .../v5/chemicals/chemical_mixture.py | 1 + .../v5/chemicals/chemical_substance.py | 1 + .../openminds/v5/computation/data_analysis.py | 1 + .../openminds/v5/computation/data_copy.py | 1 + .../openminds/v5/computation/environment.py | 1 + .../v5/computation/generic_computation.py | 1 + .../v5/computation/hardware_system.py | 1 + .../v5/computation/launch_configuration.py | 1 + .../v5/computation/model_validation.py | 1 + .../openminds/v5/computation/optimization.py | 1 + .../v5/computation/service_deployment.py | 1 + .../openminds/v5/computation/simulation.py | 1 + .../v5/computation/software_agent.py | 1 + .../v5/computation/validation_test.py | 1 + .../v5/computation/validation_test_version.py | 1 + .../openminds/v5/computation/visualization.py | 1 + .../v5/computation/workflow_recipe.py | 1 + .../v5/computation/workflow_recipe_version.py | 1 + .../v5/controlled_terms/access_channel.py | 1 + .../access_eligibility_type.py | 1 + .../v5/controlled_terms/access_form.py | 1 + .../controlled_terms/access_process_type.py | 1 + .../v5/controlled_terms/action_status_type.py | 1 + .../v5/controlled_terms/age_category.py | 1 + .../v5/controlled_terms/age_reference.py | 1 + .../v5/controlled_terms/analysis_technique.py | 1 + .../anatomical_axes_orientation.py | 1 + .../v5/controlled_terms/anatomical_cavity.py | 1 + .../anatomical_identification_type.py | 1 + .../v5/controlled_terms/anatomical_plane.py | 1 + .../annotation_criteria_type.py | 1 + .../v5/controlled_terms/annotation_type.py | 1 + .../v5/controlled_terms/atlas_type.py | 1 + .../auditory_stimulus_type.py | 1 + .../v5/controlled_terms/biological_order.py | 1 + .../v5/controlled_terms/biological_process.py | 1 + .../v5/controlled_terms/biological_sex.py | 1 + .../v5/controlled_terms/breeding_type.py | 1 + .../v5/controlled_terms/cell_culture_type.py | 1 + .../v5/controlled_terms/cell_type.py | 1 + .../controlled_terms/chemical_mixture_type.py | 1 + .../openminds/v5/controlled_terms/colormap.py | 1 + .../communication_interface_type.py | 1 + .../communication_protocol.py | 1 + .../v5/controlled_terms/contribution_type.py | 1 + .../cranial_window_construction_type.py | 1 + .../cranial_window_reinforcement_type.py | 1 + .../controlled_terms/criteria_quality_type.py | 1 + .../v5/controlled_terms/data_type.py | 1 + .../v5/controlled_terms/dependency_impact.py | 1 + .../deployment_environment_type.py | 1 + .../controlled_terms/device_mounting_type.py | 1 + .../v5/controlled_terms/device_type.py | 1 + .../v5/controlled_terms/difference_measure.py | 1 + .../openminds/v5/controlled_terms/disease.py | 1 + .../v5/controlled_terms/disease_model.py | 1 + .../v5/controlled_terms/educational_level.py | 1 + .../electrical_stimulus_type.py | 1 + .../controlled_terms/experimental_approach.py | 1 + .../controlled_terms/external_body_region.py | 1 + .../controlled_terms/file_bundle_grouping.py | 1 + .../controlled_terms/file_repository_type.py | 1 + .../v5/controlled_terms/file_usage_role.py | 1 + .../controlled_terms/genetic_strain_type.py | 1 + .../gustatory_stimulus_type.py | 1 + .../v5/controlled_terms/handedness.py | 1 + .../openminds/v5/controlled_terms/language.py | 1 + .../v5/controlled_terms/laterality.py | 1 + .../learning_resource_type.py | 1 + .../v5/controlled_terms/measured_quantity.py | 1 + .../controlled_terms/measured_signal_type.py | 1 + .../controlled_terms/meta_data_model_type.py | 1 + .../model_abstraction_level.py | 1 + .../v5/controlled_terms/model_scope.py | 1 + .../modification_consent_requirement.py | 1 + .../modification_constraint.py | 1 + .../v5/controlled_terms/modification_form.py | 1 + .../v5/controlled_terms/modification_scope.py | 1 + .../v5/controlled_terms/molecular_entity.py | 1 + .../mri_fat_suppression_technique.py | 1 + .../mri_parallel_acquisition_technique.py | 1 + .../v5/controlled_terms/mri_pulse_sequence.py | 1 + .../mri_spoiling_technique.py | 1 + .../v5/controlled_terms/mri_weighting.py | 1 + .../v5/controlled_terms/muscular_structure.py | 1 + .../nervous_system_structure.py | 1 + .../olfactory_stimulus_type.py | 1 + .../v5/controlled_terms/operating_device.py | 1 + .../v5/controlled_terms/operating_system.py | 1 + .../controlled_terms/operational_approach.py | 1 + .../controlled_terms/optical_stimulus_type.py | 1 + .../openminds/v5/controlled_terms/organ.py | 1 + .../organ_system_structure.py | 1 + .../v5/controlled_terms/organism_substance.py | 1 + .../v5/controlled_terms/organism_system.py | 1 + .../v5/controlled_terms/organization_type.py | 1 + .../controlled_terms/patch_clamp_variation.py | 1 + .../v5/controlled_terms/payment_model_type.py | 1 + .../v5/controlled_terms/preparation_type.py | 1 + .../controlled_terms/programming_language.py | 1 + .../v5/controlled_terms/project_type.py | 1 + .../v5/controlled_terms/publication_status.py | 1 + .../v5/controlled_terms/pulse_shape.py | 1 + .../controlled_terms/qualitative_overlap.py | 1 + .../v5/controlled_terms/semantic_data_type.py | 1 + .../v5/controlled_terms/setup_type.py | 1 + .../controlled_terms/signal_directionality.py | 1 + .../v5/controlled_terms/skeletal_structure.py | 1 + .../software_application_category.py | 1 + .../v5/controlled_terms/software_feature.py | 1 + .../v5/controlled_terms/sovereign_state.py | 1 + .../v5/controlled_terms/spatial_encoding.py | 1 + .../openminds/v5/controlled_terms/species.py | 1 + .../controlled_terms/stimulation_approach.py | 1 + .../controlled_terms/stimulation_technique.py | 1 + .../v5/controlled_terms/subcellular_entity.py | 1 + .../v5/controlled_terms/subject_attribute.py | 1 + .../v5/controlled_terms/supranational_body.py | 1 + .../controlled_terms/tactile_stimulus_type.py | 1 + .../v5/controlled_terms/technique.py | 1 + .../v5/controlled_terms/term_suggestion.py | 1 + .../v5/controlled_terms/terminology.py | 1 + .../tissue_sample_attribute.py | 1 + .../v5/controlled_terms/tissue_sample_type.py | 1 + .../v5/controlled_terms/tissue_structure.py | 1 + .../controlled_terms/type_of_uncertainty.py | 1 + .../controlled_terms/unit_of_measurement.py | 1 + .../v5/controlled_terms/vascular_structure.py | 1 + .../controlled_terms/visual_stimulus_type.py | 1 + .../v5/controlled_terms/weight_type.py | 1 + .../openminds/v5/core/actors/consortium.py | 1 + .../openminds/v5/core/actors/organization.py | 1 + fairgraph/openminds/v5/core/actors/person.py | 1 + .../openminds/v5/core/data/content_type.py | 1 + .../v5/core/data/content_type_pattern.py | 1 + fairgraph/openminds/v5/core/data/file.py | 1 + .../openminds/v5/core/data/file_bundle.py | 1 + .../openminds/v5/core/data/file_repository.py | 1 + .../v5/core/data/file_repository_structure.py | 1 + .../openminds/v5/core/data/grid_image.py | 1 + .../v5/core/data/grid_image_sequence.py | 1 + .../v5/core/data/grid_image_stack.py | 1 + .../openminds/v5/core/data/grid_volume.py | 1 + .../v5/core/data/grid_volume_sequence.py | 1 + fairgraph/openminds/v5/core/data/license.py | 1 + .../openminds/v5/core/data/local_file.py | 1 + .../v5/core/data/regular_time_series.py | 1 + .../openminds/v5/core/data/usage_agreement.py | 1 + .../openminds/v5/core/products/dataset.py | 1 + .../v5/core/products/dataset_version.py | 1 + .../v5/core/products/hardware_product.py | 1 + .../openminds/v5/core/products/interface.py | 1 + .../v5/core/products/interface_version.py | 1 + .../v5/core/products/meta_data_model.py | 1 + .../core/products/meta_data_model_version.py | 1 + fairgraph/openminds/v5/core/products/model.py | 1 + .../v5/core/products/model_version.py | 1 + .../openminds/v5/core/products/project.py | 1 + .../openminds/v5/core/products/service.py | 1 + fairgraph/openminds/v5/core/products/setup.py | 1 + .../openminds/v5/core/products/software.py | 1 + .../v5/core/products/software_version.py | 1 + .../v5/core/research/behavioral_protocol.py | 1 + .../v5/core/research/configuration.py | 1 + .../v5/core/research/property_value_list.py | 1 + .../openminds/v5/core/research/protocol.py | 1 + .../v5/core/research/protocol_execution.py | 1 + .../openminds/v5/core/research/strain.py | 1 + .../openminds/v5/core/research/subject.py | 1 + .../v5/core/research/subject_group.py | 1 + .../v5/core/research/subject_group_state.py | 1 + .../v5/core/research/subject_state.py | 1 + .../v5/core/research/tissue_sample.py | 1 + .../core/research/tissue_sample_collection.py | 1 + .../tissue_sample_collection_state.py | 1 + .../v5/core/research/tissue_sample_state.py | 1 + .../v5/ephys/activity/cell_patching.py | 1 + .../v5/ephys/activity/electrode_placement.py | 1 + .../v5/ephys/activity/recording_activity.py | 1 + .../openminds/v5/ephys/device/electrode.py | 1 + .../v5/ephys/device/electrode_array.py | 1 + .../v5/ephys/device/electrode_array_usage.py | 1 + .../v5/ephys/device/electrode_usage.py | 1 + .../openminds/v5/ephys/device/pipette.py | 1 + .../v5/ephys/device/pipette_usage.py | 1 + .../activity/dynamic_mri_acquisition.py | 1 + .../activity/static_mri_acquisition.py | 1 + .../v5/neuroimaging/device/mri_coil.py | 1 + .../v5/neuroimaging/device/mri_coil_usage.py | 1 + .../v5/neuroimaging/device/mri_scanner.py | 1 + .../neuroimaging/device/mri_scanner_usage.py | 1 + fairgraph/openminds/v5/publications/book.py | 1 + .../openminds/v5/publications/chapter.py | 1 + .../v5/publications/learning_resource.py | 1 + .../openminds/v5/publications/live_paper.py | 1 + .../publications/live_paper_resource_item.py | 1 + .../v5/publications/live_paper_section.py | 1 + .../v5/publications/live_paper_version.py | 1 + .../openminds/v5/publications/periodical.py | 1 + .../v5/publications/scholarly_article.py | 1 + .../v5/sands/atlas/anatomical_atlas.py | 1 + .../sands/atlas/anatomical_atlas_version.py | 1 + .../atlas/common_coordinate_framework.py | 1 + .../common_coordinate_framework_version.py | 1 + .../v5/sands/atlas/parcellation_entity.py | 1 + .../atlas/parcellation_entity_version.py | 1 + .../non_atlas/custom_anatomical_entity.py | 1 + .../non_atlas/custom_coordinate_framework.py | 1 + .../activity/cranial_window_preparation.py | 1 + .../activity/tissue_culture_preparation.py | 1 + .../activity/tissue_sample_slicing.py | 1 + .../v5/specimen_prep/device/slicing_device.py | 1 + .../device/slicing_device_usage.py | 1 + .../activity/stimulation_activity.py | 1 + .../v5/stimulation/stimulus/ephys_stimulus.py | 1 + fairgraph/queries.py | 5 +- .../openminds/core/person_newstyle_query.json | 3 +- .../core/person_resolved-1_query.json | 3 +- .../openminds/core/person_simple_query.json | 3 +- test/test_queries.py | 110 ++++++++++++++++++ 394 files changed, 584 insertions(+), 10 deletions(-) diff --git a/builder/fairgraph_module_template.py.txt b/builder/fairgraph_module_template.py.txt index a00d6205..034fd0da 100644 --- a/builder/fairgraph_module_template.py.txt +++ b/builder/fairgraph_module_template.py.txt @@ -43,6 +43,9 @@ class {{ class_name }}({{base_class}}, OM{{ class_name }}): aliases = {{ aliases }} {%- endif %} existence_query_properties = {{ existence_query_properties }} + {%- if sort_property %} + sort_property = "{{ sort_property }}" + {%- endif %} def __init__(self {%- for arg in constructor_arguments -%}, {{arg}}=None{%- endfor -%}, id=None, data=None, space=None, release_status=None): return {{ base_class }}.__init__(self, {{ standard_init_properties }}data=data {%- for arg in constructor_arguments -%}, {{arg}}={{arg}}{%- endfor -%}) diff --git a/builder/update_openminds.py b/builder/update_openminds.py index 3e0cb96b..cc209373 100644 --- a/builder/update_openminds.py +++ b/builder/update_openminds.py @@ -697,6 +697,33 @@ def get_existence_query(cls_name, properties): return tuple(required_property_names) +# The KG query API allows results to be sorted by only one property, at the root level. +# By default we sort by the first of these properties that a class has. +# "short_name" and "abbreviation" are not included since, in openMINDS, they never appear +# without "full_name" or "name"; "synonyms" is not included since it is list-valued. +SORT_PROPERTY_PRIORITY = ("name", "full_name", "lookup_label", "family_name") + +# For some classes the default sort property is not the most useful one. +custom_sort_properties = { + # the lookup label is prefixed by the parcellation (and version), so sorting by it keeps + # entities from the same atlas together, whereas sorting by name would interleave them + "ParcellationEntity": "lookup_label", + "ParcellationEntityVersion": "lookup_label", +} + + +def get_sort_property(cls_name, properties): + property_names = [prop["name"] for prop in properties] + if cls_name in custom_sort_properties: + sort_property = custom_sort_properties[cls_name] + assert sort_property in property_names, f"{cls_name} has no property '{sort_property}'" + return sort_property + for property_name in SORT_PROPERTY_PRIORITY: + if property_name in property_names: + return property_name + return None + + def property_name_sort_key(property_name): """Sort the name prop to be first""" priorities = { @@ -948,6 +975,7 @@ def get_type(prop): "properties": sorted(properties, key=lambda p: p["name"]), "reverse_properties": sorted(reverse_properties, key=lambda p: p["name"]), "existence_query_properties": get_existence_query(class_name, properties), + "sort_property": get_sort_property(class_name, properties) if base_class == "KGObject" else None, "standard_init_properties": standard_init_properties, "additional_methods": additional_methods, "aliases": aliases, diff --git a/doc/contributing.rst b/doc/contributing.rst index 6f6f0c06..cf8b94b5 100644 --- a/doc/contributing.rst +++ b/doc/contributing.rst @@ -129,6 +129,10 @@ Reverse properties (links pointing *into* a class) get their names from the schema introduces a property that has no entry there, generation fails with a :exc:`KeyError` naming the class, and an entry needs to be added. +Each class's ``sort_property``, the property by which query results are sorted, is chosen by +``get_sort_property()`` in :file:`builder/update_openminds.py`: the first property in +``SORT_PROPERTY_PRIORITY`` that the class has, unless the class has an entry in ``custom_sort_properties``. + .. warning:: Everything under :file:`fairgraph/openminds/v4` and :file:`fairgraph/openminds/v5` is diff --git a/doc/queries.rst b/doc/queries.rst index fb121b36..97d93604 100644 --- a/doc/queries.rst +++ b/doc/queries.rst @@ -125,6 +125,32 @@ This returns 10 nodes starting with the 15th. To see how many nodes there are in .. note:: if you consistently retrieve an empty list, it is probably because you do not yet have the necessary permissions. See :doc:`permissions` for more information. +Ordering of results +------------------- + +When results are retrieved using the KG query API (``api="query"``), they are sorted in ascending order, +ignoring case, by a single property of the class, given by its ``sort_property`` attribute:: + + >>> Person.sort_property + 'family_name' + +Nodes that lack a value for this property come first. +The KG allows sorting by only one property, so fairgraph chooses the first of +``name``, ``full_name``, ``lookup_label`` and ``family_name`` that a class has. +The exceptions are :class:`ParcellationEntity` and :class:`ParcellationEntityVersion`, which are sorted by +``lookup_label``: this is prefixed by the parcellation (and version), so entities from the same atlas stay together. +Other name-like properties are not used for sorting: ``short_name`` and ``abbreviation`` are always accompanied +by ``full_name`` or ``name``, and ``synonyms`` has multiple values. +Classes without any of these properties (``sort_property`` is ``None``) are returned in the order the KG supplies. + +When :meth:`list()` is called without filters and without ``follow_links``, it uses the KG core API by default, +and this does not support sorting. For sorted results in this case, pass ``api="query"``:: + + licenses = License.list(client, api="query") + +(The ``ensure_order`` option of :class:`~fairgraph.queries.QueryProperty` is unrelated to this: +it preserves the order of the values of a property with multiple values, rather than sorting the results.) + Filtering/searching =================== diff --git a/doc/release_notes.rst b/doc/release_notes.rst index d500c33c..fbbdd85b 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -41,6 +41,14 @@ Changes in behaviour (the default is ``existence_match="equals"``). With ``recursive=True`` the setting applies to child objects as well. +- Queries generated by fairgraph now sort results by exactly one property, as the KG query API requires. + Previously, classes with both ``name`` and ``lookup_label`` requested sorting by both, and the KG used + whichever came first. The property is now given by each class's new ``sort_property`` attribute. + As a result, :class:`SlicingDevice`, :class:`Electrode`, :class:`ElectrodeArray` and :class:`Pipette` + are now sorted by ``name`` instead of ``lookup_label``, and :class:`Person`, previously unsorted, + is now sorted by ``family_name``. The ordering of results is now described in :doc:`queries` + (`#129 `_). + Bug fixes --------- diff --git a/fairgraph/kgobject.py b/fairgraph/kgobject.py index f479b34a..748571d0 100644 --- a/fairgraph/kgobject.py +++ b/fairgraph/kgobject.py @@ -72,6 +72,9 @@ class KGObject(KGNode, Releasable): # many cases be over-ridden. # It assumes that "name" is unique within instances of a given type, # which may often not be the case. + sort_property: Optional[str] = None + # The property by which results of KG queries are sorted, if any. + # Set in the generated subclasses; see builder/update_openminds.py def __init__( self, @@ -394,6 +397,10 @@ def list( Returns: A list of instances of this class representing the objects returned by the KG query. + With the query API, results are sorted in ascending order, ignoring case, by the property + named in the class's `sort_property` attribute, if it has one. + The core API does not sort results, and is used by default when there are no filters and + no `follow_links`: pass `api="query"` for sorted results. Raises: ValueError: If invalid arguments are passed to the method. @@ -1182,10 +1189,13 @@ def generate_query( ) # second pass, we add filters query.properties.extend(cls.generate_query_filter_properties(normalized_filters)) - # third pass, we add sorting, which can only happen at the top level - for prop in query.properties: - if prop.name in ("name", "fullName", "lookupLabel"): - prop.sorted = True + # third pass, we add sorting, which the KG allows on only one property, at the top level + if cls.sort_property: + sort_path = cls._property_lookup[cls.sort_property].path + for prop in query.properties: + if prop.name == sort_path: + prop.sorted = True + break # implementation note: the three-pass approach generates queries that are sometimes more verbose # than necessary, but it makes the logic easier to understand. return query.serialize() diff --git a/fairgraph/openminds/v4/chemicals/chemical_mixture.py b/fairgraph/openminds/v4/chemicals/chemical_mixture.py index 76921869..0bba9946 100644 --- a/fairgraph/openminds/v4/chemicals/chemical_mixture.py +++ b/fairgraph/openminds/v4/chemicals/chemical_mixture.py @@ -41,6 +41,7 @@ class ChemicalMixture(KGObject, OMChemicalMixture): ), ] existence_query_properties = ("has_parts", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/chemicals/chemical_substance.py b/fairgraph/openminds/v4/chemicals/chemical_substance.py index 63556a9e..e37b12cf 100644 --- a/fairgraph/openminds/v4/chemicals/chemical_substance.py +++ b/fairgraph/openminds/v4/chemicals/chemical_substance.py @@ -36,6 +36,7 @@ class ChemicalSubstance(KGObject, OMChemicalSubstance): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/data_analysis.py b/fairgraph/openminds/v4/computation/data_analysis.py index ae0f659c..d4613e59 100644 --- a/fairgraph/openminds/v4/computation/data_analysis.py +++ b/fairgraph/openminds/v4/computation/data_analysis.py @@ -47,6 +47,7 @@ class DataAnalysis(KGObject, OMDataAnalysis): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/data_copy.py b/fairgraph/openminds/v4/computation/data_copy.py index c9848935..127dd7bf 100644 --- a/fairgraph/openminds/v4/computation/data_copy.py +++ b/fairgraph/openminds/v4/computation/data_copy.py @@ -47,6 +47,7 @@ class DataCopy(KGObject, OMDataCopy): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/environment.py b/fairgraph/openminds/v4/computation/environment.py index c7a279e9..7de65bfb 100644 --- a/fairgraph/openminds/v4/computation/environment.py +++ b/fairgraph/openminds/v4/computation/environment.py @@ -37,6 +37,7 @@ class Environment(KGObject, OMEnvironment): ), ] existence_query_properties = ("hardware", "name") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/generic_computation.py b/fairgraph/openminds/v4/computation/generic_computation.py index 6c816f28..b914f6bc 100644 --- a/fairgraph/openminds/v4/computation/generic_computation.py +++ b/fairgraph/openminds/v4/computation/generic_computation.py @@ -47,6 +47,7 @@ class GenericComputation(KGObject, OMGenericComputation): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/hardware_system.py b/fairgraph/openminds/v4/computation/hardware_system.py index 26ade465..c03d0596 100644 --- a/fairgraph/openminds/v4/computation/hardware_system.py +++ b/fairgraph/openminds/v4/computation/hardware_system.py @@ -28,6 +28,7 @@ class HardwareSystem(KGObject, OMHardwareSystem): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/launch_configuration.py b/fairgraph/openminds/v4/computation/launch_configuration.py index c06d831c..51755138 100644 --- a/fairgraph/openminds/v4/computation/launch_configuration.py +++ b/fairgraph/openminds/v4/computation/launch_configuration.py @@ -37,6 +37,7 @@ class LaunchConfiguration(KGObject, OMLaunchConfiguration): ] aliases = {"environment_variables": "environment_variable"} existence_query_properties = ("executable", "name") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/local_file.py b/fairgraph/openminds/v4/computation/local_file.py index f38aed4b..8fd6aa4c 100644 --- a/fairgraph/openminds/v4/computation/local_file.py +++ b/fairgraph/openminds/v4/computation/local_file.py @@ -44,6 +44,7 @@ class LocalFile(KGObject, OMLocalFile): ), ] existence_query_properties = ("name", "hashes") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/model_validation.py b/fairgraph/openminds/v4/computation/model_validation.py index 9735711e..b8f1f570 100644 --- a/fairgraph/openminds/v4/computation/model_validation.py +++ b/fairgraph/openminds/v4/computation/model_validation.py @@ -48,6 +48,7 @@ class ModelValidation(KGObject, OMModelValidation): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/optimization.py b/fairgraph/openminds/v4/computation/optimization.py index deb15703..763a7068 100644 --- a/fairgraph/openminds/v4/computation/optimization.py +++ b/fairgraph/openminds/v4/computation/optimization.py @@ -47,6 +47,7 @@ class Optimization(KGObject, OMOptimization): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/simulation.py b/fairgraph/openminds/v4/computation/simulation.py index 5562e89e..5dfc6a84 100644 --- a/fairgraph/openminds/v4/computation/simulation.py +++ b/fairgraph/openminds/v4/computation/simulation.py @@ -47,6 +47,7 @@ class Simulation(KGObject, OMSimulation): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/software_agent.py b/fairgraph/openminds/v4/computation/software_agent.py index fd8b3621..47775b9e 100644 --- a/fairgraph/openminds/v4/computation/software_agent.py +++ b/fairgraph/openminds/v4/computation/software_agent.py @@ -54,6 +54,7 @@ class SoftwareAgent(KGObject, OMSoftwareAgent): ), ] existence_query_properties = ("name", "software") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/validation_test.py b/fairgraph/openminds/v4/computation/validation_test.py index 72b6438f..d3d457e5 100644 --- a/fairgraph/openminds/v4/computation/validation_test.py +++ b/fairgraph/openminds/v4/computation/validation_test.py @@ -48,6 +48,7 @@ class ValidationTest(KGObject, OMValidationTest): ] aliases = {"name": "full_name", "versions": "has_versions", "model_scope": "scope", "alias": "short_name"} existence_query_properties = ("full_name", "short_name") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/validation_test_version.py b/fairgraph/openminds/v4/computation/validation_test_version.py index 66f112d9..2568a1f2 100644 --- a/fairgraph/openminds/v4/computation/validation_test_version.py +++ b/fairgraph/openminds/v4/computation/validation_test_version.py @@ -73,6 +73,7 @@ class ValidationTestVersion(KGObject, OMValidationTestVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/visualization.py b/fairgraph/openminds/v4/computation/visualization.py index b9d1e1a0..257886e4 100644 --- a/fairgraph/openminds/v4/computation/visualization.py +++ b/fairgraph/openminds/v4/computation/visualization.py @@ -47,6 +47,7 @@ class Visualization(KGObject, OMVisualization): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/workflow_recipe.py b/fairgraph/openminds/v4/computation/workflow_recipe.py index 21e4160d..537bc341 100644 --- a/fairgraph/openminds/v4/computation/workflow_recipe.py +++ b/fairgraph/openminds/v4/computation/workflow_recipe.py @@ -48,6 +48,7 @@ class WorkflowRecipe(KGObject, OMWorkflowRecipe): ] aliases = {"name": "full_name", "versions": "has_versions", "alias": "short_name"} existence_query_properties = ("full_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/computation/workflow_recipe_version.py b/fairgraph/openminds/v4/computation/workflow_recipe_version.py index 542e2ff3..df30240e 100644 --- a/fairgraph/openminds/v4/computation/workflow_recipe_version.py +++ b/fairgraph/openminds/v4/computation/workflow_recipe_version.py @@ -82,6 +82,7 @@ class WorkflowRecipeVersion(KGObject, OMWorkflowRecipeVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("full_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/action_status_type.py b/fairgraph/openminds/v4/controlled_terms/action_status_type.py index b05ee0b0..93b2898a 100644 --- a/fairgraph/openminds/v4/controlled_terms/action_status_type.py +++ b/fairgraph/openminds/v4/controlled_terms/action_status_type.py @@ -62,6 +62,7 @@ class ActionStatusType(KGObject, OMActionStatusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/age_category.py b/fairgraph/openminds/v4/controlled_terms/age_category.py index f3041a70..5406d88a 100644 --- a/fairgraph/openminds/v4/controlled_terms/age_category.py +++ b/fairgraph/openminds/v4/controlled_terms/age_category.py @@ -54,6 +54,7 @@ class AgeCategory(KGObject, OMAgeCategory): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/analysis_technique.py b/fairgraph/openminds/v4/controlled_terms/analysis_technique.py index b32d95a4..17649a29 100644 --- a/fairgraph/openminds/v4/controlled_terms/analysis_technique.py +++ b/fairgraph/openminds/v4/controlled_terms/analysis_technique.py @@ -71,6 +71,7 @@ class AnalysisTechnique(KGObject, OMAnalysisTechnique): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/anatomical_axes_orientation.py b/fairgraph/openminds/v4/controlled_terms/anatomical_axes_orientation.py index a23acfbd..15681a87 100644 --- a/fairgraph/openminds/v4/controlled_terms/anatomical_axes_orientation.py +++ b/fairgraph/openminds/v4/controlled_terms/anatomical_axes_orientation.py @@ -54,6 +54,7 @@ class AnatomicalAxesOrientation(KGObject, OMAnatomicalAxesOrientation): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/anatomical_identification_type.py b/fairgraph/openminds/v4/controlled_terms/anatomical_identification_type.py index 27a054f3..72c48fdc 100644 --- a/fairgraph/openminds/v4/controlled_terms/anatomical_identification_type.py +++ b/fairgraph/openminds/v4/controlled_terms/anatomical_identification_type.py @@ -54,6 +54,7 @@ class AnatomicalIdentificationType(KGObject, OMAnatomicalIdentificationType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/anatomical_plane.py b/fairgraph/openminds/v4/controlled_terms/anatomical_plane.py index 13a02915..4e774eb5 100644 --- a/fairgraph/openminds/v4/controlled_terms/anatomical_plane.py +++ b/fairgraph/openminds/v4/controlled_terms/anatomical_plane.py @@ -54,6 +54,7 @@ class AnatomicalPlane(KGObject, OMAnatomicalPlane): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/annotation_criteria_type.py b/fairgraph/openminds/v4/controlled_terms/annotation_criteria_type.py index e80a9435..fec7980a 100644 --- a/fairgraph/openminds/v4/controlled_terms/annotation_criteria_type.py +++ b/fairgraph/openminds/v4/controlled_terms/annotation_criteria_type.py @@ -54,6 +54,7 @@ class AnnotationCriteriaType(KGObject, OMAnnotationCriteriaType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/annotation_type.py b/fairgraph/openminds/v4/controlled_terms/annotation_type.py index 6fc9faa6..ef7fc83a 100644 --- a/fairgraph/openminds/v4/controlled_terms/annotation_type.py +++ b/fairgraph/openminds/v4/controlled_terms/annotation_type.py @@ -54,6 +54,7 @@ class AnnotationType(KGObject, OMAnnotationType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/atlas_type.py b/fairgraph/openminds/v4/controlled_terms/atlas_type.py index 5a85f6ea..b834f554 100644 --- a/fairgraph/openminds/v4/controlled_terms/atlas_type.py +++ b/fairgraph/openminds/v4/controlled_terms/atlas_type.py @@ -53,6 +53,7 @@ class AtlasType(KGObject, OMAtlasType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/auditory_stimulus_type.py b/fairgraph/openminds/v4/controlled_terms/auditory_stimulus_type.py index dc3cb813..3a6bba98 100644 --- a/fairgraph/openminds/v4/controlled_terms/auditory_stimulus_type.py +++ b/fairgraph/openminds/v4/controlled_terms/auditory_stimulus_type.py @@ -88,6 +88,7 @@ class AuditoryStimulusType(KGObject, OMAuditoryStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/biological_order.py b/fairgraph/openminds/v4/controlled_terms/biological_order.py index 11b60969..1d9c3ec8 100644 --- a/fairgraph/openminds/v4/controlled_terms/biological_order.py +++ b/fairgraph/openminds/v4/controlled_terms/biological_order.py @@ -80,6 +80,7 @@ class BiologicalOrder(KGObject, OMBiologicalOrder): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/biological_process.py b/fairgraph/openminds/v4/controlled_terms/biological_process.py index fa51d332..6540f6b5 100644 --- a/fairgraph/openminds/v4/controlled_terms/biological_process.py +++ b/fairgraph/openminds/v4/controlled_terms/biological_process.py @@ -46,6 +46,7 @@ class BiologicalProcess(KGObject, OMBiologicalProcess): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/biological_sex.py b/fairgraph/openminds/v4/controlled_terms/biological_sex.py index 9f201df9..df877610 100644 --- a/fairgraph/openminds/v4/controlled_terms/biological_sex.py +++ b/fairgraph/openminds/v4/controlled_terms/biological_sex.py @@ -93,6 +93,7 @@ class BiologicalSex(KGObject, OMBiologicalSex): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/breeding_type.py b/fairgraph/openminds/v4/controlled_terms/breeding_type.py index 59619ee3..76e6c52d 100644 --- a/fairgraph/openminds/v4/controlled_terms/breeding_type.py +++ b/fairgraph/openminds/v4/controlled_terms/breeding_type.py @@ -88,6 +88,7 @@ class BreedingType(KGObject, OMBreedingType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/cell_culture_type.py b/fairgraph/openminds/v4/controlled_terms/cell_culture_type.py index de8c5ce5..3c1d2c61 100644 --- a/fairgraph/openminds/v4/controlled_terms/cell_culture_type.py +++ b/fairgraph/openminds/v4/controlled_terms/cell_culture_type.py @@ -80,6 +80,7 @@ class CellCultureType(KGObject, OMCellCultureType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/cell_type.py b/fairgraph/openminds/v4/controlled_terms/cell_type.py index fcfc8aa9..4f3839ef 100644 --- a/fairgraph/openminds/v4/controlled_terms/cell_type.py +++ b/fairgraph/openminds/v4/controlled_terms/cell_type.py @@ -108,6 +108,7 @@ class CellType(KGObject, OMCellType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/chemical_mixture_type.py b/fairgraph/openminds/v4/controlled_terms/chemical_mixture_type.py index ae8c857d..6993dcfc 100644 --- a/fairgraph/openminds/v4/controlled_terms/chemical_mixture_type.py +++ b/fairgraph/openminds/v4/controlled_terms/chemical_mixture_type.py @@ -54,6 +54,7 @@ class ChemicalMixtureType(KGObject, OMChemicalMixtureType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/colormap.py b/fairgraph/openminds/v4/controlled_terms/colormap.py index 96eaef14..dda7d7a0 100644 --- a/fairgraph/openminds/v4/controlled_terms/colormap.py +++ b/fairgraph/openminds/v4/controlled_terms/colormap.py @@ -46,6 +46,7 @@ class Colormap(KGObject, OMColormap): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/contribution_type.py b/fairgraph/openminds/v4/controlled_terms/contribution_type.py index 999a3d19..9158a5a5 100644 --- a/fairgraph/openminds/v4/controlled_terms/contribution_type.py +++ b/fairgraph/openminds/v4/controlled_terms/contribution_type.py @@ -46,6 +46,7 @@ class ContributionType(KGObject, OMContributionType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/cranial_window_construction_type.py b/fairgraph/openminds/v4/controlled_terms/cranial_window_construction_type.py index b3797597..7eaf3ab2 100644 --- a/fairgraph/openminds/v4/controlled_terms/cranial_window_construction_type.py +++ b/fairgraph/openminds/v4/controlled_terms/cranial_window_construction_type.py @@ -54,6 +54,7 @@ class CranialWindowConstructionType(KGObject, OMCranialWindowConstructionType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/cranial_window_reinforcement_type.py b/fairgraph/openminds/v4/controlled_terms/cranial_window_reinforcement_type.py index bc651abb..40adfd66 100644 --- a/fairgraph/openminds/v4/controlled_terms/cranial_window_reinforcement_type.py +++ b/fairgraph/openminds/v4/controlled_terms/cranial_window_reinforcement_type.py @@ -54,6 +54,7 @@ class CranialWindowReinforcementType(KGObject, OMCranialWindowReinforcementType) ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/criteria_quality_type.py b/fairgraph/openminds/v4/controlled_terms/criteria_quality_type.py index 25d7988a..ea37fc21 100644 --- a/fairgraph/openminds/v4/controlled_terms/criteria_quality_type.py +++ b/fairgraph/openminds/v4/controlled_terms/criteria_quality_type.py @@ -54,6 +54,7 @@ class CriteriaQualityType(KGObject, OMCriteriaQualityType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/data_type.py b/fairgraph/openminds/v4/controlled_terms/data_type.py index 7ce79715..02a64f5c 100644 --- a/fairgraph/openminds/v4/controlled_terms/data_type.py +++ b/fairgraph/openminds/v4/controlled_terms/data_type.py @@ -54,6 +54,7 @@ class DataType(KGObject, OMDataType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/device_type.py b/fairgraph/openminds/v4/controlled_terms/device_type.py index b0a24d06..17bd2ed8 100644 --- a/fairgraph/openminds/v4/controlled_terms/device_type.py +++ b/fairgraph/openminds/v4/controlled_terms/device_type.py @@ -59,6 +59,7 @@ class DeviceType(KGObject, OMDeviceType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/difference_measure.py b/fairgraph/openminds/v4/controlled_terms/difference_measure.py index afcb03cd..889e9c05 100644 --- a/fairgraph/openminds/v4/controlled_terms/difference_measure.py +++ b/fairgraph/openminds/v4/controlled_terms/difference_measure.py @@ -54,6 +54,7 @@ class DifferenceMeasure(KGObject, OMDifferenceMeasure): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/disease.py b/fairgraph/openminds/v4/controlled_terms/disease.py index eeb2b105..487c5d9b 100644 --- a/fairgraph/openminds/v4/controlled_terms/disease.py +++ b/fairgraph/openminds/v4/controlled_terms/disease.py @@ -101,6 +101,7 @@ class Disease(KGObject, OMDisease): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/disease_model.py b/fairgraph/openminds/v4/controlled_terms/disease_model.py index 391753f7..31800779 100644 --- a/fairgraph/openminds/v4/controlled_terms/disease_model.py +++ b/fairgraph/openminds/v4/controlled_terms/disease_model.py @@ -101,6 +101,7 @@ class DiseaseModel(KGObject, OMDiseaseModel): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/educational_level.py b/fairgraph/openminds/v4/controlled_terms/educational_level.py index f9769a2d..62412194 100644 --- a/fairgraph/openminds/v4/controlled_terms/educational_level.py +++ b/fairgraph/openminds/v4/controlled_terms/educational_level.py @@ -46,6 +46,7 @@ class EducationalLevel(KGObject, OMEducationalLevel): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/electrical_stimulus_type.py b/fairgraph/openminds/v4/controlled_terms/electrical_stimulus_type.py index 67a2e4bf..9f10944c 100644 --- a/fairgraph/openminds/v4/controlled_terms/electrical_stimulus_type.py +++ b/fairgraph/openminds/v4/controlled_terms/electrical_stimulus_type.py @@ -96,6 +96,7 @@ class ElectricalStimulusType(KGObject, OMElectricalStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/ethics_assessment.py b/fairgraph/openminds/v4/controlled_terms/ethics_assessment.py index fe12b1f9..62f26f3a 100644 --- a/fairgraph/openminds/v4/controlled_terms/ethics_assessment.py +++ b/fairgraph/openminds/v4/controlled_terms/ethics_assessment.py @@ -46,6 +46,7 @@ class EthicsAssessment(KGObject, OMEthicsAssessment): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/experimental_approach.py b/fairgraph/openminds/v4/controlled_terms/experimental_approach.py index 1c649b42..08cac955 100644 --- a/fairgraph/openminds/v4/controlled_terms/experimental_approach.py +++ b/fairgraph/openminds/v4/controlled_terms/experimental_approach.py @@ -46,6 +46,7 @@ class ExperimentalApproach(KGObject, OMExperimentalApproach): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/file_bundle_grouping.py b/fairgraph/openminds/v4/controlled_terms/file_bundle_grouping.py index 5a19c745..c24b09a8 100644 --- a/fairgraph/openminds/v4/controlled_terms/file_bundle_grouping.py +++ b/fairgraph/openminds/v4/controlled_terms/file_bundle_grouping.py @@ -62,6 +62,7 @@ class FileBundleGrouping(KGObject, OMFileBundleGrouping): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/file_repository_type.py b/fairgraph/openminds/v4/controlled_terms/file_repository_type.py index f84569da..86f59478 100644 --- a/fairgraph/openminds/v4/controlled_terms/file_repository_type.py +++ b/fairgraph/openminds/v4/controlled_terms/file_repository_type.py @@ -54,6 +54,7 @@ class FileRepositoryType(KGObject, OMFileRepositoryType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/file_usage_role.py b/fairgraph/openminds/v4/controlled_terms/file_usage_role.py index 826cc9f6..7c80f21e 100644 --- a/fairgraph/openminds/v4/controlled_terms/file_usage_role.py +++ b/fairgraph/openminds/v4/controlled_terms/file_usage_role.py @@ -54,6 +54,7 @@ class FileUsageRole(KGObject, OMFileUsageRole): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/genetic_strain_type.py b/fairgraph/openminds/v4/controlled_terms/genetic_strain_type.py index 5fcd8794..f5975be6 100644 --- a/fairgraph/openminds/v4/controlled_terms/genetic_strain_type.py +++ b/fairgraph/openminds/v4/controlled_terms/genetic_strain_type.py @@ -88,6 +88,7 @@ class GeneticStrainType(KGObject, OMGeneticStrainType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/gustatory_stimulus_type.py b/fairgraph/openminds/v4/controlled_terms/gustatory_stimulus_type.py index 26f784fd..75e80c10 100644 --- a/fairgraph/openminds/v4/controlled_terms/gustatory_stimulus_type.py +++ b/fairgraph/openminds/v4/controlled_terms/gustatory_stimulus_type.py @@ -88,6 +88,7 @@ class GustatoryStimulusType(KGObject, OMGustatoryStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/handedness.py b/fairgraph/openminds/v4/controlled_terms/handedness.py index 83398ce7..9f5e0189 100644 --- a/fairgraph/openminds/v4/controlled_terms/handedness.py +++ b/fairgraph/openminds/v4/controlled_terms/handedness.py @@ -88,6 +88,7 @@ class Handedness(KGObject, OMHandedness): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/language.py b/fairgraph/openminds/v4/controlled_terms/language.py index 3758eb4b..8636bf87 100644 --- a/fairgraph/openminds/v4/controlled_terms/language.py +++ b/fairgraph/openminds/v4/controlled_terms/language.py @@ -53,6 +53,7 @@ class Language(KGObject, OMLanguage): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/laterality.py b/fairgraph/openminds/v4/controlled_terms/laterality.py index 8e480cad..cc906a19 100644 --- a/fairgraph/openminds/v4/controlled_terms/laterality.py +++ b/fairgraph/openminds/v4/controlled_terms/laterality.py @@ -59,6 +59,7 @@ class Laterality(KGObject, OMLaterality): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/learning_resource_type.py b/fairgraph/openminds/v4/controlled_terms/learning_resource_type.py index 0d79d343..db502ee7 100644 --- a/fairgraph/openminds/v4/controlled_terms/learning_resource_type.py +++ b/fairgraph/openminds/v4/controlled_terms/learning_resource_type.py @@ -53,6 +53,7 @@ class LearningResourceType(KGObject, OMLearningResourceType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/measured_quantity.py b/fairgraph/openminds/v4/controlled_terms/measured_quantity.py index 88aff737..7a095a4f 100644 --- a/fairgraph/openminds/v4/controlled_terms/measured_quantity.py +++ b/fairgraph/openminds/v4/controlled_terms/measured_quantity.py @@ -54,6 +54,7 @@ class MeasuredQuantity(KGObject, OMMeasuredQuantity): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/measured_signal_type.py b/fairgraph/openminds/v4/controlled_terms/measured_signal_type.py index e55ac4fe..a4d5ed06 100644 --- a/fairgraph/openminds/v4/controlled_terms/measured_signal_type.py +++ b/fairgraph/openminds/v4/controlled_terms/measured_signal_type.py @@ -46,6 +46,7 @@ class MeasuredSignalType(KGObject, OMMeasuredSignalType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/meta_data_model_type.py b/fairgraph/openminds/v4/controlled_terms/meta_data_model_type.py index ebd74308..f04e7a3c 100644 --- a/fairgraph/openminds/v4/controlled_terms/meta_data_model_type.py +++ b/fairgraph/openminds/v4/controlled_terms/meta_data_model_type.py @@ -53,6 +53,7 @@ class MetaDataModelType(KGObject, OMMetaDataModelType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/model_abstraction_level.py b/fairgraph/openminds/v4/controlled_terms/model_abstraction_level.py index d5a732e6..11e25a3d 100644 --- a/fairgraph/openminds/v4/controlled_terms/model_abstraction_level.py +++ b/fairgraph/openminds/v4/controlled_terms/model_abstraction_level.py @@ -54,6 +54,7 @@ class ModelAbstractionLevel(KGObject, OMModelAbstractionLevel): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/model_scope.py b/fairgraph/openminds/v4/controlled_terms/model_scope.py index fb4b21af..d3f87e6f 100644 --- a/fairgraph/openminds/v4/controlled_terms/model_scope.py +++ b/fairgraph/openminds/v4/controlled_terms/model_scope.py @@ -54,6 +54,7 @@ class ModelScope(KGObject, OMModelScope): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/molecular_entity.py b/fairgraph/openminds/v4/controlled_terms/molecular_entity.py index 2fe40a1b..f440e0ae 100644 --- a/fairgraph/openminds/v4/controlled_terms/molecular_entity.py +++ b/fairgraph/openminds/v4/controlled_terms/molecular_entity.py @@ -101,6 +101,7 @@ class MolecularEntity(KGObject, OMMolecularEntity): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/mri_pulse_sequence.py b/fairgraph/openminds/v4/controlled_terms/mri_pulse_sequence.py index 971e7872..bdbcf85a 100644 --- a/fairgraph/openminds/v4/controlled_terms/mri_pulse_sequence.py +++ b/fairgraph/openminds/v4/controlled_terms/mri_pulse_sequence.py @@ -61,6 +61,7 @@ class MRIPulseSequence(KGObject, OMMRIPulseSequence): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/mri_weighting.py b/fairgraph/openminds/v4/controlled_terms/mri_weighting.py index 5fcb8dc0..a52de134 100644 --- a/fairgraph/openminds/v4/controlled_terms/mri_weighting.py +++ b/fairgraph/openminds/v4/controlled_terms/mri_weighting.py @@ -61,6 +61,7 @@ class MRIWeighting(KGObject, OMMRIWeighting): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/olfactory_stimulus_type.py b/fairgraph/openminds/v4/controlled_terms/olfactory_stimulus_type.py index 6e039052..c6552ac8 100644 --- a/fairgraph/openminds/v4/controlled_terms/olfactory_stimulus_type.py +++ b/fairgraph/openminds/v4/controlled_terms/olfactory_stimulus_type.py @@ -88,6 +88,7 @@ class OlfactoryStimulusType(KGObject, OMOlfactoryStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/operating_device.py b/fairgraph/openminds/v4/controlled_terms/operating_device.py index b23ab67f..de6e2efe 100644 --- a/fairgraph/openminds/v4/controlled_terms/operating_device.py +++ b/fairgraph/openminds/v4/controlled_terms/operating_device.py @@ -46,6 +46,7 @@ class OperatingDevice(KGObject, OMOperatingDevice): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/operating_system.py b/fairgraph/openminds/v4/controlled_terms/operating_system.py index d6271ca0..974f6718 100644 --- a/fairgraph/openminds/v4/controlled_terms/operating_system.py +++ b/fairgraph/openminds/v4/controlled_terms/operating_system.py @@ -53,6 +53,7 @@ class OperatingSystem(KGObject, OMOperatingSystem): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/optical_stimulus_type.py b/fairgraph/openminds/v4/controlled_terms/optical_stimulus_type.py index 85fde1dc..3fcc2e13 100644 --- a/fairgraph/openminds/v4/controlled_terms/optical_stimulus_type.py +++ b/fairgraph/openminds/v4/controlled_terms/optical_stimulus_type.py @@ -88,6 +88,7 @@ class OpticalStimulusType(KGObject, OMOpticalStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/organ.py b/fairgraph/openminds/v4/controlled_terms/organ.py index 5af3cfc9..e7f1f935 100644 --- a/fairgraph/openminds/v4/controlled_terms/organ.py +++ b/fairgraph/openminds/v4/controlled_terms/organ.py @@ -116,6 +116,7 @@ class Organ(KGObject, OMOrgan): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/organism_substance.py b/fairgraph/openminds/v4/controlled_terms/organism_substance.py index 0aeb94c2..0a8227fe 100644 --- a/fairgraph/openminds/v4/controlled_terms/organism_substance.py +++ b/fairgraph/openminds/v4/controlled_terms/organism_substance.py @@ -108,6 +108,7 @@ class OrganismSubstance(KGObject, OMOrganismSubstance): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/organism_system.py b/fairgraph/openminds/v4/controlled_terms/organism_system.py index 5c993465..016b5586 100644 --- a/fairgraph/openminds/v4/controlled_terms/organism_system.py +++ b/fairgraph/openminds/v4/controlled_terms/organism_system.py @@ -80,6 +80,7 @@ class OrganismSystem(KGObject, OMOrganismSystem): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/patch_clamp_variation.py b/fairgraph/openminds/v4/controlled_terms/patch_clamp_variation.py index ec0959e7..ac0753a7 100644 --- a/fairgraph/openminds/v4/controlled_terms/patch_clamp_variation.py +++ b/fairgraph/openminds/v4/controlled_terms/patch_clamp_variation.py @@ -54,6 +54,7 @@ class PatchClampVariation(KGObject, OMPatchClampVariation): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/preparation_type.py b/fairgraph/openminds/v4/controlled_terms/preparation_type.py index 7bad5a3a..96040ac7 100644 --- a/fairgraph/openminds/v4/controlled_terms/preparation_type.py +++ b/fairgraph/openminds/v4/controlled_terms/preparation_type.py @@ -63,6 +63,7 @@ class PreparationType(KGObject, OMPreparationType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/product_accessibility.py b/fairgraph/openminds/v4/controlled_terms/product_accessibility.py index c4c03090..791c2ec8 100644 --- a/fairgraph/openminds/v4/controlled_terms/product_accessibility.py +++ b/fairgraph/openminds/v4/controlled_terms/product_accessibility.py @@ -46,6 +46,7 @@ class ProductAccessibility(KGObject, OMProductAccessibility): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/programming_language.py b/fairgraph/openminds/v4/controlled_terms/programming_language.py index ebc975b6..c392abf5 100644 --- a/fairgraph/openminds/v4/controlled_terms/programming_language.py +++ b/fairgraph/openminds/v4/controlled_terms/programming_language.py @@ -53,6 +53,7 @@ class ProgrammingLanguage(KGObject, OMProgrammingLanguage): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/qualitative_overlap.py b/fairgraph/openminds/v4/controlled_terms/qualitative_overlap.py index 5a04c0a3..6773cfeb 100644 --- a/fairgraph/openminds/v4/controlled_terms/qualitative_overlap.py +++ b/fairgraph/openminds/v4/controlled_terms/qualitative_overlap.py @@ -46,6 +46,7 @@ class QualitativeOverlap(KGObject, OMQualitativeOverlap): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/semantic_data_type.py b/fairgraph/openminds/v4/controlled_terms/semantic_data_type.py index 19648add..9ef5a0f4 100644 --- a/fairgraph/openminds/v4/controlled_terms/semantic_data_type.py +++ b/fairgraph/openminds/v4/controlled_terms/semantic_data_type.py @@ -46,6 +46,7 @@ class SemanticDataType(KGObject, OMSemanticDataType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/service.py b/fairgraph/openminds/v4/controlled_terms/service.py index 9180fd13..daa22e67 100644 --- a/fairgraph/openminds/v4/controlled_terms/service.py +++ b/fairgraph/openminds/v4/controlled_terms/service.py @@ -54,6 +54,7 @@ class Service(KGObject, OMService): ), ] existence_query_properties = ("short_name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/setup_type.py b/fairgraph/openminds/v4/controlled_terms/setup_type.py index 7a350ffb..6b97fc23 100644 --- a/fairgraph/openminds/v4/controlled_terms/setup_type.py +++ b/fairgraph/openminds/v4/controlled_terms/setup_type.py @@ -54,6 +54,7 @@ class SetupType(KGObject, OMSetupType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/software_application_category.py b/fairgraph/openminds/v4/controlled_terms/software_application_category.py index 496320de..b775220c 100644 --- a/fairgraph/openminds/v4/controlled_terms/software_application_category.py +++ b/fairgraph/openminds/v4/controlled_terms/software_application_category.py @@ -46,6 +46,7 @@ class SoftwareApplicationCategory(KGObject, OMSoftwareApplicationCategory): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/software_feature.py b/fairgraph/openminds/v4/controlled_terms/software_feature.py index 78f700c7..e66cc3fe 100644 --- a/fairgraph/openminds/v4/controlled_terms/software_feature.py +++ b/fairgraph/openminds/v4/controlled_terms/software_feature.py @@ -46,6 +46,7 @@ class SoftwareFeature(KGObject, OMSoftwareFeature): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/species.py b/fairgraph/openminds/v4/controlled_terms/species.py index 85330c6c..6ad9a81d 100644 --- a/fairgraph/openminds/v4/controlled_terms/species.py +++ b/fairgraph/openminds/v4/controlled_terms/species.py @@ -102,6 +102,7 @@ class Species(KGObject, OMSpecies): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/stimulation_approach.py b/fairgraph/openminds/v4/controlled_terms/stimulation_approach.py index 73cedf0d..63fbb342 100644 --- a/fairgraph/openminds/v4/controlled_terms/stimulation_approach.py +++ b/fairgraph/openminds/v4/controlled_terms/stimulation_approach.py @@ -61,6 +61,7 @@ class StimulationApproach(KGObject, OMStimulationApproach): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/stimulation_technique.py b/fairgraph/openminds/v4/controlled_terms/stimulation_technique.py index 78a9aabb..2be5047c 100644 --- a/fairgraph/openminds/v4/controlled_terms/stimulation_technique.py +++ b/fairgraph/openminds/v4/controlled_terms/stimulation_technique.py @@ -61,6 +61,7 @@ class StimulationTechnique(KGObject, OMStimulationTechnique): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/subcellular_entity.py b/fairgraph/openminds/v4/controlled_terms/subcellular_entity.py index 3245a0fe..c3414aec 100644 --- a/fairgraph/openminds/v4/controlled_terms/subcellular_entity.py +++ b/fairgraph/openminds/v4/controlled_terms/subcellular_entity.py @@ -102,6 +102,7 @@ class SubcellularEntity(KGObject, OMSubcellularEntity): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/subject_attribute.py b/fairgraph/openminds/v4/controlled_terms/subject_attribute.py index 75c1887d..b6e42bc4 100644 --- a/fairgraph/openminds/v4/controlled_terms/subject_attribute.py +++ b/fairgraph/openminds/v4/controlled_terms/subject_attribute.py @@ -54,6 +54,7 @@ class SubjectAttribute(KGObject, OMSubjectAttribute): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/tactile_stimulus_type.py b/fairgraph/openminds/v4/controlled_terms/tactile_stimulus_type.py index d5173678..1fa4b24a 100644 --- a/fairgraph/openminds/v4/controlled_terms/tactile_stimulus_type.py +++ b/fairgraph/openminds/v4/controlled_terms/tactile_stimulus_type.py @@ -88,6 +88,7 @@ class TactileStimulusType(KGObject, OMTactileStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/technique.py b/fairgraph/openminds/v4/controlled_terms/technique.py index 7b9a6825..37caaafb 100644 --- a/fairgraph/openminds/v4/controlled_terms/technique.py +++ b/fairgraph/openminds/v4/controlled_terms/technique.py @@ -69,6 +69,7 @@ class Technique(KGObject, OMTechnique): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/term_suggestion.py b/fairgraph/openminds/v4/controlled_terms/term_suggestion.py index 53d7a532..85d32ee4 100644 --- a/fairgraph/openminds/v4/controlled_terms/term_suggestion.py +++ b/fairgraph/openminds/v4/controlled_terms/term_suggestion.py @@ -80,6 +80,7 @@ class TermSuggestion(KGObject, OMTermSuggestion): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/terminology.py b/fairgraph/openminds/v4/controlled_terms/terminology.py index a274374f..2eb55d9e 100644 --- a/fairgraph/openminds/v4/controlled_terms/terminology.py +++ b/fairgraph/openminds/v4/controlled_terms/terminology.py @@ -54,6 +54,7 @@ class Terminology(KGObject, OMTerminology): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/tissue_sample_attribute.py b/fairgraph/openminds/v4/controlled_terms/tissue_sample_attribute.py index b671fd08..a52a5609 100644 --- a/fairgraph/openminds/v4/controlled_terms/tissue_sample_attribute.py +++ b/fairgraph/openminds/v4/controlled_terms/tissue_sample_attribute.py @@ -54,6 +54,7 @@ class TissueSampleAttribute(KGObject, OMTissueSampleAttribute): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/tissue_sample_type.py b/fairgraph/openminds/v4/controlled_terms/tissue_sample_type.py index 4eda40e9..120952eb 100644 --- a/fairgraph/openminds/v4/controlled_terms/tissue_sample_type.py +++ b/fairgraph/openminds/v4/controlled_terms/tissue_sample_type.py @@ -88,6 +88,7 @@ class TissueSampleType(KGObject, OMTissueSampleType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/type_of_uncertainty.py b/fairgraph/openminds/v4/controlled_terms/type_of_uncertainty.py index 8bd3658b..43adba16 100644 --- a/fairgraph/openminds/v4/controlled_terms/type_of_uncertainty.py +++ b/fairgraph/openminds/v4/controlled_terms/type_of_uncertainty.py @@ -54,6 +54,7 @@ class TypeOfUncertainty(KGObject, OMTypeOfUncertainty): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/uberon_parcellation.py b/fairgraph/openminds/v4/controlled_terms/uberon_parcellation.py index aa5a5962..89f6a92b 100644 --- a/fairgraph/openminds/v4/controlled_terms/uberon_parcellation.py +++ b/fairgraph/openminds/v4/controlled_terms/uberon_parcellation.py @@ -110,6 +110,7 @@ class UBERONParcellation(KGObject, OMUBERONParcellation): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/unit_of_measurement.py b/fairgraph/openminds/v4/controlled_terms/unit_of_measurement.py index a497902c..66255e66 100644 --- a/fairgraph/openminds/v4/controlled_terms/unit_of_measurement.py +++ b/fairgraph/openminds/v4/controlled_terms/unit_of_measurement.py @@ -69,6 +69,7 @@ class UnitOfMeasurement(KGObject, OMUnitOfMeasurement): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/controlled_terms/visual_stimulus_type.py b/fairgraph/openminds/v4/controlled_terms/visual_stimulus_type.py index b3c0646a..6471fb63 100644 --- a/fairgraph/openminds/v4/controlled_terms/visual_stimulus_type.py +++ b/fairgraph/openminds/v4/controlled_terms/visual_stimulus_type.py @@ -88,6 +88,7 @@ class VisualStimulusType(KGObject, OMVisualStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/actors/consortium.py b/fairgraph/openminds/v4/core/actors/consortium.py index 2a6164f8..5a0e3807 100644 --- a/fairgraph/openminds/v4/core/actors/consortium.py +++ b/fairgraph/openminds/v4/core/actors/consortium.py @@ -128,6 +128,7 @@ class Consortium(KGObject, OMConsortium): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("full_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/actors/organization.py b/fairgraph/openminds/v4/core/actors/organization.py index 6cd6d54a..e733827f 100644 --- a/fairgraph/openminds/v4/core/actors/organization.py +++ b/fairgraph/openminds/v4/core/actors/organization.py @@ -144,6 +144,7 @@ class Organization(KGObject, OMOrganization): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("full_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/actors/person.py b/fairgraph/openminds/v4/core/actors/person.py index 2e1f0689..eb0f6988 100644 --- a/fairgraph/openminds/v4/core/actors/person.py +++ b/fairgraph/openminds/v4/core/actors/person.py @@ -158,6 +158,7 @@ class Person(KGObject, OMPerson): ), ] existence_query_properties = ("given_name", "family_name") + sort_property = "family_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/data/content_type.py b/fairgraph/openminds/v4/core/data/content_type.py index 6d50b874..21706a83 100644 --- a/fairgraph/openminds/v4/core/data/content_type.py +++ b/fairgraph/openminds/v4/core/data/content_type.py @@ -66,6 +66,7 @@ class ContentType(KGObject, OMContentType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/data/content_type_pattern.py b/fairgraph/openminds/v4/core/data/content_type_pattern.py index 0f650049..5940c24f 100644 --- a/fairgraph/openminds/v4/core/data/content_type_pattern.py +++ b/fairgraph/openminds/v4/core/data/content_type_pattern.py @@ -28,6 +28,7 @@ class ContentTypePattern(KGObject, OMContentTypePattern): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/data/file.py b/fairgraph/openminds/v4/core/data/file.py index 41f1a59a..7e2ee81c 100644 --- a/fairgraph/openminds/v4/core/data/file.py +++ b/fairgraph/openminds/v4/core/data/file.py @@ -177,6 +177,7 @@ class File(KGObject, OMFile): ] aliases = {"hash": "hashes"} existence_query_properties = ("iri", "hashes") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/data/file_bundle.py b/fairgraph/openminds/v4/core/data/file_bundle.py index 8924c7c3..49cee441 100644 --- a/fairgraph/openminds/v4/core/data/file_bundle.py +++ b/fairgraph/openminds/v4/core/data/file_bundle.py @@ -101,6 +101,7 @@ class FileBundle(KGObject, OMFileBundle): ), ] existence_query_properties = ("is_part_of", "name") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/data/file_repository.py b/fairgraph/openminds/v4/core/data/file_repository.py index 64c6bca1..dc80a09b 100644 --- a/fairgraph/openminds/v4/core/data/file_repository.py +++ b/fairgraph/openminds/v4/core/data/file_repository.py @@ -58,6 +58,7 @@ class FileRepository(KGObject, OMFileRepository): ), ] existence_query_properties = ("iri",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/data/file_repository_structure.py b/fairgraph/openminds/v4/core/data/file_repository_structure.py index 2cfa2863..499e9518 100644 --- a/fairgraph/openminds/v4/core/data/file_repository_structure.py +++ b/fairgraph/openminds/v4/core/data/file_repository_structure.py @@ -28,6 +28,7 @@ class FileRepositoryStructure(KGObject, OMFileRepositoryStructure): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/data/license.py b/fairgraph/openminds/v4/core/data/license.py index 92260414..af55ce4a 100644 --- a/fairgraph/openminds/v4/core/data/license.py +++ b/fairgraph/openminds/v4/core/data/license.py @@ -46,6 +46,7 @@ class License(KGObject, OMLicense): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("alias",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/dataset.py b/fairgraph/openminds/v4/core/products/dataset.py index 6e2e9cff..df168e18 100644 --- a/fairgraph/openminds/v4/core/products/dataset.py +++ b/fairgraph/openminds/v4/core/products/dataset.py @@ -48,6 +48,7 @@ class Dataset(KGObject, OMDataset): ] aliases = {"name": "full_name", "versions": "has_versions", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/dataset_version.py b/fairgraph/openminds/v4/core/products/dataset_version.py index ec138ba6..894b199a 100644 --- a/fairgraph/openminds/v4/core/products/dataset_version.py +++ b/fairgraph/openminds/v4/core/products/dataset_version.py @@ -100,6 +100,7 @@ class DatasetVersion(KGObject, OMDatasetVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/meta_data_model.py b/fairgraph/openminds/v4/core/products/meta_data_model.py index f74d4d06..2a75be92 100644 --- a/fairgraph/openminds/v4/core/products/meta_data_model.py +++ b/fairgraph/openminds/v4/core/products/meta_data_model.py @@ -48,6 +48,7 @@ class MetaDataModel(KGObject, OMMetaDataModel): ] aliases = {"name": "full_name", "versions": "has_versions", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/meta_data_model_version.py b/fairgraph/openminds/v4/core/products/meta_data_model_version.py index 5694ad12..93e4ab5c 100644 --- a/fairgraph/openminds/v4/core/products/meta_data_model_version.py +++ b/fairgraph/openminds/v4/core/products/meta_data_model_version.py @@ -65,6 +65,7 @@ class MetaDataModelVersion(KGObject, OMMetaDataModelVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/model.py b/fairgraph/openminds/v4/core/products/model.py index 0de92b51..699369d7 100644 --- a/fairgraph/openminds/v4/core/products/model.py +++ b/fairgraph/openminds/v4/core/products/model.py @@ -48,6 +48,7 @@ class Model(KGObject, OMModel): ] aliases = {"name": "full_name", "versions": "has_versions", "model_scope": "scope", "alias": "short_name"} existence_query_properties = ("full_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/model_version.py b/fairgraph/openminds/v4/core/products/model_version.py index 15658696..c691cd40 100644 --- a/fairgraph/openminds/v4/core/products/model_version.py +++ b/fairgraph/openminds/v4/core/products/model_version.py @@ -107,6 +107,7 @@ class ModelVersion(KGObject, OMModelVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("full_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/project.py b/fairgraph/openminds/v4/core/products/project.py index afb7c6bf..abba5298 100644 --- a/fairgraph/openminds/v4/core/products/project.py +++ b/fairgraph/openminds/v4/core/products/project.py @@ -23,6 +23,7 @@ class Project(KGObject, OMProject): reverse_properties = [] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/setup.py b/fairgraph/openminds/v4/core/products/setup.py index 818aff7b..cef0272f 100644 --- a/fairgraph/openminds/v4/core/products/setup.py +++ b/fairgraph/openminds/v4/core/products/setup.py @@ -36,6 +36,7 @@ class Setup(KGObject, OMSetup): ), ] existence_query_properties = ("description", "has_parts", "name") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/software.py b/fairgraph/openminds/v4/core/products/software.py index 05d4292b..bd5a0633 100644 --- a/fairgraph/openminds/v4/core/products/software.py +++ b/fairgraph/openminds/v4/core/products/software.py @@ -48,6 +48,7 @@ class Software(KGObject, OMSoftware): ] aliases = {"name": "full_name", "versions": "has_versions", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/software_version.py b/fairgraph/openminds/v4/core/products/software_version.py index aecf10e8..f6f31a23 100644 --- a/fairgraph/openminds/v4/core/products/software_version.py +++ b/fairgraph/openminds/v4/core/products/software_version.py @@ -103,6 +103,7 @@ class SoftwareVersion(KGObject, OMSoftwareVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/web_service.py b/fairgraph/openminds/v4/core/products/web_service.py index 0af04b68..f5159fa6 100644 --- a/fairgraph/openminds/v4/core/products/web_service.py +++ b/fairgraph/openminds/v4/core/products/web_service.py @@ -56,6 +56,7 @@ class WebService(KGObject, OMWebService): ] aliases = {"name": "full_name", "versions": "has_versions", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/products/web_service_version.py b/fairgraph/openminds/v4/core/products/web_service_version.py index 7f720dfa..33703e07 100644 --- a/fairgraph/openminds/v4/core/products/web_service_version.py +++ b/fairgraph/openminds/v4/core/products/web_service_version.py @@ -81,6 +81,7 @@ class WebServiceVersion(KGObject, OMWebServiceVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/behavioral_protocol.py b/fairgraph/openminds/v4/core/research/behavioral_protocol.py index 4b20aad6..7bd732a9 100644 --- a/fairgraph/openminds/v4/core/research/behavioral_protocol.py +++ b/fairgraph/openminds/v4/core/research/behavioral_protocol.py @@ -36,6 +36,7 @@ class BehavioralProtocol(KGObject, OMBehavioralProtocol): ), ] existence_query_properties = ("description", "name") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/configuration.py b/fairgraph/openminds/v4/core/research/configuration.py index b1978a72..4a8c8dab 100644 --- a/fairgraph/openminds/v4/core/research/configuration.py +++ b/fairgraph/openminds/v4/core/research/configuration.py @@ -40,6 +40,7 @@ class Configuration(KGObject, OMConfiguration): ), ] existence_query_properties = ("configuration",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/property_value_list.py b/fairgraph/openminds/v4/core/research/property_value_list.py index c2587f1a..1c678bc2 100644 --- a/fairgraph/openminds/v4/core/research/property_value_list.py +++ b/fairgraph/openminds/v4/core/research/property_value_list.py @@ -44,6 +44,7 @@ class PropertyValueList(KGObject, OMPropertyValueList): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/protocol.py b/fairgraph/openminds/v4/core/research/protocol.py index d6f4f185..e7d9a13a 100644 --- a/fairgraph/openminds/v4/core/research/protocol.py +++ b/fairgraph/openminds/v4/core/research/protocol.py @@ -38,6 +38,7 @@ class Protocol(KGObject, OMProtocol): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/protocol_execution.py b/fairgraph/openminds/v4/core/research/protocol_execution.py index 9b6a7112..66cc56c3 100644 --- a/fairgraph/openminds/v4/core/research/protocol_execution.py +++ b/fairgraph/openminds/v4/core/research/protocol_execution.py @@ -31,6 +31,7 @@ class ProtocolExecution(KGObject, OMProtocolExecution): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/strain.py b/fairgraph/openminds/v4/core/research/strain.py index d896aa13..0d62adff 100644 --- a/fairgraph/openminds/v4/core/research/strain.py +++ b/fairgraph/openminds/v4/core/research/strain.py @@ -41,6 +41,7 @@ class Strain(KGObject, OMStrain): ), ] existence_query_properties = ("genetic_strain_type", "name", "species") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/subject.py b/fairgraph/openminds/v4/core/research/subject.py index 54798eb7..be2eac47 100644 --- a/fairgraph/openminds/v4/core/research/subject.py +++ b/fairgraph/openminds/v4/core/research/subject.py @@ -44,6 +44,7 @@ class Subject(KGObject, OMSubject): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/subject_group.py b/fairgraph/openminds/v4/core/research/subject_group.py index 15117cd4..7e7c820d 100644 --- a/fairgraph/openminds/v4/core/research/subject_group.py +++ b/fairgraph/openminds/v4/core/research/subject_group.py @@ -52,6 +52,7 @@ class SubjectGroup(KGObject, OMSubjectGroup): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/subject_group_state.py b/fairgraph/openminds/v4/core/research/subject_group_state.py index 236ba4f5..014840c9 100644 --- a/fairgraph/openminds/v4/core/research/subject_group_state.py +++ b/fairgraph/openminds/v4/core/research/subject_group_state.py @@ -64,6 +64,7 @@ class SubjectGroupState(KGObject, OMSubjectGroupState): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/subject_state.py b/fairgraph/openminds/v4/core/research/subject_state.py index f16c63b5..0e000d7d 100644 --- a/fairgraph/openminds/v4/core/research/subject_state.py +++ b/fairgraph/openminds/v4/core/research/subject_state.py @@ -87,6 +87,7 @@ class SubjectState(KGObject, OMSubjectState): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/tissue_sample.py b/fairgraph/openminds/v4/core/research/tissue_sample.py index 65213f5a..b307e0f3 100644 --- a/fairgraph/openminds/v4/core/research/tissue_sample.py +++ b/fairgraph/openminds/v4/core/research/tissue_sample.py @@ -44,6 +44,7 @@ class TissueSample(KGObject, OMTissueSample): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/tissue_sample_collection.py b/fairgraph/openminds/v4/core/research/tissue_sample_collection.py index ed2fb390..92540abf 100644 --- a/fairgraph/openminds/v4/core/research/tissue_sample_collection.py +++ b/fairgraph/openminds/v4/core/research/tissue_sample_collection.py @@ -52,6 +52,7 @@ class TissueSampleCollection(KGObject, OMTissueSampleCollection): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/tissue_sample_collection_state.py b/fairgraph/openminds/v4/core/research/tissue_sample_collection_state.py index 86636360..4f74f3cc 100644 --- a/fairgraph/openminds/v4/core/research/tissue_sample_collection_state.py +++ b/fairgraph/openminds/v4/core/research/tissue_sample_collection_state.py @@ -64,6 +64,7 @@ class TissueSampleCollectionState(KGObject, OMTissueSampleCollectionState): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/core/research/tissue_sample_state.py b/fairgraph/openminds/v4/core/research/tissue_sample_state.py index a57b74af..f5e30bdf 100644 --- a/fairgraph/openminds/v4/core/research/tissue_sample_state.py +++ b/fairgraph/openminds/v4/core/research/tissue_sample_state.py @@ -80,6 +80,7 @@ class TissueSampleState(KGObject, OMTissueSampleState): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/ephys/activity/cell_patching.py b/fairgraph/openminds/v4/ephys/activity/cell_patching.py index 0a18fc99..28b71115 100644 --- a/fairgraph/openminds/v4/ephys/activity/cell_patching.py +++ b/fairgraph/openminds/v4/ephys/activity/cell_patching.py @@ -22,6 +22,7 @@ class CellPatching(KGObject, OMCellPatching): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/ephys/activity/electrode_placement.py b/fairgraph/openminds/v4/ephys/activity/electrode_placement.py index dc42bb1b..09ef3a97 100644 --- a/fairgraph/openminds/v4/ephys/activity/electrode_placement.py +++ b/fairgraph/openminds/v4/ephys/activity/electrode_placement.py @@ -22,6 +22,7 @@ class ElectrodePlacement(KGObject, OMElectrodePlacement): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/ephys/activity/recording_activity.py b/fairgraph/openminds/v4/ephys/activity/recording_activity.py index 3450c8e8..5971aa73 100644 --- a/fairgraph/openminds/v4/ephys/activity/recording_activity.py +++ b/fairgraph/openminds/v4/ephys/activity/recording_activity.py @@ -22,6 +22,7 @@ class RecordingActivity(KGObject, OMRecordingActivity): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/ephys/device/electrode.py b/fairgraph/openminds/v4/ephys/device/electrode.py index c829d5f5..99eb7742 100644 --- a/fairgraph/openminds/v4/ephys/device/electrode.py +++ b/fairgraph/openminds/v4/ephys/device/electrode.py @@ -36,6 +36,7 @@ class Electrode(KGObject, OMElectrode): ), ] existence_query_properties = ("lookup_label",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/ephys/device/electrode_array.py b/fairgraph/openminds/v4/ephys/device/electrode_array.py index fb4ba15b..312f83d8 100644 --- a/fairgraph/openminds/v4/ephys/device/electrode_array.py +++ b/fairgraph/openminds/v4/ephys/device/electrode_array.py @@ -36,6 +36,7 @@ class ElectrodeArray(KGObject, OMElectrodeArray): ), ] existence_query_properties = ("lookup_label",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/ephys/device/electrode_array_usage.py b/fairgraph/openminds/v4/ephys/device/electrode_array_usage.py index 4b3fad86..15d6c486 100644 --- a/fairgraph/openminds/v4/ephys/device/electrode_array_usage.py +++ b/fairgraph/openminds/v4/ephys/device/electrode_array_usage.py @@ -60,6 +60,7 @@ class ElectrodeArrayUsage(KGObject, OMElectrodeArrayUsage): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/ephys/device/electrode_usage.py b/fairgraph/openminds/v4/ephys/device/electrode_usage.py index 155ab676..23c57100 100644 --- a/fairgraph/openminds/v4/ephys/device/electrode_usage.py +++ b/fairgraph/openminds/v4/ephys/device/electrode_usage.py @@ -60,6 +60,7 @@ class ElectrodeUsage(KGObject, OMElectrodeUsage): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/ephys/device/pipette.py b/fairgraph/openminds/v4/ephys/device/pipette.py index d79e9549..06688571 100644 --- a/fairgraph/openminds/v4/ephys/device/pipette.py +++ b/fairgraph/openminds/v4/ephys/device/pipette.py @@ -36,6 +36,7 @@ class Pipette(KGObject, OMPipette): ), ] existence_query_properties = ("lookup_label",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/ephys/device/pipette_usage.py b/fairgraph/openminds/v4/ephys/device/pipette_usage.py index 3c024aea..ef5a2d94 100644 --- a/fairgraph/openminds/v4/ephys/device/pipette_usage.py +++ b/fairgraph/openminds/v4/ephys/device/pipette_usage.py @@ -60,6 +60,7 @@ class PipetteUsage(KGObject, OMPipetteUsage): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/ephys/entity/recording.py b/fairgraph/openminds/v4/ephys/entity/recording.py index 5fd1b46c..046647b5 100644 --- a/fairgraph/openminds/v4/ephys/entity/recording.py +++ b/fairgraph/openminds/v4/ephys/entity/recording.py @@ -28,6 +28,7 @@ class Recording(KGObject, OMRecording): ), ] existence_query_properties = ("channels", "data_location", "recorded_with", "sampling_frequency") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/publications/book.py b/fairgraph/openminds/v4/publications/book.py index 247259c5..3cc46631 100644 --- a/fairgraph/openminds/v4/publications/book.py +++ b/fairgraph/openminds/v4/publications/book.py @@ -51,6 +51,7 @@ class Book(KGObject, OMBook): ), ] existence_query_properties = ("name", "publication_date") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/publications/chapter.py b/fairgraph/openminds/v4/publications/chapter.py index 1fdfa626..de405de8 100644 --- a/fairgraph/openminds/v4/publications/chapter.py +++ b/fairgraph/openminds/v4/publications/chapter.py @@ -43,6 +43,7 @@ class Chapter(KGObject, OMChapter): ), ] existence_query_properties = ("authors", "is_part_of", "name", "publication_date") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/publications/learning_resource.py b/fairgraph/openminds/v4/publications/learning_resource.py index 146958fd..ee63edc6 100644 --- a/fairgraph/openminds/v4/publications/learning_resource.py +++ b/fairgraph/openminds/v4/publications/learning_resource.py @@ -23,6 +23,7 @@ class LearningResource(KGObject, OMLearningResource): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("about", "name", "publication_date") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/publications/live_paper.py b/fairgraph/openminds/v4/publications/live_paper.py index f763959f..ec166664 100644 --- a/fairgraph/openminds/v4/publications/live_paper.py +++ b/fairgraph/openminds/v4/publications/live_paper.py @@ -48,6 +48,7 @@ class LivePaper(KGObject, OMLivePaper): ] aliases = {"name": "full_name", "versions": "has_versions", "alias": "short_name"} existence_query_properties = ("full_name", "short_name") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/publications/live_paper_resource_item.py b/fairgraph/openminds/v4/publications/live_paper_resource_item.py index 5f8e5b2e..6eb082ff 100644 --- a/fairgraph/openminds/v4/publications/live_paper_resource_item.py +++ b/fairgraph/openminds/v4/publications/live_paper_resource_item.py @@ -31,6 +31,7 @@ class LivePaperResourceItem(KGObject, OMLivePaperResourceItem): ), ] existence_query_properties = ("name", "iri", "is_part_of") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/publications/live_paper_section.py b/fairgraph/openminds/v4/publications/live_paper_section.py index 3ad2434a..3fd1246b 100644 --- a/fairgraph/openminds/v4/publications/live_paper_section.py +++ b/fairgraph/openminds/v4/publications/live_paper_section.py @@ -28,6 +28,7 @@ class LivePaperSection(KGObject, OMLivePaperSection): ), ] existence_query_properties = ("is_part_of", "name", "order", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/publications/live_paper_version.py b/fairgraph/openminds/v4/publications/live_paper_version.py index 1ed786a6..dcbe1b66 100644 --- a/fairgraph/openminds/v4/publications/live_paper_version.py +++ b/fairgraph/openminds/v4/publications/live_paper_version.py @@ -74,6 +74,7 @@ class LivePaperVersion(KGObject, OMLivePaperVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/publications/periodical.py b/fairgraph/openminds/v4/publications/periodical.py index 5e8d3b43..25d68008 100644 --- a/fairgraph/openminds/v4/publications/periodical.py +++ b/fairgraph/openminds/v4/publications/periodical.py @@ -28,6 +28,7 @@ class Periodical(KGObject, OMPeriodical): ), ] existence_query_properties = ("abbreviation",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/publications/scholarly_article.py b/fairgraph/openminds/v4/publications/scholarly_article.py index e34549dc..c93bd3b5 100644 --- a/fairgraph/openminds/v4/publications/scholarly_article.py +++ b/fairgraph/openminds/v4/publications/scholarly_article.py @@ -45,6 +45,7 @@ class ScholarlyArticle(KGObject, OMScholarlyArticle): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/sands/atlas/brain_atlas.py b/fairgraph/openminds/v4/sands/atlas/brain_atlas.py index 6d8a260b..03057b04 100644 --- a/fairgraph/openminds/v4/sands/atlas/brain_atlas.py +++ b/fairgraph/openminds/v4/sands/atlas/brain_atlas.py @@ -56,6 +56,7 @@ class BrainAtlas(KGObject, OMBrainAtlas): ] aliases = {"name": "full_name", "versions": "has_versions", "alias": "short_name"} existence_query_properties = ("digital_identifier",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/sands/atlas/brain_atlas_version.py b/fairgraph/openminds/v4/sands/atlas/brain_atlas_version.py index c3015c8a..ed3dff1d 100644 --- a/fairgraph/openminds/v4/sands/atlas/brain_atlas_version.py +++ b/fairgraph/openminds/v4/sands/atlas/brain_atlas_version.py @@ -83,6 +83,7 @@ class BrainAtlasVersion(KGObject, OMBrainAtlasVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/sands/atlas/common_coordinate_space.py b/fairgraph/openminds/v4/sands/atlas/common_coordinate_space.py index 75a2fbac..c870e22f 100644 --- a/fairgraph/openminds/v4/sands/atlas/common_coordinate_space.py +++ b/fairgraph/openminds/v4/sands/atlas/common_coordinate_space.py @@ -64,6 +64,7 @@ class CommonCoordinateSpace(KGObject, OMCommonCoordinateSpace): ] aliases = {"name": "full_name", "versions": "has_versions", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/sands/atlas/common_coordinate_space_version.py b/fairgraph/openminds/v4/sands/atlas/common_coordinate_space_version.py index e5f798a0..c865c4c7 100644 --- a/fairgraph/openminds/v4/sands/atlas/common_coordinate_space_version.py +++ b/fairgraph/openminds/v4/sands/atlas/common_coordinate_space_version.py @@ -109,6 +109,7 @@ class CommonCoordinateSpaceVersion(KGObject, OMCommonCoordinateSpaceVersion): "version_identifier", "version_innovation", ) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v4/sands/atlas/parcellation_entity.py b/fairgraph/openminds/v4/sands/atlas/parcellation_entity.py index b24c3754..7a746e86 100644 --- a/fairgraph/openminds/v4/sands/atlas/parcellation_entity.py +++ b/fairgraph/openminds/v4/sands/atlas/parcellation_entity.py @@ -86,6 +86,7 @@ class ParcellationEntity(KGObject, OMParcellationEntity): ] aliases = {"versions": "has_versions"} existence_query_properties = ("name",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/sands/atlas/parcellation_entity_version.py b/fairgraph/openminds/v4/sands/atlas/parcellation_entity_version.py index 450e5db5..4224ee4d 100644 --- a/fairgraph/openminds/v4/sands/atlas/parcellation_entity_version.py +++ b/fairgraph/openminds/v4/sands/atlas/parcellation_entity_version.py @@ -107,6 +107,7 @@ class ParcellationEntityVersion(KGObject, OMParcellationEntityVersion): ), ] existence_query_properties = ("name", "version_identifier") + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/sands/non_atlas/custom_anatomical_entity.py b/fairgraph/openminds/v4/sands/non_atlas/custom_anatomical_entity.py index 397b7dd0..db2ed29d 100644 --- a/fairgraph/openminds/v4/sands/non_atlas/custom_anatomical_entity.py +++ b/fairgraph/openminds/v4/sands/non_atlas/custom_anatomical_entity.py @@ -77,6 +77,7 @@ class CustomAnatomicalEntity(KGObject, OMCustomAnatomicalEntity): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/sands/non_atlas/custom_coordinate_space.py b/fairgraph/openminds/v4/sands/non_atlas/custom_coordinate_space.py index 16a374c4..b09bd5df 100644 --- a/fairgraph/openminds/v4/sands/non_atlas/custom_coordinate_space.py +++ b/fairgraph/openminds/v4/sands/non_atlas/custom_coordinate_space.py @@ -36,6 +36,7 @@ class CustomCoordinateSpace(KGObject, OMCustomCoordinateSpace): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/specimen_prep/activity/cranial_window_preparation.py b/fairgraph/openminds/v4/specimen_prep/activity/cranial_window_preparation.py index c584c7bb..e14508c4 100644 --- a/fairgraph/openminds/v4/specimen_prep/activity/cranial_window_preparation.py +++ b/fairgraph/openminds/v4/specimen_prep/activity/cranial_window_preparation.py @@ -22,6 +22,7 @@ class CranialWindowPreparation(KGObject, OMCranialWindowPreparation): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/specimen_prep/activity/tissue_culture_preparation.py b/fairgraph/openminds/v4/specimen_prep/activity/tissue_culture_preparation.py index f5e53a8b..3afdad91 100644 --- a/fairgraph/openminds/v4/specimen_prep/activity/tissue_culture_preparation.py +++ b/fairgraph/openminds/v4/specimen_prep/activity/tissue_culture_preparation.py @@ -22,6 +22,7 @@ class TissueCulturePreparation(KGObject, OMTissueCulturePreparation): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/specimen_prep/activity/tissue_sample_slicing.py b/fairgraph/openminds/v4/specimen_prep/activity/tissue_sample_slicing.py index 89af937d..80e70d15 100644 --- a/fairgraph/openminds/v4/specimen_prep/activity/tissue_sample_slicing.py +++ b/fairgraph/openminds/v4/specimen_prep/activity/tissue_sample_slicing.py @@ -22,6 +22,7 @@ class TissueSampleSlicing(KGObject, OMTissueSampleSlicing): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/specimen_prep/device/slicing_device.py b/fairgraph/openminds/v4/specimen_prep/device/slicing_device.py index fae6585d..7e9abd33 100644 --- a/fairgraph/openminds/v4/specimen_prep/device/slicing_device.py +++ b/fairgraph/openminds/v4/specimen_prep/device/slicing_device.py @@ -36,6 +36,7 @@ class SlicingDevice(KGObject, OMSlicingDevice): ), ] existence_query_properties = ("lookup_label",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v4/specimen_prep/device/slicing_device_usage.py b/fairgraph/openminds/v4/specimen_prep/device/slicing_device_usage.py index a3e69067..5f4a1040 100644 --- a/fairgraph/openminds/v4/specimen_prep/device/slicing_device_usage.py +++ b/fairgraph/openminds/v4/specimen_prep/device/slicing_device_usage.py @@ -68,6 +68,7 @@ class SlicingDeviceUsage(KGObject, OMSlicingDeviceUsage): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/stimulation/activity/stimulation_activity.py b/fairgraph/openminds/v4/stimulation/activity/stimulation_activity.py index 3d55cf3b..5eab24d0 100644 --- a/fairgraph/openminds/v4/stimulation/activity/stimulation_activity.py +++ b/fairgraph/openminds/v4/stimulation/activity/stimulation_activity.py @@ -22,6 +22,7 @@ class StimulationActivity(KGObject, OMStimulationActivity): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v4/stimulation/stimulus/ephys_stimulus.py b/fairgraph/openminds/v4/stimulation/stimulus/ephys_stimulus.py index ad70d154..8cd465e3 100644 --- a/fairgraph/openminds/v4/stimulation/stimulus/ephys_stimulus.py +++ b/fairgraph/openminds/v4/stimulation/stimulus/ephys_stimulus.py @@ -28,6 +28,7 @@ class EphysStimulus(KGObject, OMEphysStimulus): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/chemicals/chemical_mixture.py b/fairgraph/openminds/v5/chemicals/chemical_mixture.py index 11da07c4..af6637a7 100644 --- a/fairgraph/openminds/v5/chemicals/chemical_mixture.py +++ b/fairgraph/openminds/v5/chemicals/chemical_mixture.py @@ -41,6 +41,7 @@ class ChemicalMixture(KGObject, OMChemicalMixture): ), ] existence_query_properties = ("has_parts", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/chemicals/chemical_substance.py b/fairgraph/openminds/v5/chemicals/chemical_substance.py index bd40ae9b..cb773655 100644 --- a/fairgraph/openminds/v5/chemicals/chemical_substance.py +++ b/fairgraph/openminds/v5/chemicals/chemical_substance.py @@ -36,6 +36,7 @@ class ChemicalSubstance(KGObject, OMChemicalSubstance): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/data_analysis.py b/fairgraph/openminds/v5/computation/data_analysis.py index a144b355..aa405f50 100644 --- a/fairgraph/openminds/v5/computation/data_analysis.py +++ b/fairgraph/openminds/v5/computation/data_analysis.py @@ -47,6 +47,7 @@ class DataAnalysis(KGObject, OMDataAnalysis): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/data_copy.py b/fairgraph/openminds/v5/computation/data_copy.py index cce549e1..17f3991c 100644 --- a/fairgraph/openminds/v5/computation/data_copy.py +++ b/fairgraph/openminds/v5/computation/data_copy.py @@ -47,6 +47,7 @@ class DataCopy(KGObject, OMDataCopy): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/environment.py b/fairgraph/openminds/v5/computation/environment.py index 8a548b00..5722b0a9 100644 --- a/fairgraph/openminds/v5/computation/environment.py +++ b/fairgraph/openminds/v5/computation/environment.py @@ -37,6 +37,7 @@ class Environment(KGObject, OMEnvironment): ), ] existence_query_properties = ("hardware", "name") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/generic_computation.py b/fairgraph/openminds/v5/computation/generic_computation.py index 03492fd3..d61b9c73 100644 --- a/fairgraph/openminds/v5/computation/generic_computation.py +++ b/fairgraph/openminds/v5/computation/generic_computation.py @@ -47,6 +47,7 @@ class GenericComputation(KGObject, OMGenericComputation): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/hardware_system.py b/fairgraph/openminds/v5/computation/hardware_system.py index edf4cedb..7fd8ce11 100644 --- a/fairgraph/openminds/v5/computation/hardware_system.py +++ b/fairgraph/openminds/v5/computation/hardware_system.py @@ -28,6 +28,7 @@ class HardwareSystem(KGObject, OMHardwareSystem): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/launch_configuration.py b/fairgraph/openminds/v5/computation/launch_configuration.py index 69b61fcf..02948295 100644 --- a/fairgraph/openminds/v5/computation/launch_configuration.py +++ b/fairgraph/openminds/v5/computation/launch_configuration.py @@ -37,6 +37,7 @@ class LaunchConfiguration(KGObject, OMLaunchConfiguration): ] aliases = {"environment_variables": "environment_variable"} existence_query_properties = ("executable", "name") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/model_validation.py b/fairgraph/openminds/v5/computation/model_validation.py index e760fed0..5dc633af 100644 --- a/fairgraph/openminds/v5/computation/model_validation.py +++ b/fairgraph/openminds/v5/computation/model_validation.py @@ -48,6 +48,7 @@ class ModelValidation(KGObject, OMModelValidation): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/optimization.py b/fairgraph/openminds/v5/computation/optimization.py index e676687f..c99f621e 100644 --- a/fairgraph/openminds/v5/computation/optimization.py +++ b/fairgraph/openminds/v5/computation/optimization.py @@ -47,6 +47,7 @@ class Optimization(KGObject, OMOptimization): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/service_deployment.py b/fairgraph/openminds/v5/computation/service_deployment.py index 41616b27..abc54790 100644 --- a/fairgraph/openminds/v5/computation/service_deployment.py +++ b/fairgraph/openminds/v5/computation/service_deployment.py @@ -22,6 +22,7 @@ class ServiceDeployment(KGObject, OMServiceDeployment): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("name", "provides", "service", "start_time") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/simulation.py b/fairgraph/openminds/v5/computation/simulation.py index d33c71f5..2f7d7bcd 100644 --- a/fairgraph/openminds/v5/computation/simulation.py +++ b/fairgraph/openminds/v5/computation/simulation.py @@ -47,6 +47,7 @@ class Simulation(KGObject, OMSimulation): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/software_agent.py b/fairgraph/openminds/v5/computation/software_agent.py index 37e22dbc..7d3b47b3 100644 --- a/fairgraph/openminds/v5/computation/software_agent.py +++ b/fairgraph/openminds/v5/computation/software_agent.py @@ -56,6 +56,7 @@ class SoftwareAgent(KGObject, OMSoftwareAgent): ), ] existence_query_properties = ("name", "software") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/validation_test.py b/fairgraph/openminds/v5/computation/validation_test.py index ea96fb68..0c28258f 100644 --- a/fairgraph/openminds/v5/computation/validation_test.py +++ b/fairgraph/openminds/v5/computation/validation_test.py @@ -56,6 +56,7 @@ class ValidationTest(KGObject, OMValidationTest): ] aliases = {"name": "full_name", "model_scope": "scope", "alias": "short_name"} existence_query_properties = ("full_name", "short_name") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/validation_test_version.py b/fairgraph/openminds/v5/computation/validation_test_version.py index 1121d8d8..c536369c 100644 --- a/fairgraph/openminds/v5/computation/validation_test_version.py +++ b/fairgraph/openminds/v5/computation/validation_test_version.py @@ -65,6 +65,7 @@ class ValidationTestVersion(KGObject, OMValidationTestVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/visualization.py b/fairgraph/openminds/v5/computation/visualization.py index 66a07bfa..36b9d852 100644 --- a/fairgraph/openminds/v5/computation/visualization.py +++ b/fairgraph/openminds/v5/computation/visualization.py @@ -47,6 +47,7 @@ class Visualization(KGObject, OMVisualization): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/workflow_recipe.py b/fairgraph/openminds/v5/computation/workflow_recipe.py index d7a8fd79..0ae4061e 100644 --- a/fairgraph/openminds/v5/computation/workflow_recipe.py +++ b/fairgraph/openminds/v5/computation/workflow_recipe.py @@ -56,6 +56,7 @@ class WorkflowRecipe(KGObject, OMWorkflowRecipe): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("full_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/computation/workflow_recipe_version.py b/fairgraph/openminds/v5/computation/workflow_recipe_version.py index bf7b0bb2..fc1571a5 100644 --- a/fairgraph/openminds/v5/computation/workflow_recipe_version.py +++ b/fairgraph/openminds/v5/computation/workflow_recipe_version.py @@ -82,6 +82,7 @@ class WorkflowRecipeVersion(KGObject, OMWorkflowRecipeVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("full_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/access_channel.py b/fairgraph/openminds/v5/controlled_terms/access_channel.py index 761b0ddd..cc91dd03 100644 --- a/fairgraph/openminds/v5/controlled_terms/access_channel.py +++ b/fairgraph/openminds/v5/controlled_terms/access_channel.py @@ -66,6 +66,7 @@ class AccessChannel(KGObject, OMAccessChannel): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/access_eligibility_type.py b/fairgraph/openminds/v5/controlled_terms/access_eligibility_type.py index 78e1e7fb..5a7e18b1 100644 --- a/fairgraph/openminds/v5/controlled_terms/access_eligibility_type.py +++ b/fairgraph/openminds/v5/controlled_terms/access_eligibility_type.py @@ -66,6 +66,7 @@ class AccessEligibilityType(KGObject, OMAccessEligibilityType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/access_form.py b/fairgraph/openminds/v5/controlled_terms/access_form.py index f1c2d91f..a02b1e83 100644 --- a/fairgraph/openminds/v5/controlled_terms/access_form.py +++ b/fairgraph/openminds/v5/controlled_terms/access_form.py @@ -66,6 +66,7 @@ class AccessForm(KGObject, OMAccessForm): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/access_process_type.py b/fairgraph/openminds/v5/controlled_terms/access_process_type.py index 830428e1..99c76f7a 100644 --- a/fairgraph/openminds/v5/controlled_terms/access_process_type.py +++ b/fairgraph/openminds/v5/controlled_terms/access_process_type.py @@ -66,6 +66,7 @@ class AccessProcessType(KGObject, OMAccessProcessType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/action_status_type.py b/fairgraph/openminds/v5/controlled_terms/action_status_type.py index 8eb74ed2..3075b97f 100644 --- a/fairgraph/openminds/v5/controlled_terms/action_status_type.py +++ b/fairgraph/openminds/v5/controlled_terms/action_status_type.py @@ -74,6 +74,7 @@ class ActionStatusType(KGObject, OMActionStatusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/age_category.py b/fairgraph/openminds/v5/controlled_terms/age_category.py index 7b8993da..bb77f0b0 100644 --- a/fairgraph/openminds/v5/controlled_terms/age_category.py +++ b/fairgraph/openminds/v5/controlled_terms/age_category.py @@ -66,6 +66,7 @@ class AgeCategory(KGObject, OMAgeCategory): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/age_reference.py b/fairgraph/openminds/v5/controlled_terms/age_reference.py index 8641e2c6..85eba14f 100644 --- a/fairgraph/openminds/v5/controlled_terms/age_reference.py +++ b/fairgraph/openminds/v5/controlled_terms/age_reference.py @@ -58,6 +58,7 @@ class AgeReference(KGObject, OMAgeReference): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/analysis_technique.py b/fairgraph/openminds/v5/controlled_terms/analysis_technique.py index 0b5c52de..b52a4a6f 100644 --- a/fairgraph/openminds/v5/controlled_terms/analysis_technique.py +++ b/fairgraph/openminds/v5/controlled_terms/analysis_technique.py @@ -89,6 +89,7 @@ class AnalysisTechnique(KGObject, OMAnalysisTechnique): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/anatomical_axes_orientation.py b/fairgraph/openminds/v5/controlled_terms/anatomical_axes_orientation.py index 7816c526..d7417b8d 100644 --- a/fairgraph/openminds/v5/controlled_terms/anatomical_axes_orientation.py +++ b/fairgraph/openminds/v5/controlled_terms/anatomical_axes_orientation.py @@ -74,6 +74,7 @@ class AnatomicalAxesOrientation(KGObject, OMAnatomicalAxesOrientation): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/anatomical_cavity.py b/fairgraph/openminds/v5/controlled_terms/anatomical_cavity.py index d3d206e2..dc085cd0 100644 --- a/fairgraph/openminds/v5/controlled_terms/anatomical_cavity.py +++ b/fairgraph/openminds/v5/controlled_terms/anatomical_cavity.py @@ -124,6 +124,7 @@ class AnatomicalCavity(KGObject, OMAnatomicalCavity): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/anatomical_identification_type.py b/fairgraph/openminds/v5/controlled_terms/anatomical_identification_type.py index b90f4708..e04ceb0c 100644 --- a/fairgraph/openminds/v5/controlled_terms/anatomical_identification_type.py +++ b/fairgraph/openminds/v5/controlled_terms/anatomical_identification_type.py @@ -66,6 +66,7 @@ class AnatomicalIdentificationType(KGObject, OMAnatomicalIdentificationType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/anatomical_plane.py b/fairgraph/openminds/v5/controlled_terms/anatomical_plane.py index 7ac44a17..ca0d790c 100644 --- a/fairgraph/openminds/v5/controlled_terms/anatomical_plane.py +++ b/fairgraph/openminds/v5/controlled_terms/anatomical_plane.py @@ -66,6 +66,7 @@ class AnatomicalPlane(KGObject, OMAnatomicalPlane): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/annotation_criteria_type.py b/fairgraph/openminds/v5/controlled_terms/annotation_criteria_type.py index 6307ef80..dc3bd5bc 100644 --- a/fairgraph/openminds/v5/controlled_terms/annotation_criteria_type.py +++ b/fairgraph/openminds/v5/controlled_terms/annotation_criteria_type.py @@ -66,6 +66,7 @@ class AnnotationCriteriaType(KGObject, OMAnnotationCriteriaType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/annotation_type.py b/fairgraph/openminds/v5/controlled_terms/annotation_type.py index 39b97d6c..ee266fdd 100644 --- a/fairgraph/openminds/v5/controlled_terms/annotation_type.py +++ b/fairgraph/openminds/v5/controlled_terms/annotation_type.py @@ -66,6 +66,7 @@ class AnnotationType(KGObject, OMAnnotationType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/atlas_type.py b/fairgraph/openminds/v5/controlled_terms/atlas_type.py index c6d91e81..a060b29f 100644 --- a/fairgraph/openminds/v5/controlled_terms/atlas_type.py +++ b/fairgraph/openminds/v5/controlled_terms/atlas_type.py @@ -65,6 +65,7 @@ class AtlasType(KGObject, OMAtlasType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/auditory_stimulus_type.py b/fairgraph/openminds/v5/controlled_terms/auditory_stimulus_type.py index b33c7cb6..d49eb7da 100644 --- a/fairgraph/openminds/v5/controlled_terms/auditory_stimulus_type.py +++ b/fairgraph/openminds/v5/controlled_terms/auditory_stimulus_type.py @@ -100,6 +100,7 @@ class AuditoryStimulusType(KGObject, OMAuditoryStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/biological_order.py b/fairgraph/openminds/v5/controlled_terms/biological_order.py index bcedd249..e4b8a60f 100644 --- a/fairgraph/openminds/v5/controlled_terms/biological_order.py +++ b/fairgraph/openminds/v5/controlled_terms/biological_order.py @@ -98,6 +98,7 @@ class BiologicalOrder(KGObject, OMBiologicalOrder): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/biological_process.py b/fairgraph/openminds/v5/controlled_terms/biological_process.py index af1f8a18..57425bff 100644 --- a/fairgraph/openminds/v5/controlled_terms/biological_process.py +++ b/fairgraph/openminds/v5/controlled_terms/biological_process.py @@ -58,6 +58,7 @@ class BiologicalProcess(KGObject, OMBiologicalProcess): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/biological_sex.py b/fairgraph/openminds/v5/controlled_terms/biological_sex.py index 9a621534..4579390e 100644 --- a/fairgraph/openminds/v5/controlled_terms/biological_sex.py +++ b/fairgraph/openminds/v5/controlled_terms/biological_sex.py @@ -105,6 +105,7 @@ class BiologicalSex(KGObject, OMBiologicalSex): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/breeding_type.py b/fairgraph/openminds/v5/controlled_terms/breeding_type.py index 3740b486..6db4c806 100644 --- a/fairgraph/openminds/v5/controlled_terms/breeding_type.py +++ b/fairgraph/openminds/v5/controlled_terms/breeding_type.py @@ -100,6 +100,7 @@ class BreedingType(KGObject, OMBreedingType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/cell_culture_type.py b/fairgraph/openminds/v5/controlled_terms/cell_culture_type.py index 556041eb..4f1d4c7d 100644 --- a/fairgraph/openminds/v5/controlled_terms/cell_culture_type.py +++ b/fairgraph/openminds/v5/controlled_terms/cell_culture_type.py @@ -92,6 +92,7 @@ class CellCultureType(KGObject, OMCellCultureType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/cell_type.py b/fairgraph/openminds/v5/controlled_terms/cell_type.py index 93f67916..31102e43 100644 --- a/fairgraph/openminds/v5/controlled_terms/cell_type.py +++ b/fairgraph/openminds/v5/controlled_terms/cell_type.py @@ -122,6 +122,7 @@ class CellType(KGObject, OMCellType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/chemical_mixture_type.py b/fairgraph/openminds/v5/controlled_terms/chemical_mixture_type.py index 234ed851..484b1921 100644 --- a/fairgraph/openminds/v5/controlled_terms/chemical_mixture_type.py +++ b/fairgraph/openminds/v5/controlled_terms/chemical_mixture_type.py @@ -66,6 +66,7 @@ class ChemicalMixtureType(KGObject, OMChemicalMixtureType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/colormap.py b/fairgraph/openminds/v5/controlled_terms/colormap.py index 9341813b..893e0ee6 100644 --- a/fairgraph/openminds/v5/controlled_terms/colormap.py +++ b/fairgraph/openminds/v5/controlled_terms/colormap.py @@ -58,6 +58,7 @@ class Colormap(KGObject, OMColormap): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/communication_interface_type.py b/fairgraph/openminds/v5/controlled_terms/communication_interface_type.py index 804e51fc..8164e148 100644 --- a/fairgraph/openminds/v5/controlled_terms/communication_interface_type.py +++ b/fairgraph/openminds/v5/controlled_terms/communication_interface_type.py @@ -58,6 +58,7 @@ class CommunicationInterfaceType(KGObject, OMCommunicationInterfaceType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/communication_protocol.py b/fairgraph/openminds/v5/controlled_terms/communication_protocol.py index 64676e0d..216c7273 100644 --- a/fairgraph/openminds/v5/controlled_terms/communication_protocol.py +++ b/fairgraph/openminds/v5/controlled_terms/communication_protocol.py @@ -58,6 +58,7 @@ class CommunicationProtocol(KGObject, OMCommunicationProtocol): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/contribution_type.py b/fairgraph/openminds/v5/controlled_terms/contribution_type.py index 1443516d..0c694665 100644 --- a/fairgraph/openminds/v5/controlled_terms/contribution_type.py +++ b/fairgraph/openminds/v5/controlled_terms/contribution_type.py @@ -63,6 +63,7 @@ class ContributionType(KGObject, OMContributionType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/cranial_window_construction_type.py b/fairgraph/openminds/v5/controlled_terms/cranial_window_construction_type.py index ca3ea29e..4a837165 100644 --- a/fairgraph/openminds/v5/controlled_terms/cranial_window_construction_type.py +++ b/fairgraph/openminds/v5/controlled_terms/cranial_window_construction_type.py @@ -66,6 +66,7 @@ class CranialWindowConstructionType(KGObject, OMCranialWindowConstructionType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/cranial_window_reinforcement_type.py b/fairgraph/openminds/v5/controlled_terms/cranial_window_reinforcement_type.py index 5969ec64..7a0a6735 100644 --- a/fairgraph/openminds/v5/controlled_terms/cranial_window_reinforcement_type.py +++ b/fairgraph/openminds/v5/controlled_terms/cranial_window_reinforcement_type.py @@ -66,6 +66,7 @@ class CranialWindowReinforcementType(KGObject, OMCranialWindowReinforcementType) ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/criteria_quality_type.py b/fairgraph/openminds/v5/controlled_terms/criteria_quality_type.py index 9bc9accd..2632816a 100644 --- a/fairgraph/openminds/v5/controlled_terms/criteria_quality_type.py +++ b/fairgraph/openminds/v5/controlled_terms/criteria_quality_type.py @@ -66,6 +66,7 @@ class CriteriaQualityType(KGObject, OMCriteriaQualityType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/data_type.py b/fairgraph/openminds/v5/controlled_terms/data_type.py index fa827b2d..7e60cb9b 100644 --- a/fairgraph/openminds/v5/controlled_terms/data_type.py +++ b/fairgraph/openminds/v5/controlled_terms/data_type.py @@ -71,6 +71,7 @@ class DataType(KGObject, OMDataType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/dependency_impact.py b/fairgraph/openminds/v5/controlled_terms/dependency_impact.py index 549f62b3..be274f1d 100644 --- a/fairgraph/openminds/v5/controlled_terms/dependency_impact.py +++ b/fairgraph/openminds/v5/controlled_terms/dependency_impact.py @@ -58,6 +58,7 @@ class DependencyImpact(KGObject, OMDependencyImpact): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/deployment_environment_type.py b/fairgraph/openminds/v5/controlled_terms/deployment_environment_type.py index f8d8cb65..d2682fd9 100644 --- a/fairgraph/openminds/v5/controlled_terms/deployment_environment_type.py +++ b/fairgraph/openminds/v5/controlled_terms/deployment_environment_type.py @@ -66,6 +66,7 @@ class DeploymentEnvironmentType(KGObject, OMDeploymentEnvironmentType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/device_mounting_type.py b/fairgraph/openminds/v5/controlled_terms/device_mounting_type.py index eb8d8d68..cd2cb1bf 100644 --- a/fairgraph/openminds/v5/controlled_terms/device_mounting_type.py +++ b/fairgraph/openminds/v5/controlled_terms/device_mounting_type.py @@ -66,6 +66,7 @@ class DeviceMountingType(KGObject, OMDeviceMountingType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/device_type.py b/fairgraph/openminds/v5/controlled_terms/device_type.py index 5a487ec1..daf4049b 100644 --- a/fairgraph/openminds/v5/controlled_terms/device_type.py +++ b/fairgraph/openminds/v5/controlled_terms/device_type.py @@ -115,6 +115,7 @@ class DeviceType(KGObject, OMDeviceType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/difference_measure.py b/fairgraph/openminds/v5/controlled_terms/difference_measure.py index 05dbfce6..bc117905 100644 --- a/fairgraph/openminds/v5/controlled_terms/difference_measure.py +++ b/fairgraph/openminds/v5/controlled_terms/difference_measure.py @@ -65,6 +65,7 @@ class DifferenceMeasure(KGObject, OMDifferenceMeasure): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/disease.py b/fairgraph/openminds/v5/controlled_terms/disease.py index 813f95d2..df025866 100644 --- a/fairgraph/openminds/v5/controlled_terms/disease.py +++ b/fairgraph/openminds/v5/controlled_terms/disease.py @@ -113,6 +113,7 @@ class Disease(KGObject, OMDisease): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/disease_model.py b/fairgraph/openminds/v5/controlled_terms/disease_model.py index 3181dfa5..5c32483e 100644 --- a/fairgraph/openminds/v5/controlled_terms/disease_model.py +++ b/fairgraph/openminds/v5/controlled_terms/disease_model.py @@ -113,6 +113,7 @@ class DiseaseModel(KGObject, OMDiseaseModel): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/educational_level.py b/fairgraph/openminds/v5/controlled_terms/educational_level.py index eb19f4c4..e2ee3d16 100644 --- a/fairgraph/openminds/v5/controlled_terms/educational_level.py +++ b/fairgraph/openminds/v5/controlled_terms/educational_level.py @@ -58,6 +58,7 @@ class EducationalLevel(KGObject, OMEducationalLevel): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/electrical_stimulus_type.py b/fairgraph/openminds/v5/controlled_terms/electrical_stimulus_type.py index 52daf553..e0279ef9 100644 --- a/fairgraph/openminds/v5/controlled_terms/electrical_stimulus_type.py +++ b/fairgraph/openminds/v5/controlled_terms/electrical_stimulus_type.py @@ -108,6 +108,7 @@ class ElectricalStimulusType(KGObject, OMElectricalStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/experimental_approach.py b/fairgraph/openminds/v5/controlled_terms/experimental_approach.py index e85a29e9..55a9e082 100644 --- a/fairgraph/openminds/v5/controlled_terms/experimental_approach.py +++ b/fairgraph/openminds/v5/controlled_terms/experimental_approach.py @@ -63,6 +63,7 @@ class ExperimentalApproach(KGObject, OMExperimentalApproach): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/external_body_region.py b/fairgraph/openminds/v5/controlled_terms/external_body_region.py index c4dae152..3a918547 100644 --- a/fairgraph/openminds/v5/controlled_terms/external_body_region.py +++ b/fairgraph/openminds/v5/controlled_terms/external_body_region.py @@ -140,6 +140,7 @@ class ExternalBodyRegion(KGObject, OMExternalBodyRegion): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/file_bundle_grouping.py b/fairgraph/openminds/v5/controlled_terms/file_bundle_grouping.py index 4c22ff2d..ee94183c 100644 --- a/fairgraph/openminds/v5/controlled_terms/file_bundle_grouping.py +++ b/fairgraph/openminds/v5/controlled_terms/file_bundle_grouping.py @@ -74,6 +74,7 @@ class FileBundleGrouping(KGObject, OMFileBundleGrouping): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/file_repository_type.py b/fairgraph/openminds/v5/controlled_terms/file_repository_type.py index 2371298a..8e1082f7 100644 --- a/fairgraph/openminds/v5/controlled_terms/file_repository_type.py +++ b/fairgraph/openminds/v5/controlled_terms/file_repository_type.py @@ -66,6 +66,7 @@ class FileRepositoryType(KGObject, OMFileRepositoryType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/file_usage_role.py b/fairgraph/openminds/v5/controlled_terms/file_usage_role.py index e87edb3b..caa73b16 100644 --- a/fairgraph/openminds/v5/controlled_terms/file_usage_role.py +++ b/fairgraph/openminds/v5/controlled_terms/file_usage_role.py @@ -66,6 +66,7 @@ class FileUsageRole(KGObject, OMFileUsageRole): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/genetic_strain_type.py b/fairgraph/openminds/v5/controlled_terms/genetic_strain_type.py index 5c3e4db4..e9e83321 100644 --- a/fairgraph/openminds/v5/controlled_terms/genetic_strain_type.py +++ b/fairgraph/openminds/v5/controlled_terms/genetic_strain_type.py @@ -100,6 +100,7 @@ class GeneticStrainType(KGObject, OMGeneticStrainType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/gustatory_stimulus_type.py b/fairgraph/openminds/v5/controlled_terms/gustatory_stimulus_type.py index a98eb653..96fd451a 100644 --- a/fairgraph/openminds/v5/controlled_terms/gustatory_stimulus_type.py +++ b/fairgraph/openminds/v5/controlled_terms/gustatory_stimulus_type.py @@ -100,6 +100,7 @@ class GustatoryStimulusType(KGObject, OMGustatoryStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/handedness.py b/fairgraph/openminds/v5/controlled_terms/handedness.py index a102c65f..3c4332ab 100644 --- a/fairgraph/openminds/v5/controlled_terms/handedness.py +++ b/fairgraph/openminds/v5/controlled_terms/handedness.py @@ -100,6 +100,7 @@ class Handedness(KGObject, OMHandedness): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/language.py b/fairgraph/openminds/v5/controlled_terms/language.py index 8fc51fa5..04d82ca7 100644 --- a/fairgraph/openminds/v5/controlled_terms/language.py +++ b/fairgraph/openminds/v5/controlled_terms/language.py @@ -65,6 +65,7 @@ class Language(KGObject, OMLanguage): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/laterality.py b/fairgraph/openminds/v5/controlled_terms/laterality.py index f185960a..58049a34 100644 --- a/fairgraph/openminds/v5/controlled_terms/laterality.py +++ b/fairgraph/openminds/v5/controlled_terms/laterality.py @@ -71,6 +71,7 @@ class Laterality(KGObject, OMLaterality): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/learning_resource_type.py b/fairgraph/openminds/v5/controlled_terms/learning_resource_type.py index af8ac2b4..db0196b8 100644 --- a/fairgraph/openminds/v5/controlled_terms/learning_resource_type.py +++ b/fairgraph/openminds/v5/controlled_terms/learning_resource_type.py @@ -65,6 +65,7 @@ class LearningResourceType(KGObject, OMLearningResourceType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/measured_quantity.py b/fairgraph/openminds/v5/controlled_terms/measured_quantity.py index 3cbbdb4d..aaf06e21 100644 --- a/fairgraph/openminds/v5/controlled_terms/measured_quantity.py +++ b/fairgraph/openminds/v5/controlled_terms/measured_quantity.py @@ -66,6 +66,7 @@ class MeasuredQuantity(KGObject, OMMeasuredQuantity): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/measured_signal_type.py b/fairgraph/openminds/v5/controlled_terms/measured_signal_type.py index 27136412..5f65e6ff 100644 --- a/fairgraph/openminds/v5/controlled_terms/measured_signal_type.py +++ b/fairgraph/openminds/v5/controlled_terms/measured_signal_type.py @@ -58,6 +58,7 @@ class MeasuredSignalType(KGObject, OMMeasuredSignalType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/meta_data_model_type.py b/fairgraph/openminds/v5/controlled_terms/meta_data_model_type.py index 253c4135..3437c16c 100644 --- a/fairgraph/openminds/v5/controlled_terms/meta_data_model_type.py +++ b/fairgraph/openminds/v5/controlled_terms/meta_data_model_type.py @@ -65,6 +65,7 @@ class MetaDataModelType(KGObject, OMMetaDataModelType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/model_abstraction_level.py b/fairgraph/openminds/v5/controlled_terms/model_abstraction_level.py index 7d0a079b..9fd0ff45 100644 --- a/fairgraph/openminds/v5/controlled_terms/model_abstraction_level.py +++ b/fairgraph/openminds/v5/controlled_terms/model_abstraction_level.py @@ -58,6 +58,7 @@ class ModelAbstractionLevel(KGObject, OMModelAbstractionLevel): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/model_scope.py b/fairgraph/openminds/v5/controlled_terms/model_scope.py index e71479cf..9e8ba2ba 100644 --- a/fairgraph/openminds/v5/controlled_terms/model_scope.py +++ b/fairgraph/openminds/v5/controlled_terms/model_scope.py @@ -64,6 +64,7 @@ class ModelScope(KGObject, OMModelScope): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/modification_consent_requirement.py b/fairgraph/openminds/v5/controlled_terms/modification_consent_requirement.py index 79929f3f..63ac4f16 100644 --- a/fairgraph/openminds/v5/controlled_terms/modification_consent_requirement.py +++ b/fairgraph/openminds/v5/controlled_terms/modification_consent_requirement.py @@ -66,6 +66,7 @@ class ModificationConsentRequirement(KGObject, OMModificationConsentRequirement) ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/modification_constraint.py b/fairgraph/openminds/v5/controlled_terms/modification_constraint.py index 493f5580..ca7104c6 100644 --- a/fairgraph/openminds/v5/controlled_terms/modification_constraint.py +++ b/fairgraph/openminds/v5/controlled_terms/modification_constraint.py @@ -66,6 +66,7 @@ class ModificationConstraint(KGObject, OMModificationConstraint): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/modification_form.py b/fairgraph/openminds/v5/controlled_terms/modification_form.py index 1e5e085a..b4d1d4ad 100644 --- a/fairgraph/openminds/v5/controlled_terms/modification_form.py +++ b/fairgraph/openminds/v5/controlled_terms/modification_form.py @@ -66,6 +66,7 @@ class ModificationForm(KGObject, OMModificationForm): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/modification_scope.py b/fairgraph/openminds/v5/controlled_terms/modification_scope.py index 66e648d1..ffadb317 100644 --- a/fairgraph/openminds/v5/controlled_terms/modification_scope.py +++ b/fairgraph/openminds/v5/controlled_terms/modification_scope.py @@ -66,6 +66,7 @@ class ModificationScope(KGObject, OMModificationScope): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/molecular_entity.py b/fairgraph/openminds/v5/controlled_terms/molecular_entity.py index 13dd193c..33119993 100644 --- a/fairgraph/openminds/v5/controlled_terms/molecular_entity.py +++ b/fairgraph/openminds/v5/controlled_terms/molecular_entity.py @@ -113,6 +113,7 @@ class MolecularEntity(KGObject, OMMolecularEntity): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/mri_fat_suppression_technique.py b/fairgraph/openminds/v5/controlled_terms/mri_fat_suppression_technique.py index b1b30677..89dbed72 100644 --- a/fairgraph/openminds/v5/controlled_terms/mri_fat_suppression_technique.py +++ b/fairgraph/openminds/v5/controlled_terms/mri_fat_suppression_technique.py @@ -69,6 +69,7 @@ class MRIFatSuppressionTechnique(KGObject, OMMRIFatSuppressionTechnique): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/mri_parallel_acquisition_technique.py b/fairgraph/openminds/v5/controlled_terms/mri_parallel_acquisition_technique.py index 0985bec0..32cd7eda 100644 --- a/fairgraph/openminds/v5/controlled_terms/mri_parallel_acquisition_technique.py +++ b/fairgraph/openminds/v5/controlled_terms/mri_parallel_acquisition_technique.py @@ -69,6 +69,7 @@ class MRIParallelAcquisitionTechnique(KGObject, OMMRIParallelAcquisitionTechniqu ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/mri_pulse_sequence.py b/fairgraph/openminds/v5/controlled_terms/mri_pulse_sequence.py index 3a743793..9d8d77b3 100644 --- a/fairgraph/openminds/v5/controlled_terms/mri_pulse_sequence.py +++ b/fairgraph/openminds/v5/controlled_terms/mri_pulse_sequence.py @@ -73,6 +73,7 @@ class MRIPulseSequence(KGObject, OMMRIPulseSequence): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/mri_spoiling_technique.py b/fairgraph/openminds/v5/controlled_terms/mri_spoiling_technique.py index 110c5584..4c198bf8 100644 --- a/fairgraph/openminds/v5/controlled_terms/mri_spoiling_technique.py +++ b/fairgraph/openminds/v5/controlled_terms/mri_spoiling_technique.py @@ -69,6 +69,7 @@ class MRISpoilingTechnique(KGObject, OMMRISpoilingTechnique): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/mri_weighting.py b/fairgraph/openminds/v5/controlled_terms/mri_weighting.py index 46032e3b..d410402c 100644 --- a/fairgraph/openminds/v5/controlled_terms/mri_weighting.py +++ b/fairgraph/openminds/v5/controlled_terms/mri_weighting.py @@ -77,6 +77,7 @@ class MRIWeighting(KGObject, OMMRIWeighting): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/muscular_structure.py b/fairgraph/openminds/v5/controlled_terms/muscular_structure.py index 60b246c7..68d0dbbf 100644 --- a/fairgraph/openminds/v5/controlled_terms/muscular_structure.py +++ b/fairgraph/openminds/v5/controlled_terms/muscular_structure.py @@ -124,6 +124,7 @@ class MuscularStructure(KGObject, OMMuscularStructure): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/nervous_system_structure.py b/fairgraph/openminds/v5/controlled_terms/nervous_system_structure.py index 7e9b8515..a9b6c96a 100644 --- a/fairgraph/openminds/v5/controlled_terms/nervous_system_structure.py +++ b/fairgraph/openminds/v5/controlled_terms/nervous_system_structure.py @@ -124,6 +124,7 @@ class NervousSystemStructure(KGObject, OMNervousSystemStructure): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/olfactory_stimulus_type.py b/fairgraph/openminds/v5/controlled_terms/olfactory_stimulus_type.py index 182b44e2..8340cab9 100644 --- a/fairgraph/openminds/v5/controlled_terms/olfactory_stimulus_type.py +++ b/fairgraph/openminds/v5/controlled_terms/olfactory_stimulus_type.py @@ -100,6 +100,7 @@ class OlfactoryStimulusType(KGObject, OMOlfactoryStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/operating_device.py b/fairgraph/openminds/v5/controlled_terms/operating_device.py index cd9b00f4..93506a3b 100644 --- a/fairgraph/openminds/v5/controlled_terms/operating_device.py +++ b/fairgraph/openminds/v5/controlled_terms/operating_device.py @@ -65,6 +65,7 @@ class OperatingDevice(KGObject, OMOperatingDevice): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/operating_system.py b/fairgraph/openminds/v5/controlled_terms/operating_system.py index 4d53579e..31b94113 100644 --- a/fairgraph/openminds/v5/controlled_terms/operating_system.py +++ b/fairgraph/openminds/v5/controlled_terms/operating_system.py @@ -65,6 +65,7 @@ class OperatingSystem(KGObject, OMOperatingSystem): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/operational_approach.py b/fairgraph/openminds/v5/controlled_terms/operational_approach.py index 326113de..d05bd34a 100644 --- a/fairgraph/openminds/v5/controlled_terms/operational_approach.py +++ b/fairgraph/openminds/v5/controlled_terms/operational_approach.py @@ -63,6 +63,7 @@ class OperationalApproach(KGObject, OMOperationalApproach): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/optical_stimulus_type.py b/fairgraph/openminds/v5/controlled_terms/optical_stimulus_type.py index 1c9907c2..2134622e 100644 --- a/fairgraph/openminds/v5/controlled_terms/optical_stimulus_type.py +++ b/fairgraph/openminds/v5/controlled_terms/optical_stimulus_type.py @@ -100,6 +100,7 @@ class OpticalStimulusType(KGObject, OMOpticalStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/organ.py b/fairgraph/openminds/v5/controlled_terms/organ.py index aa463e91..1167fe87 100644 --- a/fairgraph/openminds/v5/controlled_terms/organ.py +++ b/fairgraph/openminds/v5/controlled_terms/organ.py @@ -130,6 +130,7 @@ class Organ(KGObject, OMOrgan): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/organ_system_structure.py b/fairgraph/openminds/v5/controlled_terms/organ_system_structure.py index 9b5e7f58..c04ea03e 100644 --- a/fairgraph/openminds/v5/controlled_terms/organ_system_structure.py +++ b/fairgraph/openminds/v5/controlled_terms/organ_system_structure.py @@ -124,6 +124,7 @@ class OrganSystemStructure(KGObject, OMOrganSystemStructure): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/organism_substance.py b/fairgraph/openminds/v5/controlled_terms/organism_substance.py index d7bacc45..e11671e4 100644 --- a/fairgraph/openminds/v5/controlled_terms/organism_substance.py +++ b/fairgraph/openminds/v5/controlled_terms/organism_substance.py @@ -130,6 +130,7 @@ class OrganismSubstance(KGObject, OMOrganismSubstance): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/organism_system.py b/fairgraph/openminds/v5/controlled_terms/organism_system.py index 70ba40b5..ca8cf8f7 100644 --- a/fairgraph/openminds/v5/controlled_terms/organism_system.py +++ b/fairgraph/openminds/v5/controlled_terms/organism_system.py @@ -124,6 +124,7 @@ class OrganismSystem(KGObject, OMOrganismSystem): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/organization_type.py b/fairgraph/openminds/v5/controlled_terms/organization_type.py index cf15948c..0c85b288 100644 --- a/fairgraph/openminds/v5/controlled_terms/organization_type.py +++ b/fairgraph/openminds/v5/controlled_terms/organization_type.py @@ -66,6 +66,7 @@ class OrganizationType(KGObject, OMOrganizationType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/patch_clamp_variation.py b/fairgraph/openminds/v5/controlled_terms/patch_clamp_variation.py index 4353e3cf..65272eaf 100644 --- a/fairgraph/openminds/v5/controlled_terms/patch_clamp_variation.py +++ b/fairgraph/openminds/v5/controlled_terms/patch_clamp_variation.py @@ -66,6 +66,7 @@ class PatchClampVariation(KGObject, OMPatchClampVariation): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/payment_model_type.py b/fairgraph/openminds/v5/controlled_terms/payment_model_type.py index 3aabb06b..d48ba0dd 100644 --- a/fairgraph/openminds/v5/controlled_terms/payment_model_type.py +++ b/fairgraph/openminds/v5/controlled_terms/payment_model_type.py @@ -66,6 +66,7 @@ class PaymentModelType(KGObject, OMPaymentModelType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/preparation_type.py b/fairgraph/openminds/v5/controlled_terms/preparation_type.py index 0053a162..6d240993 100644 --- a/fairgraph/openminds/v5/controlled_terms/preparation_type.py +++ b/fairgraph/openminds/v5/controlled_terms/preparation_type.py @@ -84,6 +84,7 @@ class PreparationType(KGObject, OMPreparationType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/programming_language.py b/fairgraph/openminds/v5/controlled_terms/programming_language.py index ba352c36..6b620d4a 100644 --- a/fairgraph/openminds/v5/controlled_terms/programming_language.py +++ b/fairgraph/openminds/v5/controlled_terms/programming_language.py @@ -65,6 +65,7 @@ class ProgrammingLanguage(KGObject, OMProgrammingLanguage): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/project_type.py b/fairgraph/openminds/v5/controlled_terms/project_type.py index 3e6f9b17..557378e0 100644 --- a/fairgraph/openminds/v5/controlled_terms/project_type.py +++ b/fairgraph/openminds/v5/controlled_terms/project_type.py @@ -66,6 +66,7 @@ class ProjectType(KGObject, OMProjectType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/publication_status.py b/fairgraph/openminds/v5/controlled_terms/publication_status.py index dc9a2d91..1073151c 100644 --- a/fairgraph/openminds/v5/controlled_terms/publication_status.py +++ b/fairgraph/openminds/v5/controlled_terms/publication_status.py @@ -67,6 +67,7 @@ class PublicationStatus(KGObject, OMPublicationStatus): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/pulse_shape.py b/fairgraph/openminds/v5/controlled_terms/pulse_shape.py index bbfa0fc2..d09f9c78 100644 --- a/fairgraph/openminds/v5/controlled_terms/pulse_shape.py +++ b/fairgraph/openminds/v5/controlled_terms/pulse_shape.py @@ -66,6 +66,7 @@ class PulseShape(KGObject, OMPulseShape): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/qualitative_overlap.py b/fairgraph/openminds/v5/controlled_terms/qualitative_overlap.py index 3a06b997..44c34b6a 100644 --- a/fairgraph/openminds/v5/controlled_terms/qualitative_overlap.py +++ b/fairgraph/openminds/v5/controlled_terms/qualitative_overlap.py @@ -58,6 +58,7 @@ class QualitativeOverlap(KGObject, OMQualitativeOverlap): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/semantic_data_type.py b/fairgraph/openminds/v5/controlled_terms/semantic_data_type.py index 3e4fe7c3..e1022017 100644 --- a/fairgraph/openminds/v5/controlled_terms/semantic_data_type.py +++ b/fairgraph/openminds/v5/controlled_terms/semantic_data_type.py @@ -58,6 +58,7 @@ class SemanticDataType(KGObject, OMSemanticDataType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/setup_type.py b/fairgraph/openminds/v5/controlled_terms/setup_type.py index c9193f1d..bc6c3779 100644 --- a/fairgraph/openminds/v5/controlled_terms/setup_type.py +++ b/fairgraph/openminds/v5/controlled_terms/setup_type.py @@ -66,6 +66,7 @@ class SetupType(KGObject, OMSetupType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/signal_directionality.py b/fairgraph/openminds/v5/controlled_terms/signal_directionality.py index 7aa247ff..9966c038 100644 --- a/fairgraph/openminds/v5/controlled_terms/signal_directionality.py +++ b/fairgraph/openminds/v5/controlled_terms/signal_directionality.py @@ -66,6 +66,7 @@ class SignalDirectionality(KGObject, OMSignalDirectionality): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/skeletal_structure.py b/fairgraph/openminds/v5/controlled_terms/skeletal_structure.py index d3eef24b..8744fabd 100644 --- a/fairgraph/openminds/v5/controlled_terms/skeletal_structure.py +++ b/fairgraph/openminds/v5/controlled_terms/skeletal_structure.py @@ -124,6 +124,7 @@ class SkeletalStructure(KGObject, OMSkeletalStructure): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/software_application_category.py b/fairgraph/openminds/v5/controlled_terms/software_application_category.py index bc08e184..56c83cbc 100644 --- a/fairgraph/openminds/v5/controlled_terms/software_application_category.py +++ b/fairgraph/openminds/v5/controlled_terms/software_application_category.py @@ -63,6 +63,7 @@ class SoftwareApplicationCategory(KGObject, OMSoftwareApplicationCategory): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/software_feature.py b/fairgraph/openminds/v5/controlled_terms/software_feature.py index 3f675cf8..5647f38b 100644 --- a/fairgraph/openminds/v5/controlled_terms/software_feature.py +++ b/fairgraph/openminds/v5/controlled_terms/software_feature.py @@ -63,6 +63,7 @@ class SoftwareFeature(KGObject, OMSoftwareFeature): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/sovereign_state.py b/fairgraph/openminds/v5/controlled_terms/sovereign_state.py index e2ad4edb..464500d6 100644 --- a/fairgraph/openminds/v5/controlled_terms/sovereign_state.py +++ b/fairgraph/openminds/v5/controlled_terms/sovereign_state.py @@ -74,6 +74,7 @@ class SovereignState(KGObject, OMSovereignState): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/spatial_encoding.py b/fairgraph/openminds/v5/controlled_terms/spatial_encoding.py index aebfb22a..3caca858 100644 --- a/fairgraph/openminds/v5/controlled_terms/spatial_encoding.py +++ b/fairgraph/openminds/v5/controlled_terms/spatial_encoding.py @@ -69,6 +69,7 @@ class SpatialEncoding(KGObject, OMSpatialEncoding): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/species.py b/fairgraph/openminds/v5/controlled_terms/species.py index 711a5765..360f1e83 100644 --- a/fairgraph/openminds/v5/controlled_terms/species.py +++ b/fairgraph/openminds/v5/controlled_terms/species.py @@ -112,6 +112,7 @@ class Species(KGObject, OMSpecies): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/stimulation_approach.py b/fairgraph/openminds/v5/controlled_terms/stimulation_approach.py index 0f257afe..f7aed25a 100644 --- a/fairgraph/openminds/v5/controlled_terms/stimulation_approach.py +++ b/fairgraph/openminds/v5/controlled_terms/stimulation_approach.py @@ -73,6 +73,7 @@ class StimulationApproach(KGObject, OMStimulationApproach): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/stimulation_technique.py b/fairgraph/openminds/v5/controlled_terms/stimulation_technique.py index ce7fd4e8..47aa48e9 100644 --- a/fairgraph/openminds/v5/controlled_terms/stimulation_technique.py +++ b/fairgraph/openminds/v5/controlled_terms/stimulation_technique.py @@ -73,6 +73,7 @@ class StimulationTechnique(KGObject, OMStimulationTechnique): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/subcellular_entity.py b/fairgraph/openminds/v5/controlled_terms/subcellular_entity.py index 36ff5d32..98504586 100644 --- a/fairgraph/openminds/v5/controlled_terms/subcellular_entity.py +++ b/fairgraph/openminds/v5/controlled_terms/subcellular_entity.py @@ -116,6 +116,7 @@ class SubcellularEntity(KGObject, OMSubcellularEntity): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/subject_attribute.py b/fairgraph/openminds/v5/controlled_terms/subject_attribute.py index 912eacc5..39a394a7 100644 --- a/fairgraph/openminds/v5/controlled_terms/subject_attribute.py +++ b/fairgraph/openminds/v5/controlled_terms/subject_attribute.py @@ -66,6 +66,7 @@ class SubjectAttribute(KGObject, OMSubjectAttribute): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/supranational_body.py b/fairgraph/openminds/v5/controlled_terms/supranational_body.py index a8e5f125..7c7f4176 100644 --- a/fairgraph/openminds/v5/controlled_terms/supranational_body.py +++ b/fairgraph/openminds/v5/controlled_terms/supranational_body.py @@ -66,6 +66,7 @@ class SupranationalBody(KGObject, OMSupranationalBody): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/tactile_stimulus_type.py b/fairgraph/openminds/v5/controlled_terms/tactile_stimulus_type.py index 2f839fbc..aead7fc4 100644 --- a/fairgraph/openminds/v5/controlled_terms/tactile_stimulus_type.py +++ b/fairgraph/openminds/v5/controlled_terms/tactile_stimulus_type.py @@ -100,6 +100,7 @@ class TactileStimulusType(KGObject, OMTactileStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/technique.py b/fairgraph/openminds/v5/controlled_terms/technique.py index 1e82340d..37313fac 100644 --- a/fairgraph/openminds/v5/controlled_terms/technique.py +++ b/fairgraph/openminds/v5/controlled_terms/technique.py @@ -85,6 +85,7 @@ class Technique(KGObject, OMTechnique): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/term_suggestion.py b/fairgraph/openminds/v5/controlled_terms/term_suggestion.py index 3f9fe399..e2d6dde2 100644 --- a/fairgraph/openminds/v5/controlled_terms/term_suggestion.py +++ b/fairgraph/openminds/v5/controlled_terms/term_suggestion.py @@ -97,6 +97,7 @@ class TermSuggestion(KGObject, OMTermSuggestion): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/terminology.py b/fairgraph/openminds/v5/controlled_terms/terminology.py index 87aa5205..385af159 100644 --- a/fairgraph/openminds/v5/controlled_terms/terminology.py +++ b/fairgraph/openminds/v5/controlled_terms/terminology.py @@ -66,6 +66,7 @@ class Terminology(KGObject, OMTerminology): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/tissue_sample_attribute.py b/fairgraph/openminds/v5/controlled_terms/tissue_sample_attribute.py index 1a4aa59d..c752832e 100644 --- a/fairgraph/openminds/v5/controlled_terms/tissue_sample_attribute.py +++ b/fairgraph/openminds/v5/controlled_terms/tissue_sample_attribute.py @@ -66,6 +66,7 @@ class TissueSampleAttribute(KGObject, OMTissueSampleAttribute): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/tissue_sample_type.py b/fairgraph/openminds/v5/controlled_terms/tissue_sample_type.py index 004cc653..ae1519aa 100644 --- a/fairgraph/openminds/v5/controlled_terms/tissue_sample_type.py +++ b/fairgraph/openminds/v5/controlled_terms/tissue_sample_type.py @@ -100,6 +100,7 @@ class TissueSampleType(KGObject, OMTissueSampleType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/tissue_structure.py b/fairgraph/openminds/v5/controlled_terms/tissue_structure.py index fddb3bfa..0172d265 100644 --- a/fairgraph/openminds/v5/controlled_terms/tissue_structure.py +++ b/fairgraph/openminds/v5/controlled_terms/tissue_structure.py @@ -124,6 +124,7 @@ class TissueStructure(KGObject, OMTissueStructure): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/type_of_uncertainty.py b/fairgraph/openminds/v5/controlled_terms/type_of_uncertainty.py index 1f6b8dee..9cce065e 100644 --- a/fairgraph/openminds/v5/controlled_terms/type_of_uncertainty.py +++ b/fairgraph/openminds/v5/controlled_terms/type_of_uncertainty.py @@ -58,6 +58,7 @@ class TypeOfUncertainty(KGObject, OMTypeOfUncertainty): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/unit_of_measurement.py b/fairgraph/openminds/v5/controlled_terms/unit_of_measurement.py index 1f5097b8..3905af99 100644 --- a/fairgraph/openminds/v5/controlled_terms/unit_of_measurement.py +++ b/fairgraph/openminds/v5/controlled_terms/unit_of_measurement.py @@ -65,6 +65,7 @@ class UnitOfMeasurement(KGObject, OMUnitOfMeasurement): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/vascular_structure.py b/fairgraph/openminds/v5/controlled_terms/vascular_structure.py index 303d7f80..358ae023 100644 --- a/fairgraph/openminds/v5/controlled_terms/vascular_structure.py +++ b/fairgraph/openminds/v5/controlled_terms/vascular_structure.py @@ -124,6 +124,7 @@ class VascularStructure(KGObject, OMVascularStructure): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/visual_stimulus_type.py b/fairgraph/openminds/v5/controlled_terms/visual_stimulus_type.py index ecd7a7fd..dafe7d1b 100644 --- a/fairgraph/openminds/v5/controlled_terms/visual_stimulus_type.py +++ b/fairgraph/openminds/v5/controlled_terms/visual_stimulus_type.py @@ -100,6 +100,7 @@ class VisualStimulusType(KGObject, OMVisualStimulusType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/controlled_terms/weight_type.py b/fairgraph/openminds/v5/controlled_terms/weight_type.py index 8cb83e8e..955fb2ad 100644 --- a/fairgraph/openminds/v5/controlled_terms/weight_type.py +++ b/fairgraph/openminds/v5/controlled_terms/weight_type.py @@ -58,6 +58,7 @@ class WeightType(KGObject, OMWeightType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/actors/consortium.py b/fairgraph/openminds/v5/core/actors/consortium.py index f09b3ec0..445e3f78 100644 --- a/fairgraph/openminds/v5/core/actors/consortium.py +++ b/fairgraph/openminds/v5/core/actors/consortium.py @@ -32,6 +32,7 @@ class Consortium(KGObject, OMConsortium): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("full_name", "memberships") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/actors/organization.py b/fairgraph/openminds/v5/core/actors/organization.py index d8056dde..4b63670a 100644 --- a/fairgraph/openminds/v5/core/actors/organization.py +++ b/fairgraph/openminds/v5/core/actors/organization.py @@ -103,6 +103,7 @@ class Organization(KGObject, OMOrganization): ), ] existence_query_properties = ("country_of_formation", "name", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/actors/person.py b/fairgraph/openminds/v5/core/actors/person.py index c5083af8..48966c6f 100644 --- a/fairgraph/openminds/v5/core/actors/person.py +++ b/fairgraph/openminds/v5/core/actors/person.py @@ -120,6 +120,7 @@ class Person(KGObject, OMPerson): ), ] existence_query_properties = ("given_name", "family_name") + sort_property = "family_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/content_type.py b/fairgraph/openminds/v5/core/data/content_type.py index 418b8c14..a294a081 100644 --- a/fairgraph/openminds/v5/core/data/content_type.py +++ b/fairgraph/openminds/v5/core/data/content_type.py @@ -74,6 +74,7 @@ class ContentType(KGObject, OMContentType): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/content_type_pattern.py b/fairgraph/openminds/v5/core/data/content_type_pattern.py index 53f33132..464a2fea 100644 --- a/fairgraph/openminds/v5/core/data/content_type_pattern.py +++ b/fairgraph/openminds/v5/core/data/content_type_pattern.py @@ -28,6 +28,7 @@ class ContentTypePattern(KGObject, OMContentTypePattern): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/file.py b/fairgraph/openminds/v5/core/data/file.py index 45d4fb19..a432a47d 100644 --- a/fairgraph/openminds/v5/core/data/file.py +++ b/fairgraph/openminds/v5/core/data/file.py @@ -205,6 +205,7 @@ class File(KGObject, OMFile): ] aliases = {"hash": "hashes"} existence_query_properties = ("iri", "hashes") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/file_bundle.py b/fairgraph/openminds/v5/core/data/file_bundle.py index e9d79459..78e56d23 100644 --- a/fairgraph/openminds/v5/core/data/file_bundle.py +++ b/fairgraph/openminds/v5/core/data/file_bundle.py @@ -111,6 +111,7 @@ class FileBundle(KGObject, OMFileBundle): ), ] existence_query_properties = ("is_part_of", "name") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/file_repository.py b/fairgraph/openminds/v5/core/data/file_repository.py index d7ba9078..418dc89e 100644 --- a/fairgraph/openminds/v5/core/data/file_repository.py +++ b/fairgraph/openminds/v5/core/data/file_repository.py @@ -58,6 +58,7 @@ class FileRepository(KGObject, OMFileRepository): ), ] existence_query_properties = ("iri",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/file_repository_structure.py b/fairgraph/openminds/v5/core/data/file_repository_structure.py index 65b565f0..521fc32d 100644 --- a/fairgraph/openminds/v5/core/data/file_repository_structure.py +++ b/fairgraph/openminds/v5/core/data/file_repository_structure.py @@ -28,6 +28,7 @@ class FileRepositoryStructure(KGObject, OMFileRepositoryStructure): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/grid_image.py b/fairgraph/openminds/v5/core/data/grid_image.py index 9edb1bd2..bff8f481 100644 --- a/fairgraph/openminds/v5/core/data/grid_image.py +++ b/fairgraph/openminds/v5/core/data/grid_image.py @@ -19,6 +19,7 @@ class GridImage(KGObject, OMGridImage): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("data_location", "dimensions", "pixel_sizes") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/grid_image_sequence.py b/fairgraph/openminds/v5/core/data/grid_image_sequence.py index fc834bf7..430f371e 100644 --- a/fairgraph/openminds/v5/core/data/grid_image_sequence.py +++ b/fairgraph/openminds/v5/core/data/grid_image_sequence.py @@ -19,6 +19,7 @@ class GridImageSequence(KGObject, OMGridImageSequence): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("data_location", "dimensions", "pixel_sizes", "temporal_sampling_frequency") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/grid_image_stack.py b/fairgraph/openminds/v5/core/data/grid_image_stack.py index 5c87522e..d4fae8e6 100644 --- a/fairgraph/openminds/v5/core/data/grid_image_stack.py +++ b/fairgraph/openminds/v5/core/data/grid_image_stack.py @@ -19,6 +19,7 @@ class GridImageStack(KGObject, OMGridImageStack): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("data_location", "dimensions", "pixel_sizes", "z_step_size") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/grid_volume.py b/fairgraph/openminds/v5/core/data/grid_volume.py index 6b75a54a..d72051e0 100644 --- a/fairgraph/openminds/v5/core/data/grid_volume.py +++ b/fairgraph/openminds/v5/core/data/grid_volume.py @@ -19,6 +19,7 @@ class GridVolume(KGObject, OMGridVolume): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("data_location", "dimensions", "voxel_sizes") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/grid_volume_sequence.py b/fairgraph/openminds/v5/core/data/grid_volume_sequence.py index dbf1d429..fcfdee1a 100644 --- a/fairgraph/openminds/v5/core/data/grid_volume_sequence.py +++ b/fairgraph/openminds/v5/core/data/grid_volume_sequence.py @@ -19,6 +19,7 @@ class GridVolumeSequence(KGObject, OMGridVolumeSequence): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("data_location", "dimensions", "temporal_sampling_frequency", "voxel_sizes") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/license.py b/fairgraph/openminds/v5/core/data/license.py index 2a202bbf..df116556 100644 --- a/fairgraph/openminds/v5/core/data/license.py +++ b/fairgraph/openminds/v5/core/data/license.py @@ -56,6 +56,7 @@ class License(KGObject, OMLicense): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("alias",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/local_file.py b/fairgraph/openminds/v5/core/data/local_file.py index 94432f49..28651aa7 100644 --- a/fairgraph/openminds/v5/core/data/local_file.py +++ b/fairgraph/openminds/v5/core/data/local_file.py @@ -44,6 +44,7 @@ class LocalFile(KGObject, OMLocalFile): ), ] existence_query_properties = ("name", "hashes") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/regular_time_series.py b/fairgraph/openminds/v5/core/data/regular_time_series.py index e7fd6d72..8b7a415b 100644 --- a/fairgraph/openminds/v5/core/data/regular_time_series.py +++ b/fairgraph/openminds/v5/core/data/regular_time_series.py @@ -28,6 +28,7 @@ class RegularTimeSeries(KGObject, OMRegularTimeSeries): ), ] existence_query_properties = ("channels", "data_location", "sampling_frequency") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/data/usage_agreement.py b/fairgraph/openminds/v5/core/data/usage_agreement.py index 393c3ec3..46c9e8ac 100644 --- a/fairgraph/openminds/v5/core/data/usage_agreement.py +++ b/fairgraph/openminds/v5/core/data/usage_agreement.py @@ -60,6 +60,7 @@ class UsageAgreement(KGObject, OMUsageAgreement): "short_name", "template", ) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/dataset.py b/fairgraph/openminds/v5/core/products/dataset.py index fb49d566..936f4936 100644 --- a/fairgraph/openminds/v5/core/products/dataset.py +++ b/fairgraph/openminds/v5/core/products/dataset.py @@ -56,6 +56,7 @@ class Dataset(KGObject, OMDataset): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/dataset_version.py b/fairgraph/openminds/v5/core/products/dataset_version.py index 089f94fa..b108ec8a 100644 --- a/fairgraph/openminds/v5/core/products/dataset_version.py +++ b/fairgraph/openminds/v5/core/products/dataset_version.py @@ -102,6 +102,7 @@ class DatasetVersion(KGObject, OMDatasetVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/hardware_product.py b/fairgraph/openminds/v5/core/products/hardware_product.py index 951a64a1..831017ee 100644 --- a/fairgraph/openminds/v5/core/products/hardware_product.py +++ b/fairgraph/openminds/v5/core/products/hardware_product.py @@ -35,6 +35,7 @@ class HardwareProduct(KGObject, OMHardwareProduct): ), ] existence_query_properties = ("contributions", "name", "scopes", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/interface.py b/fairgraph/openminds/v5/core/products/interface.py index 75a8017a..f133fc76 100644 --- a/fairgraph/openminds/v5/core/products/interface.py +++ b/fairgraph/openminds/v5/core/products/interface.py @@ -64,6 +64,7 @@ class Interface(KGObject, OMInterface): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/interface_version.py b/fairgraph/openminds/v5/core/products/interface_version.py index f1acfb16..84241a0b 100644 --- a/fairgraph/openminds/v5/core/products/interface_version.py +++ b/fairgraph/openminds/v5/core/products/interface_version.py @@ -81,6 +81,7 @@ class InterfaceVersion(KGObject, OMInterfaceVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/meta_data_model.py b/fairgraph/openminds/v5/core/products/meta_data_model.py index 4dc419d3..04b69e4a 100644 --- a/fairgraph/openminds/v5/core/products/meta_data_model.py +++ b/fairgraph/openminds/v5/core/products/meta_data_model.py @@ -56,6 +56,7 @@ class MetaDataModel(KGObject, OMMetaDataModel): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/meta_data_model_version.py b/fairgraph/openminds/v5/core/products/meta_data_model_version.py index 0293531f..76f037c1 100644 --- a/fairgraph/openminds/v5/core/products/meta_data_model_version.py +++ b/fairgraph/openminds/v5/core/products/meta_data_model_version.py @@ -65,6 +65,7 @@ class MetaDataModelVersion(KGObject, OMMetaDataModelVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/model.py b/fairgraph/openminds/v5/core/products/model.py index a9bf8294..78a006ce 100644 --- a/fairgraph/openminds/v5/core/products/model.py +++ b/fairgraph/openminds/v5/core/products/model.py @@ -56,6 +56,7 @@ class Model(KGObject, OMModel): ] aliases = {"name": "full_name", "model_scope": "scope", "alias": "short_name"} existence_query_properties = ("full_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/model_version.py b/fairgraph/openminds/v5/core/products/model_version.py index b50421fd..bb555219 100644 --- a/fairgraph/openminds/v5/core/products/model_version.py +++ b/fairgraph/openminds/v5/core/products/model_version.py @@ -103,6 +103,7 @@ class ModelVersion(KGObject, OMModelVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("full_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/project.py b/fairgraph/openminds/v5/core/products/project.py index 50698305..6b8b3426 100644 --- a/fairgraph/openminds/v5/core/products/project.py +++ b/fairgraph/openminds/v5/core/products/project.py @@ -23,6 +23,7 @@ class Project(KGObject, OMProject): reverse_properties = [] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/service.py b/fairgraph/openminds/v5/core/products/service.py index 63fbc15a..9830b3be 100644 --- a/fairgraph/openminds/v5/core/products/service.py +++ b/fairgraph/openminds/v5/core/products/service.py @@ -61,6 +61,7 @@ class Service(KGObject, OMService): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/setup.py b/fairgraph/openminds/v5/core/products/setup.py index f22263aa..c6e74d78 100644 --- a/fairgraph/openminds/v5/core/products/setup.py +++ b/fairgraph/openminds/v5/core/products/setup.py @@ -36,6 +36,7 @@ class Setup(KGObject, OMSetup): ), ] existence_query_properties = ("description", "has_parts", "name") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/software.py b/fairgraph/openminds/v5/core/products/software.py index 2e4aa13a..b52f1f25 100644 --- a/fairgraph/openminds/v5/core/products/software.py +++ b/fairgraph/openminds/v5/core/products/software.py @@ -56,6 +56,7 @@ class Software(KGObject, OMSoftware): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/products/software_version.py b/fairgraph/openminds/v5/core/products/software_version.py index 13da4f32..17de6704 100644 --- a/fairgraph/openminds/v5/core/products/software_version.py +++ b/fairgraph/openminds/v5/core/products/software_version.py @@ -102,6 +102,7 @@ class SoftwareVersion(KGObject, OMSoftwareVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/behavioral_protocol.py b/fairgraph/openminds/v5/core/research/behavioral_protocol.py index f24073c3..688bb3db 100644 --- a/fairgraph/openminds/v5/core/research/behavioral_protocol.py +++ b/fairgraph/openminds/v5/core/research/behavioral_protocol.py @@ -44,6 +44,7 @@ class BehavioralProtocol(KGObject, OMBehavioralProtocol): ), ] existence_query_properties = ("description", "name") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/configuration.py b/fairgraph/openminds/v5/core/research/configuration.py index dda18706..840b40e6 100644 --- a/fairgraph/openminds/v5/core/research/configuration.py +++ b/fairgraph/openminds/v5/core/research/configuration.py @@ -41,6 +41,7 @@ class Configuration(KGObject, OMConfiguration): ), ] existence_query_properties = ("configuration",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/property_value_list.py b/fairgraph/openminds/v5/core/research/property_value_list.py index 5e895c55..94f9a90c 100644 --- a/fairgraph/openminds/v5/core/research/property_value_list.py +++ b/fairgraph/openminds/v5/core/research/property_value_list.py @@ -48,6 +48,7 @@ class PropertyValueList(KGObject, OMPropertyValueList): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/protocol.py b/fairgraph/openminds/v5/core/research/protocol.py index e5a6d2d2..63f2b3a8 100644 --- a/fairgraph/openminds/v5/core/research/protocol.py +++ b/fairgraph/openminds/v5/core/research/protocol.py @@ -44,6 +44,7 @@ class Protocol(KGObject, OMProtocol): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/protocol_execution.py b/fairgraph/openminds/v5/core/research/protocol_execution.py index 7d0ae20c..4d917780 100644 --- a/fairgraph/openminds/v5/core/research/protocol_execution.py +++ b/fairgraph/openminds/v5/core/research/protocol_execution.py @@ -31,6 +31,7 @@ class ProtocolExecution(KGObject, OMProtocolExecution): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/strain.py b/fairgraph/openminds/v5/core/research/strain.py index 126d8dde..19813386 100644 --- a/fairgraph/openminds/v5/core/research/strain.py +++ b/fairgraph/openminds/v5/core/research/strain.py @@ -41,6 +41,7 @@ class Strain(KGObject, OMStrain): ), ] existence_query_properties = ("genetic_strain_type", "name", "species") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/subject.py b/fairgraph/openminds/v5/core/research/subject.py index df663617..a31219c0 100644 --- a/fairgraph/openminds/v5/core/research/subject.py +++ b/fairgraph/openminds/v5/core/research/subject.py @@ -44,6 +44,7 @@ class Subject(KGObject, OMSubject): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/subject_group.py b/fairgraph/openminds/v5/core/research/subject_group.py index df03346b..945a9085 100644 --- a/fairgraph/openminds/v5/core/research/subject_group.py +++ b/fairgraph/openminds/v5/core/research/subject_group.py @@ -52,6 +52,7 @@ class SubjectGroup(KGObject, OMSubjectGroup): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/subject_group_state.py b/fairgraph/openminds/v5/core/research/subject_group_state.py index 7f9e00d3..e0387b86 100644 --- a/fairgraph/openminds/v5/core/research/subject_group_state.py +++ b/fairgraph/openminds/v5/core/research/subject_group_state.py @@ -72,6 +72,7 @@ class SubjectGroupState(KGObject, OMSubjectGroupState): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/subject_state.py b/fairgraph/openminds/v5/core/research/subject_state.py index bedea90f..78905abc 100644 --- a/fairgraph/openminds/v5/core/research/subject_state.py +++ b/fairgraph/openminds/v5/core/research/subject_state.py @@ -99,6 +99,7 @@ class SubjectState(KGObject, OMSubjectState): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/tissue_sample.py b/fairgraph/openminds/v5/core/research/tissue_sample.py index a86d3fd4..79944d6d 100644 --- a/fairgraph/openminds/v5/core/research/tissue_sample.py +++ b/fairgraph/openminds/v5/core/research/tissue_sample.py @@ -44,6 +44,7 @@ class TissueSample(KGObject, OMTissueSample): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/tissue_sample_collection.py b/fairgraph/openminds/v5/core/research/tissue_sample_collection.py index a5c4bcc6..4baa0020 100644 --- a/fairgraph/openminds/v5/core/research/tissue_sample_collection.py +++ b/fairgraph/openminds/v5/core/research/tissue_sample_collection.py @@ -52,6 +52,7 @@ class TissueSampleCollection(KGObject, OMTissueSampleCollection): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/tissue_sample_collection_state.py b/fairgraph/openminds/v5/core/research/tissue_sample_collection_state.py index 38b50252..7a1b5e94 100644 --- a/fairgraph/openminds/v5/core/research/tissue_sample_collection_state.py +++ b/fairgraph/openminds/v5/core/research/tissue_sample_collection_state.py @@ -72,6 +72,7 @@ class TissueSampleCollectionState(KGObject, OMTissueSampleCollectionState): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/core/research/tissue_sample_state.py b/fairgraph/openminds/v5/core/research/tissue_sample_state.py index 9cafd7fc..250dba91 100644 --- a/fairgraph/openminds/v5/core/research/tissue_sample_state.py +++ b/fairgraph/openminds/v5/core/research/tissue_sample_state.py @@ -94,6 +94,7 @@ class TissueSampleState(KGObject, OMTissueSampleState): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/ephys/activity/cell_patching.py b/fairgraph/openminds/v5/ephys/activity/cell_patching.py index f623f13a..00d2e74d 100644 --- a/fairgraph/openminds/v5/ephys/activity/cell_patching.py +++ b/fairgraph/openminds/v5/ephys/activity/cell_patching.py @@ -22,6 +22,7 @@ class CellPatching(KGObject, OMCellPatching): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/ephys/activity/electrode_placement.py b/fairgraph/openminds/v5/ephys/activity/electrode_placement.py index 7908c82b..52352083 100644 --- a/fairgraph/openminds/v5/ephys/activity/electrode_placement.py +++ b/fairgraph/openminds/v5/ephys/activity/electrode_placement.py @@ -22,6 +22,7 @@ class ElectrodePlacement(KGObject, OMElectrodePlacement): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/ephys/activity/recording_activity.py b/fairgraph/openminds/v5/ephys/activity/recording_activity.py index 18c84f6e..108af111 100644 --- a/fairgraph/openminds/v5/ephys/activity/recording_activity.py +++ b/fairgraph/openminds/v5/ephys/activity/recording_activity.py @@ -22,6 +22,7 @@ class RecordingActivity(KGObject, OMRecordingActivity): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/ephys/device/electrode.py b/fairgraph/openminds/v5/ephys/device/electrode.py index 196e9d2e..1a25ffd1 100644 --- a/fairgraph/openminds/v5/ephys/device/electrode.py +++ b/fairgraph/openminds/v5/ephys/device/electrode.py @@ -36,6 +36,7 @@ class Electrode(KGObject, OMElectrode): ), ] existence_query_properties = ("contributions", "name", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/ephys/device/electrode_array.py b/fairgraph/openminds/v5/ephys/device/electrode_array.py index a73f004a..d25edc64 100644 --- a/fairgraph/openminds/v5/ephys/device/electrode_array.py +++ b/fairgraph/openminds/v5/ephys/device/electrode_array.py @@ -36,6 +36,7 @@ class ElectrodeArray(KGObject, OMElectrodeArray): ), ] existence_query_properties = ("contributions", "electrode_identifiers", "name", "number_of_electrodes", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/ephys/device/electrode_array_usage.py b/fairgraph/openminds/v5/ephys/device/electrode_array_usage.py index 671c54f6..4a6ba70f 100644 --- a/fairgraph/openminds/v5/ephys/device/electrode_array_usage.py +++ b/fairgraph/openminds/v5/ephys/device/electrode_array_usage.py @@ -60,6 +60,7 @@ class ElectrodeArrayUsage(KGObject, OMElectrodeArrayUsage): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/ephys/device/electrode_usage.py b/fairgraph/openminds/v5/ephys/device/electrode_usage.py index 50d5d779..63fc27c6 100644 --- a/fairgraph/openminds/v5/ephys/device/electrode_usage.py +++ b/fairgraph/openminds/v5/ephys/device/electrode_usage.py @@ -60,6 +60,7 @@ class ElectrodeUsage(KGObject, OMElectrodeUsage): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/ephys/device/pipette.py b/fairgraph/openminds/v5/ephys/device/pipette.py index ef5abc3a..8f0f98f5 100644 --- a/fairgraph/openminds/v5/ephys/device/pipette.py +++ b/fairgraph/openminds/v5/ephys/device/pipette.py @@ -36,6 +36,7 @@ class Pipette(KGObject, OMPipette): ), ] existence_query_properties = ("contributions", "name", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/ephys/device/pipette_usage.py b/fairgraph/openminds/v5/ephys/device/pipette_usage.py index facd308e..53690f63 100644 --- a/fairgraph/openminds/v5/ephys/device/pipette_usage.py +++ b/fairgraph/openminds/v5/ephys/device/pipette_usage.py @@ -60,6 +60,7 @@ class PipetteUsage(KGObject, OMPipetteUsage): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/neuroimaging/activity/dynamic_mri_acquisition.py b/fairgraph/openminds/v5/neuroimaging/activity/dynamic_mri_acquisition.py index 3206a3ba..cff4e3ac 100644 --- a/fairgraph/openminds/v5/neuroimaging/activity/dynamic_mri_acquisition.py +++ b/fairgraph/openminds/v5/neuroimaging/activity/dynamic_mri_acquisition.py @@ -22,6 +22,7 @@ class DynamicMRIAcquisition(KGObject, OMDynamicMRIAcquisition): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/neuroimaging/activity/static_mri_acquisition.py b/fairgraph/openminds/v5/neuroimaging/activity/static_mri_acquisition.py index 7b29fa9b..14d9f530 100644 --- a/fairgraph/openminds/v5/neuroimaging/activity/static_mri_acquisition.py +++ b/fairgraph/openminds/v5/neuroimaging/activity/static_mri_acquisition.py @@ -22,6 +22,7 @@ class StaticMRIAcquisition(KGObject, OMStaticMRIAcquisition): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/neuroimaging/device/mri_coil.py b/fairgraph/openminds/v5/neuroimaging/device/mri_coil.py index 48641b42..d84cdf54 100644 --- a/fairgraph/openminds/v5/neuroimaging/device/mri_coil.py +++ b/fairgraph/openminds/v5/neuroimaging/device/mri_coil.py @@ -36,6 +36,7 @@ class MRICoil(KGObject, OMMRICoil): ), ] existence_query_properties = ("contributions", "element_count", "mounting_type", "name", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/neuroimaging/device/mri_coil_usage.py b/fairgraph/openminds/v5/neuroimaging/device/mri_coil_usage.py index 130483c8..d39778f5 100644 --- a/fairgraph/openminds/v5/neuroimaging/device/mri_coil_usage.py +++ b/fairgraph/openminds/v5/neuroimaging/device/mri_coil_usage.py @@ -60,6 +60,7 @@ class MRICoilUsage(KGObject, OMMRICoilUsage): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/neuroimaging/device/mri_scanner.py b/fairgraph/openminds/v5/neuroimaging/device/mri_scanner.py index ac8cae27..7cfacfbb 100644 --- a/fairgraph/openminds/v5/neuroimaging/device/mri_scanner.py +++ b/fairgraph/openminds/v5/neuroimaging/device/mri_scanner.py @@ -36,6 +36,7 @@ class MRIScanner(KGObject, OMMRIScanner): ), ] existence_query_properties = ("contributions", "magnetic_field_strength", "name", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/neuroimaging/device/mri_scanner_usage.py b/fairgraph/openminds/v5/neuroimaging/device/mri_scanner_usage.py index 9724c766..0baf8d32 100644 --- a/fairgraph/openminds/v5/neuroimaging/device/mri_scanner_usage.py +++ b/fairgraph/openminds/v5/neuroimaging/device/mri_scanner_usage.py @@ -67,6 +67,7 @@ class MRIScannerUsage(KGObject, OMMRIScannerUsage): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/publications/book.py b/fairgraph/openminds/v5/publications/book.py index 6a485e91..262283c6 100644 --- a/fairgraph/openminds/v5/publications/book.py +++ b/fairgraph/openminds/v5/publications/book.py @@ -62,6 +62,7 @@ class Book(KGObject, OMBook): ), ] existence_query_properties = ("name", "publication_date") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/publications/chapter.py b/fairgraph/openminds/v5/publications/chapter.py index 6f45be31..4240f000 100644 --- a/fairgraph/openminds/v5/publications/chapter.py +++ b/fairgraph/openminds/v5/publications/chapter.py @@ -54,6 +54,7 @@ class Chapter(KGObject, OMChapter): ), ] existence_query_properties = ("contributions", "is_part_of", "name", "publication_date") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/publications/learning_resource.py b/fairgraph/openminds/v5/publications/learning_resource.py index 6945fc5b..cc9b2a8f 100644 --- a/fairgraph/openminds/v5/publications/learning_resource.py +++ b/fairgraph/openminds/v5/publications/learning_resource.py @@ -23,6 +23,7 @@ class LearningResource(KGObject, OMLearningResource): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("about", "name", "publication_date") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/publications/live_paper.py b/fairgraph/openminds/v5/publications/live_paper.py index 5ff27cf1..bb4d45e6 100644 --- a/fairgraph/openminds/v5/publications/live_paper.py +++ b/fairgraph/openminds/v5/publications/live_paper.py @@ -56,6 +56,7 @@ class LivePaper(KGObject, OMLivePaper): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("full_name", "short_name") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/publications/live_paper_resource_item.py b/fairgraph/openminds/v5/publications/live_paper_resource_item.py index c8ae7657..def2cbd5 100644 --- a/fairgraph/openminds/v5/publications/live_paper_resource_item.py +++ b/fairgraph/openminds/v5/publications/live_paper_resource_item.py @@ -31,6 +31,7 @@ class LivePaperResourceItem(KGObject, OMLivePaperResourceItem): ), ] existence_query_properties = ("name", "iri", "is_part_of") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/publications/live_paper_section.py b/fairgraph/openminds/v5/publications/live_paper_section.py index 26068c6c..4c8e1fff 100644 --- a/fairgraph/openminds/v5/publications/live_paper_section.py +++ b/fairgraph/openminds/v5/publications/live_paper_section.py @@ -28,6 +28,7 @@ class LivePaperSection(KGObject, OMLivePaperSection): ), ] existence_query_properties = ("is_part_of", "name", "order", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/publications/live_paper_version.py b/fairgraph/openminds/v5/publications/live_paper_version.py index bbc9cebc..1df184ca 100644 --- a/fairgraph/openminds/v5/publications/live_paper_version.py +++ b/fairgraph/openminds/v5/publications/live_paper_version.py @@ -66,6 +66,7 @@ class LivePaperVersion(KGObject, OMLivePaperVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/publications/periodical.py b/fairgraph/openminds/v5/publications/periodical.py index 6597d13c..b5fa77ea 100644 --- a/fairgraph/openminds/v5/publications/periodical.py +++ b/fairgraph/openminds/v5/publications/periodical.py @@ -28,6 +28,7 @@ class Periodical(KGObject, OMPeriodical): ), ] existence_query_properties = ("abbreviation",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/publications/scholarly_article.py b/fairgraph/openminds/v5/publications/scholarly_article.py index b8a697f5..1c14b076 100644 --- a/fairgraph/openminds/v5/publications/scholarly_article.py +++ b/fairgraph/openminds/v5/publications/scholarly_article.py @@ -56,6 +56,7 @@ class ScholarlyArticle(KGObject, OMScholarlyArticle): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/sands/atlas/anatomical_atlas.py b/fairgraph/openminds/v5/sands/atlas/anatomical_atlas.py index 05e21dce..e836061b 100644 --- a/fairgraph/openminds/v5/sands/atlas/anatomical_atlas.py +++ b/fairgraph/openminds/v5/sands/atlas/anatomical_atlas.py @@ -64,6 +64,7 @@ class AnatomicalAtlas(KGObject, OMAnatomicalAtlas): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("digital_identifier",) + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/sands/atlas/anatomical_atlas_version.py b/fairgraph/openminds/v5/sands/atlas/anatomical_atlas_version.py index e7f58a29..62f8553e 100644 --- a/fairgraph/openminds/v5/sands/atlas/anatomical_atlas_version.py +++ b/fairgraph/openminds/v5/sands/atlas/anatomical_atlas_version.py @@ -79,6 +79,7 @@ class AnatomicalAtlasVersion(KGObject, OMAnatomicalAtlasVersion): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/sands/atlas/common_coordinate_framework.py b/fairgraph/openminds/v5/sands/atlas/common_coordinate_framework.py index e8582c74..67f16425 100644 --- a/fairgraph/openminds/v5/sands/atlas/common_coordinate_framework.py +++ b/fairgraph/openminds/v5/sands/atlas/common_coordinate_framework.py @@ -72,6 +72,7 @@ class CommonCoordinateFramework(KGObject, OMCommonCoordinateFramework): ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/sands/atlas/common_coordinate_framework_version.py b/fairgraph/openminds/v5/sands/atlas/common_coordinate_framework_version.py index e48e7a7d..09f412bd 100644 --- a/fairgraph/openminds/v5/sands/atlas/common_coordinate_framework_version.py +++ b/fairgraph/openminds/v5/sands/atlas/common_coordinate_framework_version.py @@ -103,6 +103,7 @@ class CommonCoordinateFrameworkVersion(KGObject, OMCommonCoordinateFrameworkVers ] aliases = {"name": "full_name", "alias": "short_name"} existence_query_properties = ("short_name", "version_identifier") + sort_property = "full_name" def __init__( self, diff --git a/fairgraph/openminds/v5/sands/atlas/parcellation_entity.py b/fairgraph/openminds/v5/sands/atlas/parcellation_entity.py index 3eb216e9..748e8bb5 100644 --- a/fairgraph/openminds/v5/sands/atlas/parcellation_entity.py +++ b/fairgraph/openminds/v5/sands/atlas/parcellation_entity.py @@ -97,6 +97,7 @@ class ParcellationEntity(KGObject, OMParcellationEntity): ), ] existence_query_properties = ("name",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/sands/atlas/parcellation_entity_version.py b/fairgraph/openminds/v5/sands/atlas/parcellation_entity_version.py index 428a31f6..91847ec5 100644 --- a/fairgraph/openminds/v5/sands/atlas/parcellation_entity_version.py +++ b/fairgraph/openminds/v5/sands/atlas/parcellation_entity_version.py @@ -95,6 +95,7 @@ class ParcellationEntityVersion(KGObject, OMParcellationEntityVersion): ), ] existence_query_properties = ("name", "version_identifier") + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/sands/non_atlas/custom_anatomical_entity.py b/fairgraph/openminds/v5/sands/non_atlas/custom_anatomical_entity.py index 832813bc..fe0d5c68 100644 --- a/fairgraph/openminds/v5/sands/non_atlas/custom_anatomical_entity.py +++ b/fairgraph/openminds/v5/sands/non_atlas/custom_anatomical_entity.py @@ -81,6 +81,7 @@ class CustomAnatomicalEntity(KGObject, OMCustomAnatomicalEntity): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/sands/non_atlas/custom_coordinate_framework.py b/fairgraph/openminds/v5/sands/non_atlas/custom_coordinate_framework.py index f79fcc62..cff00247 100644 --- a/fairgraph/openminds/v5/sands/non_atlas/custom_coordinate_framework.py +++ b/fairgraph/openminds/v5/sands/non_atlas/custom_coordinate_framework.py @@ -43,6 +43,7 @@ class CustomCoordinateFramework(KGObject, OMCustomCoordinateFramework): ), ] existence_query_properties = ("name",) + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/specimen_prep/activity/cranial_window_preparation.py b/fairgraph/openminds/v5/specimen_prep/activity/cranial_window_preparation.py index a67344d8..3d67fc79 100644 --- a/fairgraph/openminds/v5/specimen_prep/activity/cranial_window_preparation.py +++ b/fairgraph/openminds/v5/specimen_prep/activity/cranial_window_preparation.py @@ -22,6 +22,7 @@ class CranialWindowPreparation(KGObject, OMCranialWindowPreparation): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/specimen_prep/activity/tissue_culture_preparation.py b/fairgraph/openminds/v5/specimen_prep/activity/tissue_culture_preparation.py index a99b8718..533bb2da 100644 --- a/fairgraph/openminds/v5/specimen_prep/activity/tissue_culture_preparation.py +++ b/fairgraph/openminds/v5/specimen_prep/activity/tissue_culture_preparation.py @@ -22,6 +22,7 @@ class TissueCulturePreparation(KGObject, OMTissueCulturePreparation): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/specimen_prep/activity/tissue_sample_slicing.py b/fairgraph/openminds/v5/specimen_prep/activity/tissue_sample_slicing.py index 6a8984d8..74e49f27 100644 --- a/fairgraph/openminds/v5/specimen_prep/activity/tissue_sample_slicing.py +++ b/fairgraph/openminds/v5/specimen_prep/activity/tissue_sample_slicing.py @@ -22,6 +22,7 @@ class TissueSampleSlicing(KGObject, OMTissueSampleSlicing): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/specimen_prep/device/slicing_device.py b/fairgraph/openminds/v5/specimen_prep/device/slicing_device.py index 0d015d4c..fa683bf1 100644 --- a/fairgraph/openminds/v5/specimen_prep/device/slicing_device.py +++ b/fairgraph/openminds/v5/specimen_prep/device/slicing_device.py @@ -36,6 +36,7 @@ class SlicingDevice(KGObject, OMSlicingDevice): ), ] existence_query_properties = ("contributions", "name", "type") + sort_property = "name" def __init__( self, diff --git a/fairgraph/openminds/v5/specimen_prep/device/slicing_device_usage.py b/fairgraph/openminds/v5/specimen_prep/device/slicing_device_usage.py index d643347c..77d48a75 100644 --- a/fairgraph/openminds/v5/specimen_prep/device/slicing_device_usage.py +++ b/fairgraph/openminds/v5/specimen_prep/device/slicing_device_usage.py @@ -68,6 +68,7 @@ class SlicingDeviceUsage(KGObject, OMSlicingDeviceUsage): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/stimulation/activity/stimulation_activity.py b/fairgraph/openminds/v5/stimulation/activity/stimulation_activity.py index f7b5f733..6423f7b9 100644 --- a/fairgraph/openminds/v5/stimulation/activity/stimulation_activity.py +++ b/fairgraph/openminds/v5/stimulation/activity/stimulation_activity.py @@ -22,6 +22,7 @@ class StimulationActivity(KGObject, OMStimulationActivity): # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/openminds/v5/stimulation/stimulus/ephys_stimulus.py b/fairgraph/openminds/v5/stimulation/stimulus/ephys_stimulus.py index 2ff1fe06..acfaa397 100644 --- a/fairgraph/openminds/v5/stimulation/stimulus/ephys_stimulus.py +++ b/fairgraph/openminds/v5/stimulation/stimulus/ephys_stimulus.py @@ -28,6 +28,7 @@ class EphysStimulus(KGObject, OMEphysStimulus): ), ] existence_query_properties = ("lookup_label",) + sort_property = "lookup_label" def __init__( self, diff --git a/fairgraph/queries.py b/fairgraph/queries.py index 2888289a..549bac1e 100644 --- a/fairgraph/queries.py +++ b/fairgraph/queries.py @@ -349,6 +349,8 @@ def add_property(self, prop: QueryProperty): self.properties.append(prop) def serialize(self) -> Dict[str, Any]: + if sum(prop.sorted for prop in self.properties) > 1: + raise ValueError("Sorting is only allowed on one property.") query = { "@context": { "@vocab": "https://core.kg.ebrains.eu/vocab/query/", @@ -368,9 +370,6 @@ def serialize(self) -> Dict[str, Any]: return query -# todo: I think only one property can have "sort": True - need to check this - - def _get_query_property_name(property, possible_classes): if isinstance(property.path, str): property_name = property.path diff --git a/test/test_data/queries/openminds/core/person_newstyle_query.json b/test/test_data/queries/openminds/core/person_newstyle_query.json index 529fb424..177f8bd2 100644 --- a/test/test_data/queries/openminds/core/person_newstyle_query.json +++ b/test/test_data/queries/openminds/core/person_newstyle_query.json @@ -883,7 +883,8 @@ }, { "path": "https://openminds.om-i.org/props/familyName", - "propertyName": "familyName" + "propertyName": "familyName", + "sort": true }, { "path": "https://openminds.om-i.org/props/givenName", diff --git a/test/test_data/queries/openminds/core/person_resolved-1_query.json b/test/test_data/queries/openminds/core/person_resolved-1_query.json index c31f15ed..66b67420 100644 --- a/test/test_data/queries/openminds/core/person_resolved-1_query.json +++ b/test/test_data/queries/openminds/core/person_resolved-1_query.json @@ -677,7 +677,8 @@ }, { "path": "https://openminds.om-i.org/props/familyName", - "propertyName": "familyName" + "propertyName": "familyName", + "sort": true }, { "path": "https://openminds.om-i.org/props/givenName", diff --git a/test/test_data/queries/openminds/core/person_simple_query.json b/test/test_data/queries/openminds/core/person_simple_query.json index af8ffa17..5ff39403 100644 --- a/test/test_data/queries/openminds/core/person_simple_query.json +++ b/test/test_data/queries/openminds/core/person_simple_query.json @@ -115,7 +115,8 @@ }, { "path": "https://openminds.om-i.org/props/familyName", - "propertyName": "familyName" + "propertyName": "familyName", + "sort": true }, { "path": "https://openminds.om-i.org/props/givenName", diff --git a/test/test_queries.py b/test/test_queries.py index 1b029056..9d49c809 100644 --- a/test/test_queries.py +++ b/test/test_queries.py @@ -845,3 +845,113 @@ def test_existence_query_filters_strings_with_contains_if_requested(mock_client) def test_existence_query_rejects_an_invalid_match(): with pytest.raises(ValueError, match="existence_match"): omcore.Dataset(short_name="FOO")._build_existence_query("fuzzy") + + +def _all_kg_classes(): + import fairgraph.openminds.v4 as v4 + import fairgraph.openminds.v5 as v5 + + for version in (v4, v5): + for module_name in dir(version): + module = getattr(version, module_name) + if hasattr(module, "list_kg_classes"): + yield from module.list_kg_classes() + + +def _sorted_properties(structure): + return [prop for prop in structure if prop.get("sort")] + + +def _has_nested_sort(structure): + for prop in structure: + for nested in prop.get("structure", []): + if nested.get("sort") or _has_nested_sort([nested]): + return True + return False + + +def test_generated_queries_sort_by_at_most_one_root_property(mock_client): + # the KG query API allows "sort": true on only one property, at the root level + classes = list(_all_kg_classes()) + assert len(classes) > 200 + for cls in classes: + if cls.__name__ == "MRIScannerUsage": + continue # query generation fails for its untyped property "field_of_view" - a separate problem + query = cls.generate_query(client=mock_client, space=None, with_reverse_properties=True) + sorted_properties = _sorted_properties(query["structure"]) + assert not _has_nested_sort(query["structure"]), cls + if cls.sort_property is None: + assert sorted_properties == [], cls + else: + assert len(sorted_properties) == 1, cls + assert sorted_properties[0]["propertyName"] == cls.get_property(cls.sort_property).path, cls + + +@pytest.mark.parametrize( + "cls_name,expected", + [ + ("sands.ParcellationEntity", "lookupLabel"), + ("sands.ParcellationEntityVersion", "lookupLabel"), + ("specimen_prep.SlicingDevice", "name"), + ("core.Person", "familyName"), + ("core.DatasetVersion", "fullName"), + ], +) +def test_generated_query_sort_property(mock_client, cls_name, expected): + import fairgraph.openminds + + module_name, class_name = cls_name.split(".") + cls = getattr(getattr(fairgraph.openminds, module_name), class_name) + query = cls.generate_query(client=mock_client, space=None) + assert [prop["propertyName"] for prop in _sorted_properties(query["structure"])] == [expected] + + +def test_generated_query_sorts_once_when_filtering_on_the_sort_property(mock_client): + query = omcore.Person.generate_query(client=mock_client, space=None, filters={"family_name": "Smith"}) + assert [prop["propertyName"] for prop in _sorted_properties(query["structure"])] == ["familyName"] + + +def test_generated_query_has_no_sort_for_class_without_sort_property(mock_client): + assert omcore.DOI.sort_property is None + query = omcore.DOI.generate_query(client=mock_client, space=None) + assert _sorted_properties(query["structure"]) == [] + + +def test_query_rejects_more_than_one_sort_property(): + query = Query( + node_type="https://openminds.om-i.org/types/ParcellationEntity", + properties=[ + QueryProperty("https://openminds.om-i.org/props/lookupLabel", name="lookupLabel", sorted=True), + QueryProperty("https://openminds.om-i.org/props/name", name="name", sorted=True), + ], + ) + with pytest.raises(ValueError, match="only allowed on one property"): + query.serialize() + + +def _assert_sorted_case_insensitively(values): + # the KG sorts case-insensitively, with missing values first + missing = [value is None for value in values] + assert missing == sorted(missing, reverse=True), values + present = [value.casefold() for value in values if value is not None] + assert present == sorted(present), values + + +@skip_if_no_connection +def test_list_results_are_sorted(kg_client): + import fairgraph.openminds.sands as omsands + + for cls in (omsands.ParcellationEntityVersion, omcore.Person): + results = cls.list(kg_client, api="query", size=50, release_status="released") + assert len(results) > 1 + _assert_sorted_case_insensitively([getattr(obj, cls.sort_property) for obj in results]) + + +@skip_if_no_connection +def test_list_results_are_sorted_case_insensitively(kg_client): + import fairgraph.openminds.sands as omsands + + results = omsands.ParcellationEntity.list( + kg_client, api="query", size=100, release_status="released", lookup_label=Regex("^AAL1_(AMYG|brain|CAU)$") + ) + assert [obj.lookup_label for obj in results] == ["AAL1_AMYG", "AAL1_brain", "AAL1_CAU"]