fairgraph 0.13.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. fairgraph/__init__.py +61 -0
  2. fairgraph/base.py +104 -0
  3. fairgraph/caching.py +52 -0
  4. fairgraph/client.py +867 -0
  5. fairgraph/collection.py +104 -0
  6. fairgraph/embedded.py +122 -0
  7. fairgraph/errors.py +47 -0
  8. fairgraph/fields.py +11 -0
  9. fairgraph/kgobject.py +1087 -0
  10. fairgraph/kgproxy.py +178 -0
  11. fairgraph/kgquery.py +151 -0
  12. fairgraph/node.py +488 -0
  13. fairgraph/openminds/__init__.py +1 -0
  14. fairgraph/openminds/chemicals/__init__.py +40 -0
  15. fairgraph/openminds/chemicals/amount_of_chemical.py +23 -0
  16. fairgraph/openminds/chemicals/chemical_mixture.py +72 -0
  17. fairgraph/openminds/chemicals/chemical_substance.py +67 -0
  18. fairgraph/openminds/chemicals/product_source.py +57 -0
  19. fairgraph/openminds/computation/__init__.py +53 -0
  20. fairgraph/openminds/computation/data_analysis.py +104 -0
  21. fairgraph/openminds/computation/data_copy.py +104 -0
  22. fairgraph/openminds/computation/environment.py +66 -0
  23. fairgraph/openminds/computation/generic_computation.py +104 -0
  24. fairgraph/openminds/computation/hardware_system.py +53 -0
  25. fairgraph/openminds/computation/launch_configuration.py +68 -0
  26. fairgraph/openminds/computation/local_file.py +83 -0
  27. fairgraph/openminds/computation/model_validation.py +107 -0
  28. fairgraph/openminds/computation/optimization.py +104 -0
  29. fairgraph/openminds/computation/simulation.py +104 -0
  30. fairgraph/openminds/computation/software_agent.py +81 -0
  31. fairgraph/openminds/computation/validation_test.py +105 -0
  32. fairgraph/openminds/computation/validation_test_version.py +180 -0
  33. fairgraph/openminds/computation/visualization.py +104 -0
  34. fairgraph/openminds/computation/workflow_execution.py +44 -0
  35. fairgraph/openminds/computation/workflow_recipe.py +95 -0
  36. fairgraph/openminds/computation/workflow_recipe_version.py +185 -0
  37. fairgraph/openminds/controlled_terms/__init__.py +116 -0
  38. fairgraph/openminds/controlled_terms/action_status_type.py +97 -0
  39. fairgraph/openminds/controlled_terms/age_category.py +89 -0
  40. fairgraph/openminds/controlled_terms/analysis_technique.py +108 -0
  41. fairgraph/openminds/controlled_terms/anatomical_axes_orientation.py +89 -0
  42. fairgraph/openminds/controlled_terms/anatomical_identification_type.py +89 -0
  43. fairgraph/openminds/controlled_terms/anatomical_plane.py +89 -0
  44. fairgraph/openminds/controlled_terms/annotation_criteria_type.py +89 -0
  45. fairgraph/openminds/controlled_terms/annotation_type.py +89 -0
  46. fairgraph/openminds/controlled_terms/atlas_type.py +88 -0
  47. fairgraph/openminds/controlled_terms/auditory_stimulus_type.py +127 -0
  48. fairgraph/openminds/controlled_terms/biological_order.py +117 -0
  49. fairgraph/openminds/controlled_terms/biological_process.py +79 -0
  50. fairgraph/openminds/controlled_terms/biological_sex.py +132 -0
  51. fairgraph/openminds/controlled_terms/breeding_type.py +127 -0
  52. fairgraph/openminds/controlled_terms/cell_culture_type.py +117 -0
  53. fairgraph/openminds/controlled_terms/cell_type.py +151 -0
  54. fairgraph/openminds/controlled_terms/chemical_mixture_type.py +89 -0
  55. fairgraph/openminds/controlled_terms/colormap.py +79 -0
  56. fairgraph/openminds/controlled_terms/contribution_type.py +79 -0
  57. fairgraph/openminds/controlled_terms/cranial_window_construction_type.py +89 -0
  58. fairgraph/openminds/controlled_terms/cranial_window_reinforcement_type.py +89 -0
  59. fairgraph/openminds/controlled_terms/criteria_quality_type.py +89 -0
  60. fairgraph/openminds/controlled_terms/data_type.py +89 -0
  61. fairgraph/openminds/controlled_terms/device_type.py +94 -0
  62. fairgraph/openminds/controlled_terms/difference_measure.py +89 -0
  63. fairgraph/openminds/controlled_terms/disease.py +142 -0
  64. fairgraph/openminds/controlled_terms/disease_model.py +142 -0
  65. fairgraph/openminds/controlled_terms/educational_level.py +79 -0
  66. fairgraph/openminds/controlled_terms/electrical_stimulus_type.py +137 -0
  67. fairgraph/openminds/controlled_terms/ethics_assessment.py +79 -0
  68. fairgraph/openminds/controlled_terms/experimental_approach.py +79 -0
  69. fairgraph/openminds/controlled_terms/file_bundle_grouping.py +99 -0
  70. fairgraph/openminds/controlled_terms/file_repository_type.py +89 -0
  71. fairgraph/openminds/controlled_terms/file_usage_role.py +89 -0
  72. fairgraph/openminds/controlled_terms/genetic_strain_type.py +127 -0
  73. fairgraph/openminds/controlled_terms/gustatory_stimulus_type.py +127 -0
  74. fairgraph/openminds/controlled_terms/handedness.py +127 -0
  75. fairgraph/openminds/controlled_terms/language.py +88 -0
  76. fairgraph/openminds/controlled_terms/laterality.py +94 -0
  77. fairgraph/openminds/controlled_terms/learning_resource_type.py +88 -0
  78. fairgraph/openminds/controlled_terms/measured_quantity.py +89 -0
  79. fairgraph/openminds/controlled_terms/measured_signal_type.py +79 -0
  80. fairgraph/openminds/controlled_terms/meta_data_model_type.py +88 -0
  81. fairgraph/openminds/controlled_terms/model_abstraction_level.py +89 -0
  82. fairgraph/openminds/controlled_terms/model_scope.py +89 -0
  83. fairgraph/openminds/controlled_terms/molecular_entity.py +142 -0
  84. fairgraph/openminds/controlled_terms/mri_pulse_sequence.py +98 -0
  85. fairgraph/openminds/controlled_terms/mri_weighting.py +98 -0
  86. fairgraph/openminds/controlled_terms/olfactory_stimulus_type.py +127 -0
  87. fairgraph/openminds/controlled_terms/operating_device.py +79 -0
  88. fairgraph/openminds/controlled_terms/operating_system.py +88 -0
  89. fairgraph/openminds/controlled_terms/optical_stimulus_type.py +127 -0
  90. fairgraph/openminds/controlled_terms/organ.py +161 -0
  91. fairgraph/openminds/controlled_terms/organism_substance.py +151 -0
  92. fairgraph/openminds/controlled_terms/organism_system.py +117 -0
  93. fairgraph/openminds/controlled_terms/patch_clamp_variation.py +89 -0
  94. fairgraph/openminds/controlled_terms/preparation_type.py +98 -0
  95. fairgraph/openminds/controlled_terms/product_accessibility.py +79 -0
  96. fairgraph/openminds/controlled_terms/programming_language.py +88 -0
  97. fairgraph/openminds/controlled_terms/qualitative_overlap.py +79 -0
  98. fairgraph/openminds/controlled_terms/semantic_data_type.py +79 -0
  99. fairgraph/openminds/controlled_terms/service.py +89 -0
  100. fairgraph/openminds/controlled_terms/setup_type.py +89 -0
  101. fairgraph/openminds/controlled_terms/software_application_category.py +79 -0
  102. fairgraph/openminds/controlled_terms/software_feature.py +79 -0
  103. fairgraph/openminds/controlled_terms/species.py +143 -0
  104. fairgraph/openminds/controlled_terms/stimulation_approach.py +98 -0
  105. fairgraph/openminds/controlled_terms/stimulation_technique.py +98 -0
  106. fairgraph/openminds/controlled_terms/subcellular_entity.py +143 -0
  107. fairgraph/openminds/controlled_terms/subject_attribute.py +89 -0
  108. fairgraph/openminds/controlled_terms/tactile_stimulus_type.py +127 -0
  109. fairgraph/openminds/controlled_terms/technique.py +108 -0
  110. fairgraph/openminds/controlled_terms/term_suggestion.py +121 -0
  111. fairgraph/openminds/controlled_terms/terminology.py +89 -0
  112. fairgraph/openminds/controlled_terms/tissue_sample_attribute.py +89 -0
  113. fairgraph/openminds/controlled_terms/tissue_sample_type.py +127 -0
  114. fairgraph/openminds/controlled_terms/type_of_uncertainty.py +89 -0
  115. fairgraph/openminds/controlled_terms/uberon_parcellation.py +153 -0
  116. fairgraph/openminds/controlled_terms/unit_of_measurement.py +108 -0
  117. fairgraph/openminds/controlled_terms/visual_stimulus_type.py +127 -0
  118. fairgraph/openminds/controlledterms.py +6 -0
  119. fairgraph/openminds/core/__init__.py +107 -0
  120. fairgraph/openminds/core/actors/__init__.py +7 -0
  121. fairgraph/openminds/core/actors/account_information.py +44 -0
  122. fairgraph/openminds/core/actors/affiliation.py +30 -0
  123. fairgraph/openminds/core/actors/consortium.py +175 -0
  124. fairgraph/openminds/core/actors/contact_information.py +43 -0
  125. fairgraph/openminds/core/actors/contribution.py +23 -0
  126. fairgraph/openminds/core/actors/organization.py +199 -0
  127. fairgraph/openminds/core/actors/person.py +236 -0
  128. fairgraph/openminds/core/data/__init__.py +13 -0
  129. fairgraph/openminds/core/data/content_type.py +107 -0
  130. fairgraph/openminds/core/data/content_type_pattern.py +53 -0
  131. fairgraph/openminds/core/data/copyright.py +23 -0
  132. fairgraph/openminds/core/data/file.py +275 -0
  133. fairgraph/openminds/core/data/file_archive.py +71 -0
  134. fairgraph/openminds/core/data/file_bundle.py +150 -0
  135. fairgraph/openminds/core/data/file_path_pattern.py +23 -0
  136. fairgraph/openminds/core/data/file_repository.py +99 -0
  137. fairgraph/openminds/core/data/file_repository_structure.py +51 -0
  138. fairgraph/openminds/core/data/hash.py +23 -0
  139. fairgraph/openminds/core/data/license.py +77 -0
  140. fairgraph/openminds/core/data/measurement.py +45 -0
  141. fairgraph/openminds/core/data/service_link.py +49 -0
  142. fairgraph/openminds/core/digital_identifier/__init__.py +11 -0
  143. fairgraph/openminds/core/digital_identifier/doi.py +98 -0
  144. fairgraph/openminds/core/digital_identifier/gridid.py +41 -0
  145. fairgraph/openminds/core/digital_identifier/handle.py +52 -0
  146. fairgraph/openminds/core/digital_identifier/identifiers_dot_org_id.py +41 -0
  147. fairgraph/openminds/core/digital_identifier/isbn.py +88 -0
  148. fairgraph/openminds/core/digital_identifier/issn.py +63 -0
  149. fairgraph/openminds/core/digital_identifier/orcid.py +41 -0
  150. fairgraph/openminds/core/digital_identifier/rorid.py +41 -0
  151. fairgraph/openminds/core/digital_identifier/rrid.py +55 -0
  152. fairgraph/openminds/core/digital_identifier/stock_number.py +23 -0
  153. fairgraph/openminds/core/digital_identifier/swhid.py +48 -0
  154. fairgraph/openminds/core/miscellaneous/__init__.py +7 -0
  155. fairgraph/openminds/core/miscellaneous/comment.py +47 -0
  156. fairgraph/openminds/core/miscellaneous/funding.py +70 -0
  157. fairgraph/openminds/core/miscellaneous/quantitative_value.py +43 -0
  158. fairgraph/openminds/core/miscellaneous/quantitative_value_array.py +49 -0
  159. fairgraph/openminds/core/miscellaneous/quantitative_value_range.py +43 -0
  160. fairgraph/openminds/core/miscellaneous/research_product_group.py +26 -0
  161. fairgraph/openminds/core/miscellaneous/web_resource.py +104 -0
  162. fairgraph/openminds/core/products/__init__.py +12 -0
  163. fairgraph/openminds/core/products/dataset.py +95 -0
  164. fairgraph/openminds/core/products/dataset_version.py +240 -0
  165. fairgraph/openminds/core/products/meta_data_model.py +95 -0
  166. fairgraph/openminds/core/products/meta_data_model_version.py +168 -0
  167. fairgraph/openminds/core/products/model.py +103 -0
  168. fairgraph/openminds/core/products/model_version.py +235 -0
  169. fairgraph/openminds/core/products/project.py +56 -0
  170. fairgraph/openminds/core/products/setup.py +69 -0
  171. fairgraph/openminds/core/products/software.py +95 -0
  172. fairgraph/openminds/core/products/software_version.py +226 -0
  173. fairgraph/openminds/core/products/web_service.py +103 -0
  174. fairgraph/openminds/core/products/web_service_version.py +182 -0
  175. fairgraph/openminds/core/research/__init__.py +17 -0
  176. fairgraph/openminds/core/research/behavioral_protocol.py +69 -0
  177. fairgraph/openminds/core/research/configuration.py +67 -0
  178. fairgraph/openminds/core/research/custom_property_set.py +27 -0
  179. fairgraph/openminds/core/research/numerical_property.py +23 -0
  180. fairgraph/openminds/core/research/property_value_list.py +71 -0
  181. fairgraph/openminds/core/research/protocol.py +67 -0
  182. fairgraph/openminds/core/research/protocol_execution.py +76 -0
  183. fairgraph/openminds/core/research/strain.py +90 -0
  184. fairgraph/openminds/core/research/string_property.py +23 -0
  185. fairgraph/openminds/core/research/subject.py +79 -0
  186. fairgraph/openminds/core/research/subject_group.py +91 -0
  187. fairgraph/openminds/core/research/subject_group_state.py +113 -0
  188. fairgraph/openminds/core/research/subject_state.py +138 -0
  189. fairgraph/openminds/core/research/tissue_sample.py +87 -0
  190. fairgraph/openminds/core/research/tissue_sample_collection.py +99 -0
  191. fairgraph/openminds/core/research/tissue_sample_collection_state.py +109 -0
  192. fairgraph/openminds/core/research/tissue_sample_state.py +127 -0
  193. fairgraph/openminds/ephys/__init__.py +39 -0
  194. fairgraph/openminds/ephys/activity/__init__.py +3 -0
  195. fairgraph/openminds/ephys/activity/cell_patching.py +73 -0
  196. fairgraph/openminds/ephys/activity/electrode_placement.py +67 -0
  197. fairgraph/openminds/ephys/activity/recording_activity.py +67 -0
  198. fairgraph/openminds/ephys/device/__init__.py +6 -0
  199. fairgraph/openminds/ephys/device/electrode.py +81 -0
  200. fairgraph/openminds/ephys/device/electrode_array.py +85 -0
  201. fairgraph/openminds/ephys/device/electrode_array_usage.py +105 -0
  202. fairgraph/openminds/ephys/device/electrode_usage.py +101 -0
  203. fairgraph/openminds/ephys/device/pipette.py +81 -0
  204. fairgraph/openminds/ephys/device/pipette_usage.py +123 -0
  205. fairgraph/openminds/ephys/entity/__init__.py +2 -0
  206. fairgraph/openminds/ephys/entity/channel.py +23 -0
  207. fairgraph/openminds/ephys/entity/recording.py +63 -0
  208. fairgraph/openminds/publications/__init__.py +47 -0
  209. fairgraph/openminds/publications/book.py +106 -0
  210. fairgraph/openminds/publications/chapter.py +100 -0
  211. fairgraph/openminds/publications/learning_resource.py +90 -0
  212. fairgraph/openminds/publications/live_paper.py +95 -0
  213. fairgraph/openminds/publications/live_paper_resource_item.py +58 -0
  214. fairgraph/openminds/publications/live_paper_section.py +57 -0
  215. fairgraph/openminds/publications/live_paper_version.py +177 -0
  216. fairgraph/openminds/publications/periodical.py +53 -0
  217. fairgraph/openminds/publications/publication_issue.py +44 -0
  218. fairgraph/openminds/publications/publication_volume.py +44 -0
  219. fairgraph/openminds/publications/scholarly_article.py +146 -0
  220. fairgraph/openminds/sands/__init__.py +57 -0
  221. fairgraph/openminds/sands/atlas/__init__.py +9 -0
  222. fairgraph/openminds/sands/atlas/atlas_annotation.py +52 -0
  223. fairgraph/openminds/sands/atlas/brain_atlas.py +113 -0
  224. fairgraph/openminds/sands/atlas/brain_atlas_version.py +213 -0
  225. fairgraph/openminds/sands/atlas/common_coordinate_space.py +121 -0
  226. fairgraph/openminds/sands/atlas/common_coordinate_space_version.py +243 -0
  227. fairgraph/openminds/sands/atlas/parcellation_entity.py +133 -0
  228. fairgraph/openminds/sands/atlas/parcellation_entity_version.py +162 -0
  229. fairgraph/openminds/sands/atlas/parcellation_terminology.py +38 -0
  230. fairgraph/openminds/sands/atlas/parcellation_terminology_version.py +38 -0
  231. fairgraph/openminds/sands/mathematical_shapes/__init__.py +3 -0
  232. fairgraph/openminds/sands/mathematical_shapes/circle.py +23 -0
  233. fairgraph/openminds/sands/mathematical_shapes/ellipse.py +27 -0
  234. fairgraph/openminds/sands/mathematical_shapes/rectangle.py +23 -0
  235. fairgraph/openminds/sands/miscellaneous/__init__.py +6 -0
  236. fairgraph/openminds/sands/miscellaneous/anatomical_target_position.py +40 -0
  237. fairgraph/openminds/sands/miscellaneous/coordinate_point.py +23 -0
  238. fairgraph/openminds/sands/miscellaneous/qualitative_relation_assessment.py +34 -0
  239. fairgraph/openminds/sands/miscellaneous/quantitative_relation_assessment.py +38 -0
  240. fairgraph/openminds/sands/miscellaneous/single_color.py +24 -0
  241. fairgraph/openminds/sands/miscellaneous/viewer_specification.py +40 -0
  242. fairgraph/openminds/sands/non_atlas/__init__.py +3 -0
  243. fairgraph/openminds/sands/non_atlas/custom_anatomical_entity.py +110 -0
  244. fairgraph/openminds/sands/non_atlas/custom_annotation.py +54 -0
  245. fairgraph/openminds/sands/non_atlas/custom_coordinate_space.py +67 -0
  246. fairgraph/openminds/specimen_prep/__init__.py +38 -0
  247. fairgraph/openminds/specimen_prep/activity/__init__.py +3 -0
  248. fairgraph/openminds/specimen_prep/activity/cranial_window_preparation.py +69 -0
  249. fairgraph/openminds/specimen_prep/activity/tissue_culture_preparation.py +67 -0
  250. fairgraph/openminds/specimen_prep/activity/tissue_sample_slicing.py +69 -0
  251. fairgraph/openminds/specimen_prep/device/__init__.py +2 -0
  252. fairgraph/openminds/specimen_prep/device/slicing_device.py +73 -0
  253. fairgraph/openminds/specimen_prep/device/slicing_device_usage.py +117 -0
  254. fairgraph/openminds/specimenprep.py +4 -0
  255. fairgraph/openminds/stimulation/__init__.py +38 -0
  256. fairgraph/openminds/stimulation/activity/__init__.py +1 -0
  257. fairgraph/openminds/stimulation/activity/stimulation_activity.py +67 -0
  258. fairgraph/openminds/stimulation/stimulus/__init__.py +1 -0
  259. fairgraph/openminds/stimulation/stimulus/ephys_stimulus.py +63 -0
  260. fairgraph/queries.py +499 -0
  261. fairgraph/registry.py +123 -0
  262. fairgraph/utility.py +607 -0
  263. fairgraph-0.13.0.dist-info/METADATA +222 -0
  264. fairgraph-0.13.0.dist-info/RECORD +267 -0
  265. fairgraph-0.13.0.dist-info/WHEEL +5 -0
  266. fairgraph-0.13.0.dist-info/licenses/LICENSE.txt +177 -0
  267. fairgraph-0.13.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,275 @@
1
+ """
2
+ Structured information on a file instance that is accessible via a URL.
3
+ """
4
+
5
+ # this file was auto-generated
6
+
7
+ from openminds.properties import Property
8
+ from openminds.v4.core import File as OMFile
9
+ from fairgraph import KGObject
10
+
11
+ import os
12
+ import mimetypes
13
+ from pathlib import Path
14
+ from urllib.request import urlretrieve
15
+ from urllib.parse import quote, urlparse, urlunparse
16
+ from .hash import Hash
17
+ from .content_type import ContentType
18
+ from ..miscellaneous.quantitative_value import QuantitativeValue
19
+ from ...controlled_terms.unit_of_measurement import UnitOfMeasurement
20
+ from fairgraph.utility import accepted_terms_of_use, sha1sum
21
+
22
+ mimetypes.init()
23
+ from openminds import IRI
24
+
25
+
26
+ class File(KGObject, OMFile):
27
+ """
28
+ Structured information on a file instance that is accessible via a URL.
29
+ """
30
+
31
+ type_ = "https://openminds.om-i.org/types/File"
32
+ default_space = "files"
33
+ # forward properties are defined in the parent class (in openMINDS-Python)
34
+ reverse_properties = [
35
+ Property(
36
+ "describes",
37
+ [
38
+ "openminds.v4.core.BehavioralProtocol",
39
+ "openminds.v4.core.Protocol",
40
+ "openminds.v4.ephys.ElectrodeArrayUsage",
41
+ "openminds.v4.ephys.ElectrodeUsage",
42
+ "openminds.v4.ephys.PipetteUsage",
43
+ "openminds.v4.specimen_prep.SlicingDeviceUsage",
44
+ ],
45
+ ["describedIn", "metadataLocation"],
46
+ reverse=["described_in", "metadata_locations"],
47
+ multiple=True,
48
+ description="reverse of described_in, metadata_locations",
49
+ ),
50
+ Property(
51
+ "fully_documents",
52
+ [
53
+ "openminds.v4.core.MetaDataModelVersion",
54
+ "openminds.v4.core.SoftwareVersion",
55
+ "openminds.v4.core.WebServiceVersion",
56
+ "openminds.v4.publications.LivePaperVersion",
57
+ "openminds.v4.sands.BrainAtlasVersion",
58
+ "openminds.v4.sands.CommonCoordinateSpaceVersion",
59
+ ],
60
+ "fullDocumentation",
61
+ reverse="full_documentation",
62
+ multiple=True,
63
+ description="reverse of 'full_documentation'",
64
+ ),
65
+ Property(
66
+ "has_copies",
67
+ "openminds.v4.computation.LocalFile",
68
+ "copyOf",
69
+ reverse="copy_of",
70
+ multiple=True,
71
+ description="reverse of 'copy_of'",
72
+ ),
73
+ Property(
74
+ "is_also_part_of",
75
+ "openminds.v4.computation.WorkflowRecipeVersion",
76
+ "hasPart",
77
+ reverse="has_parts",
78
+ multiple=True,
79
+ description="reverse of 'has_parts'",
80
+ ),
81
+ Property(
82
+ "is_configuration_of",
83
+ "openminds.v4.computation.WorkflowExecution",
84
+ "configuration",
85
+ reverse="configuration",
86
+ multiple=True,
87
+ description="reverse of 'configuration'",
88
+ ),
89
+ Property(
90
+ "is_default_image_for",
91
+ "openminds.v4.sands.CustomCoordinateSpace",
92
+ "defaultImage",
93
+ reverse="default_images",
94
+ multiple=True,
95
+ description="reverse of 'default_images'",
96
+ ),
97
+ Property(
98
+ "is_input_to",
99
+ "openminds.v4.core.DatasetVersion",
100
+ "inputData",
101
+ reverse="input_data",
102
+ multiple=True,
103
+ description="reverse of 'input_data'",
104
+ ),
105
+ Property(
106
+ "is_location_of",
107
+ ["openminds.v4.ephys.Recording", "openminds.v4.sands.ParcellationTerminologyVersion"],
108
+ "dataLocation",
109
+ reverse="data_location",
110
+ multiple=True,
111
+ description="reverse of 'data_location'",
112
+ ),
113
+ Property(
114
+ "is_output_of",
115
+ [
116
+ "openminds.v4.computation.DataAnalysis",
117
+ "openminds.v4.computation.DataCopy",
118
+ "openminds.v4.computation.GenericComputation",
119
+ "openminds.v4.computation.ModelValidation",
120
+ "openminds.v4.computation.Optimization",
121
+ "openminds.v4.computation.Simulation",
122
+ "openminds.v4.computation.Visualization",
123
+ "openminds.v4.core.ModelVersion",
124
+ "openminds.v4.core.ProtocolExecution",
125
+ "openminds.v4.ephys.RecordingActivity",
126
+ "openminds.v4.stimulation.StimulationActivity",
127
+ ],
128
+ ["output", "outputData"],
129
+ reverse=["output_data", "outputs"],
130
+ multiple=True,
131
+ description="reverse of output_data, outputs",
132
+ ),
133
+ Property(
134
+ "is_preview_of",
135
+ "openminds.v4.core.ServiceLink",
136
+ "previewImage",
137
+ reverse="preview_image",
138
+ multiple=True,
139
+ description="reverse of 'preview_image'",
140
+ ),
141
+ Property(
142
+ "is_reference_for",
143
+ "openminds.v4.computation.ValidationTestVersion",
144
+ "referenceData",
145
+ reverse="reference_data",
146
+ multiple=True,
147
+ description="reverse of 'reference_data'",
148
+ ),
149
+ Property(
150
+ "is_source_data_of",
151
+ "openminds.v4.core.FileArchive",
152
+ "sourceData",
153
+ reverse="source_data",
154
+ multiple=True,
155
+ description="reverse of 'source_data'",
156
+ ),
157
+ Property(
158
+ "is_used_to_group",
159
+ "openminds.v4.core.FileBundle",
160
+ "groupedBy",
161
+ reverse="grouped_by",
162
+ multiple=True,
163
+ description="reverse of 'grouped_by'",
164
+ ),
165
+ Property(
166
+ "specifies",
167
+ [
168
+ "openminds.v4.sands.AtlasAnnotation",
169
+ "openminds.v4.sands.CustomAnnotation",
170
+ "openminds.v4.stimulation.EphysStimulus",
171
+ ],
172
+ "specification",
173
+ reverse="specification",
174
+ multiple=True,
175
+ description="reverse of 'specification'",
176
+ ),
177
+ ]
178
+ aliases = {"hash": "hashes"}
179
+ existence_query_properties = ("iri", "hashes")
180
+
181
+ def __init__(
182
+ self,
183
+ name=None,
184
+ content_description=None,
185
+ data_types=None,
186
+ describes=None,
187
+ file_repository=None,
188
+ format=None,
189
+ fully_documents=None,
190
+ has_copies=None,
191
+ hash=None,
192
+ hashes=None,
193
+ iri=None,
194
+ is_also_part_of=None,
195
+ is_configuration_of=None,
196
+ is_default_image_for=None,
197
+ is_input_to=None,
198
+ is_location_of=None,
199
+ is_output_of=None,
200
+ is_part_of=None,
201
+ is_preview_of=None,
202
+ is_reference_for=None,
203
+ is_source_data_of=None,
204
+ is_used_to_group=None,
205
+ special_usage_role=None,
206
+ specifies=None,
207
+ storage_size=None,
208
+ id=None,
209
+ data=None,
210
+ space=None,
211
+ release_status=None,
212
+ ):
213
+ return KGObject.__init__(
214
+ self,
215
+ id=id,
216
+ space=space,
217
+ release_status=release_status,
218
+ data=data,
219
+ name=name,
220
+ content_description=content_description,
221
+ data_types=data_types,
222
+ describes=describes,
223
+ file_repository=file_repository,
224
+ format=format,
225
+ fully_documents=fully_documents,
226
+ has_copies=has_copies,
227
+ hash=hash,
228
+ hashes=hashes,
229
+ iri=iri,
230
+ is_also_part_of=is_also_part_of,
231
+ is_configuration_of=is_configuration_of,
232
+ is_default_image_for=is_default_image_for,
233
+ is_input_to=is_input_to,
234
+ is_location_of=is_location_of,
235
+ is_output_of=is_output_of,
236
+ is_part_of=is_part_of,
237
+ is_preview_of=is_preview_of,
238
+ is_reference_for=is_reference_for,
239
+ is_source_data_of=is_source_data_of,
240
+ is_used_to_group=is_used_to_group,
241
+ special_usage_role=special_usage_role,
242
+ specifies=specifies,
243
+ storage_size=storage_size,
244
+ )
245
+
246
+ @classmethod
247
+ def from_local_file(cls, relative_path):
248
+ obj = cls(
249
+ name=relative_path,
250
+ storage_size=QuantitativeValue(
251
+ value=float(os.stat(relative_path).st_size), unit=UnitOfMeasurement(name="bytes")
252
+ ),
253
+ hashes=Hash(algorithm="SHA1", digest=sha1sum(relative_path)),
254
+ format=ContentType(name=mimetypes.guess_type(relative_path)[0]),
255
+ # todo: query ContentTypes since that contains additional, EBRAINS-specific content types
256
+ )
257
+ return obj
258
+
259
+ def download(self, local_path, client, accept_terms_of_use=False):
260
+ if accepted_terms_of_use(client, accept_terms_of_use=accept_terms_of_use):
261
+ local_path = Path(local_path)
262
+ if local_path.is_dir():
263
+ local_filename = local_path / self.name
264
+ else:
265
+ local_filename = local_path
266
+ local_filename.parent.mkdir(parents=True, exist_ok=True)
267
+ url_parts = urlparse(self.iri.value)
268
+ url_parts = url_parts._replace(path=quote(url_parts.path))
269
+ url = urlunparse(url_parts)
270
+ local_filename, headers = urlretrieve(url, local_filename)
271
+ # todo: check hash value of downloaded file
272
+ # todo: if local_path isn't an existing directory but looks like a directory name
273
+ # rather than a filename, create that directory and save a file called self.name
274
+ # within it
275
+ return local_filename
@@ -0,0 +1,71 @@
1
+ """
2
+ <description not available>
3
+ """
4
+
5
+ # this file was auto-generated
6
+
7
+ from openminds.properties import Property
8
+ from openminds.v4.core import FileArchive as OMFileArchive
9
+ from fairgraph import KGObject
10
+
11
+
12
+ from openminds import IRI
13
+
14
+
15
+ class FileArchive(KGObject, OMFileArchive):
16
+ """
17
+ <description not available>
18
+ """
19
+
20
+ type_ = "https://openminds.om-i.org/types/FileArchive"
21
+ default_space = "dataset"
22
+ # forward properties are defined in the parent class (in openMINDS-Python)
23
+ reverse_properties = [
24
+ Property(
25
+ "is_location_of",
26
+ "openminds.v4.core.ServiceLink",
27
+ "dataLocation",
28
+ reverse="data_location",
29
+ multiple=True,
30
+ description="reverse of 'data_location'",
31
+ ),
32
+ Property(
33
+ "is_output_of",
34
+ [
35
+ "openminds.v4.computation.DataAnalysis",
36
+ "openminds.v4.computation.GenericComputation",
37
+ "openminds.v4.computation.Simulation",
38
+ "openminds.v4.computation.Visualization",
39
+ ],
40
+ "output",
41
+ reverse="outputs",
42
+ multiple=True,
43
+ description="reverse of 'outputs'",
44
+ ),
45
+ ]
46
+ existence_query_properties = ("iri", "format")
47
+
48
+ def __init__(
49
+ self,
50
+ format=None,
51
+ iri=None,
52
+ is_location_of=None,
53
+ is_output_of=None,
54
+ source_data=None,
55
+ id=None,
56
+ data=None,
57
+ space=None,
58
+ release_status=None,
59
+ ):
60
+ return KGObject.__init__(
61
+ self,
62
+ id=id,
63
+ space=space,
64
+ release_status=release_status,
65
+ data=data,
66
+ format=format,
67
+ iri=iri,
68
+ is_location_of=is_location_of,
69
+ is_output_of=is_output_of,
70
+ source_data=source_data,
71
+ )
@@ -0,0 +1,150 @@
1
+ """
2
+ Structured information on a bundle of file instances.
3
+ """
4
+
5
+ # this file was auto-generated
6
+
7
+ from openminds.properties import Property
8
+ from openminds.v4.core import FileBundle as OMFileBundle
9
+ from fairgraph import KGObject
10
+
11
+
12
+ class FileBundle(KGObject, OMFileBundle):
13
+ """
14
+ Structured information on a bundle of file instances.
15
+ """
16
+
17
+ type_ = "https://openminds.om-i.org/types/FileBundle"
18
+ default_space = "files"
19
+ # forward properties are defined in the parent class (in openMINDS-Python)
20
+ reverse_properties = [
21
+ Property(
22
+ "describes",
23
+ [
24
+ "openminds.v4.ephys.ElectrodeArrayUsage",
25
+ "openminds.v4.ephys.ElectrodeUsage",
26
+ "openminds.v4.ephys.PipetteUsage",
27
+ "openminds.v4.specimen_prep.SlicingDeviceUsage",
28
+ ],
29
+ "metadataLocation",
30
+ reverse="metadata_locations",
31
+ multiple=True,
32
+ description="reverse of 'metadata_locations'",
33
+ ),
34
+ Property(
35
+ "has_parts",
36
+ ["openminds.v4.core.File", "openminds.v4.core.FileBundle"],
37
+ "isPartOf",
38
+ reverse="is_part_of",
39
+ multiple=True,
40
+ description="reverse of 'is_part_of'",
41
+ ),
42
+ Property(
43
+ "is_also_part_of",
44
+ "openminds.v4.computation.WorkflowRecipeVersion",
45
+ "hasPart",
46
+ reverse="has_parts",
47
+ multiple=True,
48
+ description="reverse of 'has_parts'",
49
+ ),
50
+ Property(
51
+ "is_input_to",
52
+ "openminds.v4.core.DatasetVersion",
53
+ "inputData",
54
+ reverse="input_data",
55
+ multiple=True,
56
+ description="reverse of 'input_data'",
57
+ ),
58
+ Property(
59
+ "is_location_of",
60
+ ["openminds.v4.core.ServiceLink", "openminds.v4.ephys.Recording"],
61
+ "dataLocation",
62
+ reverse="data_location",
63
+ multiple=True,
64
+ description="reverse of 'data_location'",
65
+ ),
66
+ Property(
67
+ "is_output_of",
68
+ [
69
+ "openminds.v4.computation.DataAnalysis",
70
+ "openminds.v4.computation.DataCopy",
71
+ "openminds.v4.computation.GenericComputation",
72
+ "openminds.v4.computation.ModelValidation",
73
+ "openminds.v4.computation.Optimization",
74
+ "openminds.v4.computation.Simulation",
75
+ "openminds.v4.computation.Visualization",
76
+ "openminds.v4.core.ModelVersion",
77
+ "openminds.v4.core.ProtocolExecution",
78
+ "openminds.v4.ephys.RecordingActivity",
79
+ "openminds.v4.stimulation.StimulationActivity",
80
+ ],
81
+ ["output", "outputData"],
82
+ reverse=["output_data", "outputs"],
83
+ multiple=True,
84
+ description="reverse of output_data, outputs",
85
+ ),
86
+ Property(
87
+ "is_reference_for",
88
+ "openminds.v4.computation.ValidationTestVersion",
89
+ "referenceData",
90
+ reverse="reference_data",
91
+ multiple=True,
92
+ description="reverse of 'reference_data'",
93
+ ),
94
+ Property(
95
+ "specifies",
96
+ "openminds.v4.stimulation.EphysStimulus",
97
+ "specification",
98
+ reverse="specifications",
99
+ multiple=True,
100
+ description="reverse of 'specifications'",
101
+ ),
102
+ ]
103
+ existence_query_properties = ("is_part_of", "name")
104
+
105
+ def __init__(
106
+ self,
107
+ name=None,
108
+ content_description=None,
109
+ describes=None,
110
+ format=None,
111
+ grouped_by=None,
112
+ grouping_types=None,
113
+ has_parts=None,
114
+ hash=None,
115
+ is_also_part_of=None,
116
+ is_input_to=None,
117
+ is_location_of=None,
118
+ is_output_of=None,
119
+ is_part_of=None,
120
+ is_reference_for=None,
121
+ specifies=None,
122
+ storage_size=None,
123
+ id=None,
124
+ data=None,
125
+ space=None,
126
+ release_status=None,
127
+ ):
128
+ return KGObject.__init__(
129
+ self,
130
+ id=id,
131
+ space=space,
132
+ release_status=release_status,
133
+ data=data,
134
+ name=name,
135
+ content_description=content_description,
136
+ describes=describes,
137
+ format=format,
138
+ grouped_by=grouped_by,
139
+ grouping_types=grouping_types,
140
+ has_parts=has_parts,
141
+ hash=hash,
142
+ is_also_part_of=is_also_part_of,
143
+ is_input_to=is_input_to,
144
+ is_location_of=is_location_of,
145
+ is_output_of=is_output_of,
146
+ is_part_of=is_part_of,
147
+ is_reference_for=is_reference_for,
148
+ specifies=specifies,
149
+ storage_size=storage_size,
150
+ )
@@ -0,0 +1,23 @@
1
+ """
2
+ <description not available>
3
+ """
4
+
5
+ # this file was auto-generated
6
+
7
+ from openminds.properties import Property
8
+ from openminds.v4.core import FilePathPattern as OMFilePathPattern
9
+ from fairgraph import EmbeddedMetadata
10
+
11
+
12
+ class FilePathPattern(EmbeddedMetadata, OMFilePathPattern):
13
+ """
14
+ <description not available>
15
+ """
16
+
17
+ type_ = "https://openminds.om-i.org/types/FilePathPattern"
18
+ # forward properties are defined in the parent class (in openMINDS-Python)
19
+ reverse_properties = []
20
+ existence_query_properties = ("grouping_types", "regex")
21
+
22
+ def __init__(self, grouping_types=None, regex=None, id=None, data=None, space=None, release_status=None):
23
+ return EmbeddedMetadata.__init__(self, data=data, grouping_types=grouping_types, regex=regex)
@@ -0,0 +1,99 @@
1
+ """
2
+ Structured information on a file repository.
3
+ """
4
+
5
+ # this file was auto-generated
6
+
7
+ from openminds.properties import Property
8
+ from openminds.v4.core import FileRepository as OMFileRepository
9
+ from fairgraph import KGObject
10
+
11
+
12
+ from openminds import IRI
13
+
14
+
15
+ class FileRepository(KGObject, OMFileRepository):
16
+ """
17
+ Structured information on a file repository.
18
+ """
19
+
20
+ type_ = "https://openminds.om-i.org/types/FileRepository"
21
+ default_space = "dataset"
22
+ # forward properties are defined in the parent class (in openMINDS-Python)
23
+ reverse_properties = [
24
+ Property(
25
+ "contains_content_of",
26
+ [
27
+ "openminds.v4.computation.ValidationTestVersion",
28
+ "openminds.v4.computation.WorkflowRecipeVersion",
29
+ "openminds.v4.core.DatasetVersion",
30
+ "openminds.v4.core.MetaDataModelVersion",
31
+ "openminds.v4.core.ModelVersion",
32
+ "openminds.v4.core.SoftwareVersion",
33
+ "openminds.v4.core.WebServiceVersion",
34
+ "openminds.v4.publications.LivePaperVersion",
35
+ "openminds.v4.sands.BrainAtlasVersion",
36
+ "openminds.v4.sands.CommonCoordinateSpaceVersion",
37
+ ],
38
+ "repository",
39
+ reverse="repository",
40
+ multiple=True,
41
+ description="reverse of 'repository'",
42
+ ),
43
+ Property(
44
+ "files",
45
+ "openminds.v4.core.File",
46
+ "fileRepository",
47
+ reverse="file_repository",
48
+ multiple=True,
49
+ description="reverse of 'file_repository'",
50
+ ),
51
+ Property(
52
+ "has_parts",
53
+ "openminds.v4.core.FileBundle",
54
+ "isPartOf",
55
+ reverse="is_part_of",
56
+ multiple=True,
57
+ description="reverse of 'is_part_of'",
58
+ ),
59
+ ]
60
+ existence_query_properties = ("iri",)
61
+
62
+ def __init__(
63
+ self,
64
+ name=None,
65
+ contains_content_of=None,
66
+ content_type_patterns=None,
67
+ files=None,
68
+ format=None,
69
+ has_parts=None,
70
+ hash=None,
71
+ hosted_by=None,
72
+ iri=None,
73
+ storage_size=None,
74
+ structure_pattern=None,
75
+ type=None,
76
+ id=None,
77
+ data=None,
78
+ space=None,
79
+ release_status=None,
80
+ ):
81
+ return KGObject.__init__(
82
+ self,
83
+ id=id,
84
+ space=space,
85
+ release_status=release_status,
86
+ data=data,
87
+ name=name,
88
+ contains_content_of=contains_content_of,
89
+ content_type_patterns=content_type_patterns,
90
+ files=files,
91
+ format=format,
92
+ has_parts=has_parts,
93
+ hash=hash,
94
+ hosted_by=hosted_by,
95
+ iri=iri,
96
+ storage_size=storage_size,
97
+ structure_pattern=structure_pattern,
98
+ type=type,
99
+ )
@@ -0,0 +1,51 @@
1
+ """
2
+ <description not available>
3
+ """
4
+
5
+ # this file was auto-generated
6
+
7
+ from openminds.properties import Property
8
+ from openminds.v4.core import FileRepositoryStructure as OMFileRepositoryStructure
9
+ from fairgraph import KGObject
10
+
11
+
12
+ class FileRepositoryStructure(KGObject, OMFileRepositoryStructure):
13
+ """
14
+ <description not available>
15
+ """
16
+
17
+ type_ = "https://openminds.om-i.org/types/FileRepositoryStructure"
18
+ default_space = "files"
19
+ # forward properties are defined in the parent class (in openMINDS-Python)
20
+ reverse_properties = [
21
+ Property(
22
+ "structures",
23
+ "openminds.v4.core.FileRepository",
24
+ "structurePattern",
25
+ reverse="structure_pattern",
26
+ multiple=True,
27
+ description="reverse of 'structure_pattern'",
28
+ ),
29
+ ]
30
+ existence_query_properties = ("lookup_label",)
31
+
32
+ def __init__(
33
+ self,
34
+ lookup_label=None,
35
+ file_path_patterns=None,
36
+ structures=None,
37
+ id=None,
38
+ data=None,
39
+ space=None,
40
+ release_status=None,
41
+ ):
42
+ return KGObject.__init__(
43
+ self,
44
+ id=id,
45
+ space=space,
46
+ release_status=release_status,
47
+ data=data,
48
+ lookup_label=lookup_label,
49
+ file_path_patterns=file_path_patterns,
50
+ structures=structures,
51
+ )
@@ -0,0 +1,23 @@
1
+ """
2
+ Structured information on a hash.
3
+ """
4
+
5
+ # this file was auto-generated
6
+
7
+ from openminds.properties import Property
8
+ from openminds.v4.core import Hash as OMHash
9
+ from fairgraph import EmbeddedMetadata
10
+
11
+
12
+ class Hash(EmbeddedMetadata, OMHash):
13
+ """
14
+ Structured information on a hash.
15
+ """
16
+
17
+ type_ = "https://openminds.om-i.org/types/Hash"
18
+ # forward properties are defined in the parent class (in openMINDS-Python)
19
+ reverse_properties = []
20
+ existence_query_properties = ("algorithm", "digest")
21
+
22
+ def __init__(self, algorithm=None, digest=None, id=None, data=None, space=None, release_status=None):
23
+ return EmbeddedMetadata.__init__(self, data=data, algorithm=algorithm, digest=digest)