From a58719a544535dbc71f70b5abed9ca5caa59f866 Mon Sep 17 00:00:00 2001 From: Andrew Davison Date: Mon, 17 Nov 2025 13:54:33 +0100 Subject: [PATCH] Allow the user to specify which openMINDS version should be used by `Collection.load()`. By default, uses the most recent release. --- pipeline/src/collection.py | 13 +++++++------ pipeline/tests/test_regressions.py | 8 ++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/pipeline/src/collection.py b/pipeline/src/collection.py index 11dfa7df..3a67d6d5 100644 --- a/pipeline/src/collection.py +++ b/pipeline/src/collection.py @@ -11,6 +11,9 @@ from .base import Link +DEFAULT_VERSION = "v4" + + class Collection: """ A collection of metadata nodes that can be saved to @@ -141,7 +144,7 @@ def save(self, path, individual_files=False, include_empty_properties=False): output_paths.append(file_path) return output_paths - def load(self, *paths): + def load(self, *paths, version=DEFAULT_VERSION): """ Load openMINDS metadata from one or more JSON-LD files. @@ -152,6 +155,9 @@ def load(self, *paths): (but without descending into subdirectories) 2) one or more JSON-LD files, which will all be loaded. + + By default, openMINDS v4 will be used. + If the JSON-LD files use a different openMINDS version, specify it with the `version` argument. """ if len(paths) == 1 and os.path.isdir(paths[0]): data_dir = paths[0] @@ -168,10 +174,6 @@ def load(self, *paths): with open(path, "r") as fp: data = json.load(fp) if "@graph" in data: - if data["@context"]["@vocab"].startswith("https://openminds.ebrains.eu/"): - version = "v3" - else: - version = "latest" for item in data["@graph"]: if "@type" in item: cls = lookup_type(item["@type"], version=version) @@ -245,4 +247,3 @@ def sort_nodes_for_upload(self): newly_sorted.append(node_id) unsorted -= set(newly_sorted) return [self.nodes[node_id] for node_id in sorted] - \ No newline at end of file diff --git a/pipeline/tests/test_regressions.py b/pipeline/tests/test_regressions.py index a7e43694..3b24dcbe 100644 --- a/pipeline/tests/test_regressions.py +++ b/pipeline/tests/test_regressions.py @@ -2,7 +2,7 @@ import json import os from openminds import Collection, IRI -from openminds.latest import core as omcore +from openminds.v4 import core as omcore from utils import build_fake_node @@ -261,12 +261,12 @@ def test_issue0073(): # Infinite recursion in validate() ds1 = omcore.DatasetVersion( short_name="ds1", - is_variant_of=None + is_alternative_version_of=None ) ds2 = omcore.DatasetVersion( short_name="ds2", - is_variant_of=ds1 + is_alternative_version_of=ds1 ) - ds1.is_variant_of = ds2 + ds1.is_alternative_version_of = ds2 failures = ds1.validate()