From ed79959db53c4444853dbe9d5e85d50686783f45 Mon Sep 17 00:00:00 2001 From: tmushayahama Date: Mon, 26 Sep 2022 16:20:14 -0700 Subject: [PATCH 01/45] init shapes json export --- python/json_export.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 python/json_export.py diff --git a/python/json_export.py b/python/json_export.py new file mode 100644 index 0000000..c32ef4b --- /dev/null +++ b/python/json_export.py @@ -0,0 +1,8 @@ +from ontobio.rdfgen.gocamgen.utils import ShexHelper +import json + +shelper = ShexHelper() +shelper.load_shapes() + +with open("shex_dump.json", "w") as sf: + json.dump(shelper.shapes, sf) From d5b329a1010b08b24f012293d99276eefc978c9c Mon Sep 17 00:00:00 2001 From: tmushayahama Date: Wed, 28 Sep 2022 17:46:02 -0700 Subject: [PATCH 02/45] Added parse shex to json for Noctua Form using PyShex lib --- python/json_export.py | 92 +++++++++++++- python/shex_to_json_playground.ipynb | 175 +++++++++++++++++++++++++++ 2 files changed, 263 insertions(+), 4 deletions(-) create mode 100644 python/shex_to_json_playground.ipynb diff --git a/python/json_export.py b/python/json_export.py index c32ef4b..7decfec 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -1,8 +1,92 @@ -from ontobio.rdfgen.gocamgen.utils import ShexHelper +from os import path import json +import requests +from typing import List +from ontobio.rdfgen.assoc_rdfgen import prefix_context +from prefixcommons.curie_util import contract_uri +from pyshexc.parser_impl import generate_shexj +from typing import Optional, List, Union +from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExprLabel, shapeExpr, shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf +from pyshex import PrefixLibrary + + +class NoctuaFormShex: + def __init__(self): + self.json_shapes = {} + shex_url = "https://raw.githubusercontent.com/geneontology/go-shapes/master/shapes/go-cam-shapes.shex" + shex_response = requests.get(shex_url) + self.shex = generate_shexj.parse(shex_response.text) + pref = PrefixLibrary(shex_response.text) + self.pref_dict = {k:self.get_suffix(str(v)) for (k,v) in dict(pref).items()} + + def get_suffix(self, uri): + suffix = contract_uri(uri, cmaps=[prefix_context]) + if len(suffix) > 0: + return suffix[0] + + return path.basename(uri) + + + def get_shape_name(self, uri): + name = path.basename(uri).upper() + if '/go/' in uri: + name = 'GO'+name + return self.pref_dict.get(name, uri) + + def _load_expr(self, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=None) -> List: + + if(preds == None): + preds = {} + + if isinstance(expr, str) and isinstance(preds, list): + preds.append(self.get_shape_name(expr)) + + if isinstance(expr, (ShapeOr, ShapeAnd)): + for expr2 in expr.shapeExprs: + self._load_expr(expr2, preds) + + elif isinstance(expr, ShapeNot): + self._load_expr(expr.shapeExpr, preds) + + elif isinstance(expr, Shape): + if expr.expression is not None: + self._load_triple_expr(expr.expression, preds) + + return preds + + + def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None: + + if isinstance(expr, (OneOf, EachOf)): + for expr2 in expr.expressions: + self._load_triple_expr(expr2, preds) + + elif isinstance(expr, TripleConstraint): + if expr.valueExpr is not None: + pred = self.get_suffix(expr.predicate) + preds[pred] = [] + self._load_expr(expr.valueExpr, preds[pred]) + + + def parse(self): + shapes = self.shex.shapes + + for shape in shapes: + shape_name = self.get_shape_name(shape['id']) + print('Parsing Shape: ' + shape['id']) + self.json_shapes[shape_name] = {} + + shexps = shape.shapeExprs or [] + + for expr in shexps: + self.json_shapes[shape_name] = self._load_expr(expr) + + + +shelper = NoctuaFormShex() +shelper.parse() + -shelper = ShexHelper() -shelper.load_shapes() with open("shex_dump.json", "w") as sf: - json.dump(shelper.shapes, sf) + json.dump(shelper.json_shapes, sf, indent=2) diff --git a/python/shex_to_json_playground.ipynb b/python/shex_to_json_playground.ipynb new file mode 100644 index 0000000..a1e3d04 --- /dev/null +++ b/python/shex_to_json_playground.ipynb @@ -0,0 +1,175 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "56a76033-737c-48d2-96cb-ffd5ec602e44", + "metadata": {}, + "outputs": [], + "source": [ + "from os import path\n", + "import json\n", + "import requests\n", + "from typing import List\n", + "from ontobio.rdfgen.assoc_rdfgen import prefix_context\n", + "from prefixcommons.curie_util import contract_uri\n", + "from pyshexc.parser_impl import generate_shexj\n", + "from typing import Optional, List, Union\n", + "from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExprLabel, shapeExpr, shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf\n", + "from pyshex import PrefixLibrary" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "673f964a-0055-4543-b0d0-5b2e605ddb5e", + "metadata": {}, + "outputs": [], + "source": [ + "shex_url = \"https://raw.githubusercontent.com/geneontology/go-shapes/master/shapes/go-cam-shapes.shex\"\n", + "shex_response = requests.get(shex_url)\n", + "shex = generate_shexj.parse(shex_response.text)\n", + "pref = PrefixLibrary(shex_response.text)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "459c51e3-9625-4220-8080-8eb28b225a51", + "metadata": {}, + "outputs": [], + "source": [ + "def get_predicate(uri):\n", + " suffix = contract_uri(uri, cmaps=[prefix_context])\n", + " if len(suffix) > 0:\n", + " return suffix[0]\n", + "\n", + " return path.basename(uri)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fcc3240-0722-4235-91b4-7ba6356796a0", + "metadata": {}, + "outputs": [], + "source": [ + "pref_dict = {k:get_predicate(str(v)) for (k,v) in dict(pref).items()}\n", + "pref_dict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7febf197-6679-493c-bb0e-fb7872a5d333", + "metadata": {}, + "outputs": [], + "source": [ + "def get_shape_name(uri):\n", + " name = path.basename(uri).upper() \n", + " #print(name)\n", + " if '/go/' in uri:\n", + " name = 'GO'+name\n", + " return pref_dict.get(name)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e25a7994-3ffe-4ea0-af5c-b6f424e8d8a4", + "metadata": {}, + "outputs": [], + "source": [ + "def load_expr(expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=None) -> []:\n", + " \n", + " if(preds == None):\n", + " preds = {}\n", + " if isinstance(expr, str) and isinstance(preds, list):\n", + " preds.append(expr)\n", + " if isinstance(expr, (ShapeOr, ShapeAnd)):\n", + " for expr2 in expr.shapeExprs:\n", + " load_expr(expr2, preds)\n", + " elif isinstance(expr, ShapeNot):\n", + " load_expr(expr.shapeExpr, preds)\n", + " elif isinstance(expr, Shape):\n", + " if expr.expression is not None:\n", + " load_triple(expr.expression, preds)\n", + " \n", + " return preds\n", + " \n", + "def load_triple( expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None:\n", + " \n", + " if isinstance(expr, (OneOf, EachOf)):\n", + " for expr2 in expr.expressions:\n", + " load_triple(expr2, preds)\n", + " elif isinstance(expr, TripleConstraint):\n", + " if expr.valueExpr is not None:\n", + " pred = get_predicate(expr.predicate)\n", + " preds[pred] = []\n", + " load_expr(expr.valueExpr, preds[pred])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b43165da-0a45-4a92-894d-0d02e30a3440", + "metadata": {}, + "outputs": [], + "source": [ + "shapes_res = {}\n", + "shapes = shex.shapes\n", + "\n", + "for shape in shapes:\n", + " shape_name = get_shape_name(shape['id']) \n", + " print(shape_name, shape['id'])\n", + " shapes_res[shape_name] = {}\n", + "\n", + " shexps = shape.shapeExprs or [] \n", + "\n", + " for expr in shexps:\n", + " shapes_res[shape_name] = load_expr(expr)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29ed3690-a3cc-470c-b6f9-c1792c88a159", + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"shex_dump.json\", \"w\") as sf:\n", + " json.dump(shapes_res, sf, indent=2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8b0d4cd5-2b18-408d-9c70-9d5ed64c8b36", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From ed26957ae185abfe65736a632faaf48152c8ca8a Mon Sep 17 00:00:00 2001 From: tmushayahama Date: Wed, 28 Sep 2022 22:44:45 -0700 Subject: [PATCH 03/45] Cleaned the json a lil bit. Added lookup table dump --- python/json_export.py | 54 ++++++++++++------- python/shex_to_json_playground.ipynb | 79 +++++++++++++++++++++------- 2 files changed, 97 insertions(+), 36 deletions(-) diff --git a/python/json_export.py b/python/json_export.py index 7decfec..01c5aa8 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -17,7 +17,10 @@ def __init__(self): shex_response = requests.get(shex_url) self.shex = generate_shexj.parse(shex_response.text) pref = PrefixLibrary(shex_response.text) - self.pref_dict = {k:self.get_suffix(str(v)) for (k,v) in dict(pref).items()} + self.pref_dict = { + k:self.get_suffix(str(v)) for (k,v) in dict(pref).items() + if str(v).startswith('http://purl.obolibrary.org/obo/')} + del self.pref_dict['OBO'] def get_suffix(self, uri): suffix = contract_uri(uri, cmaps=[prefix_context]) @@ -27,27 +30,30 @@ def get_suffix(self, uri): return path.basename(uri) - def get_shape_name(self, uri): + def get_shape_name(self, uri, clean=False): name = path.basename(uri).upper() if '/go/' in uri: name = 'GO'+name - return self.pref_dict.get(name, uri) + return self.pref_dict.get(name, None if clean else uri ) + + def lookup_table(self): + table = {v: { + 'label':k + } for (k,v) in self.pref_dict.items()} + return table + def _load_expr(self, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=None) -> List: if(preds == None): preds = {} - if isinstance(expr, str) and isinstance(preds, list): preds.append(self.get_shape_name(expr)) - if isinstance(expr, (ShapeOr, ShapeAnd)): for expr2 in expr.shapeExprs: self._load_expr(expr2, preds) - elif isinstance(expr, ShapeNot): self._load_expr(expr.shapeExpr, preds) - elif isinstance(expr, Shape): if expr.expression is not None: self._load_triple_expr(expr.expression, preds) @@ -60,19 +66,31 @@ def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=Non if isinstance(expr, (OneOf, EachOf)): for expr2 in expr.expressions: self._load_triple_expr(expr2, preds) - elif isinstance(expr, TripleConstraint): if expr.valueExpr is not None: pred = self.get_suffix(expr.predicate) - preds[pred] = [] - self._load_expr(expr.valueExpr, preds[pred]) + + if pred not in self.pref_dict.values(): + return + + preds[pred] = {} + preds[pred]['targets'] = [] + + if expr.max != None: + preds[pred]['cardinality'] = expr.max + + self._load_expr(expr.valueExpr, preds[pred]['targets']) def parse(self): shapes = self.shex.shapes for shape in shapes: - shape_name = self.get_shape_name(shape['id']) + shape_name = self.get_shape_name(shape['id'], True) + + if shape_name == None: + continue + print('Parsing Shape: ' + shape['id']) self.json_shapes[shape_name] = {} @@ -80,13 +98,13 @@ def parse(self): for expr in shexps: self.json_shapes[shape_name] = self._load_expr(expr) - - + -shelper = NoctuaFormShex() -shelper.parse() - - +nfShex = NoctuaFormShex() +nfShex.parse() with open("shex_dump.json", "w") as sf: - json.dump(shelper.json_shapes, sf, indent=2) + json.dump(nfShex.json_shapes, sf, indent=2) + +with open("look_table.json", "w") as sf: + json.dump(nfShex.lookup_table(), sf, indent=2) diff --git a/python/shex_to_json_playground.ipynb b/python/shex_to_json_playground.ipynb index a1e3d04..9c52124 100644 --- a/python/shex_to_json_playground.ipynb +++ b/python/shex_to_json_playground.ipynb @@ -39,7 +39,7 @@ "metadata": {}, "outputs": [], "source": [ - "def get_predicate(uri):\n", + "def get_suffix(uri):\n", " suffix = contract_uri(uri, cmaps=[prefix_context])\n", " if len(suffix) > 0:\n", " return suffix[0]\n", @@ -54,8 +54,24 @@ "metadata": {}, "outputs": [], "source": [ - "pref_dict = {k:get_predicate(str(v)) for (k,v) in dict(pref).items()}\n", - "pref_dict" + "pref_dict = {k:get_suffix(str(v)) for (k,v) in dict(pref).items() if str(v).startswith('http://purl.obolibrary.org/obo/')}\n", + "del pref_dict['OBO']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4f016014-8d91-45ae-affe-a8578d87e2e3", + "metadata": {}, + "outputs": [], + "source": [ + "def lookup_table():\n", + " table = {v:\n", + " {\n", + " 'label':k\n", + " } \n", + " for (k,v) in pref_dict.items()}\n", + " return table" ] }, { @@ -65,12 +81,11 @@ "metadata": {}, "outputs": [], "source": [ - "def get_shape_name(uri):\n", + "def get_shape_name(uri, clean=False):\n", " name = path.basename(uri).upper() \n", - " #print(name)\n", " if '/go/' in uri:\n", " name = 'GO'+name\n", - " return pref_dict.get(name)\n", + " return pref_dict.get(name, None if clean else uri )\n", " " ] }, @@ -86,7 +101,7 @@ " if(preds == None):\n", " preds = {}\n", " if isinstance(expr, str) and isinstance(preds, list):\n", - " preds.append(expr)\n", + " preds.append(get_shape_name(expr))\n", " if isinstance(expr, (ShapeOr, ShapeAnd)):\n", " for expr2 in expr.shapeExprs:\n", " load_expr(expr2, preds)\n", @@ -105,9 +120,18 @@ " load_triple(expr2, preds)\n", " elif isinstance(expr, TripleConstraint):\n", " if expr.valueExpr is not None:\n", - " pred = get_predicate(expr.predicate)\n", - " preds[pred] = []\n", - " load_expr(expr.valueExpr, preds[pred])" + " pred = get_suffix(expr.predicate)\n", + " \n", + " if pred not in pref_dict.values():\n", + " return\n", + " \n", + " preds[pred] = {}\n", + " preds[pred]['targets'] = []\n", + " \n", + " if expr.max != None:\n", + " preds[pred]['cardinality'] = expr.max \n", + " \n", + " load_expr(expr.valueExpr, preds[pred]['targets'])" ] }, { @@ -121,14 +145,17 @@ "shapes = shex.shapes\n", "\n", "for shape in shapes:\n", - " shape_name = get_shape_name(shape['id']) \n", - " print(shape_name, shape['id'])\n", - " shapes_res[shape_name] = {}\n", + " shape_name = get_shape_name(shape['id'], True)\n", + " \n", + " if shape_name == None:\n", + " continue\n", + " \n", + " shapes_res[shape_name] = {}\n", "\n", - " shexps = shape.shapeExprs or [] \n", + " shexps = shape.shapeExprs or [] \n", "\n", - " for expr in shexps:\n", - " shapes_res[shape_name] = load_expr(expr)" + " for expr in shexps:\n", + " shapes_res[shape_name] = load_expr(expr)" ] }, { @@ -145,7 +172,18 @@ { "cell_type": "code", "execution_count": null, - "id": "8b0d4cd5-2b18-408d-9c70-9d5ed64c8b36", + "id": "117001fd-c42c-4957-9c19-5a59236e92db", + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"look_table.json\", \"w\") as sf:\n", + " json.dump(lookup_table(), sf, indent=2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a85fb0d8-cfc2-41f6-9954-92b46cd5bf68", "metadata": {}, "outputs": [], "source": [] @@ -167,7 +205,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.8" + "version": "3.7.9" + }, + "vscode": { + "interpreter": { + "hash": "88953039a69fbc3cee158df0a3647530aed876ec4de7d6bab7db32384164d671" + } } }, "nbformat": 4, From 52ae6d786cd57d06636a1fbb88060c6cd4f095ad Mon Sep 17 00:00:00 2001 From: tmushayahama Date: Mon, 3 Oct 2022 15:04:32 -0700 Subject: [PATCH 04/45] changed targets to range --- python/json_export.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/json_export.py b/python/json_export.py index 01c5aa8..029beb7 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -36,7 +36,7 @@ def get_shape_name(self, uri, clean=False): name = 'GO'+name return self.pref_dict.get(name, None if clean else uri ) - def lookup_table(self): + def gen_lookup_table(self): table = {v: { 'label':k } for (k,v) in self.pref_dict.items()} @@ -74,12 +74,12 @@ def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=Non return preds[pred] = {} - preds[pred]['targets'] = [] + preds[pred]['range'] = [] if expr.max != None: preds[pred]['cardinality'] = expr.max - self._load_expr(expr.valueExpr, preds[pred]['targets']) + self._load_expr(expr.valueExpr, preds[pred]['range']) def parse(self): @@ -107,4 +107,4 @@ def parse(self): json.dump(nfShex.json_shapes, sf, indent=2) with open("look_table.json", "w") as sf: - json.dump(nfShex.lookup_table(), sf, indent=2) + json.dump(nfShex.gen_lookup_table(), sf, indent=2) From 9c40b69df63b099f284dd1c75cabbab9d72f9ba5 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Mon, 24 Oct 2022 14:50:44 -0700 Subject: [PATCH 05/45] convert shex json output to linkml: draft --- schema/shex_linkml.yaml | 591 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 591 insertions(+) create mode 100644 schema/shex_linkml.yaml diff --git a/schema/shex_linkml.yaml b/schema/shex_linkml.yaml new file mode 100644 index 0000000..8be5bc7 --- /dev/null +++ b/schema/shex_linkml.yaml @@ -0,0 +1,591 @@ +id: go-shex-linkml +name: GO ShEx +description: a schema for he ShEx language representation of GO rules/validation. +license: https://creativecommons.org/publicdomain/zero/1.0/ +version: 0.1.0 + +default_prefix: goshex +default_range: string + +default_curi_maps: + - obo_context + - idot_context + - monarch_context + - semweb_context + +imports: + - linkml:types + +prefixes: + biolink: https://w3id.org/biolink/vocab/ + +classes: + Taxon: + class_uri: NCBITaxon:1 + + BiologicalProcess: + class_uri: GO:0008150 + + ChemicalEntity: + class_uri: CHEBI:24431 + + AnatomicalEntity: + class_uri: CARO:0000000 + + ProteinContainingComplex: + class_uri: GO:0032991 + + InformationBiomacromolecule: + class_uri: CHEBI:33695 + + MolecularFunction: + class_uri: GO:0003674 + + MolecularEvent: + class_uri: http://purl.obolibrary.org/obo/go/shapes/MolecularEvent + + AnatomicalStructureDevelopment: + class_uri: GO:0048856 + + AnatomicalStructureFormationInvolvedInMutagenesis: + class_uri: GO:0048646 + + AnatomicalStructureMorphogenesis: + class_uri: GO:0009653 + + CellDifferentiation: + class_uri: GO:0030154 + + NativeCell: + class_uri: CL:0000003 + + CellDivision: + class_uri: GO:0051301 + + CellFateCommitment: + class_uri: GO:0045165 + + CellFateDetermination: + class_uri: GO:0001709 + + CellFateSpecification: + class_uri: GO:0001708 + + CellularComponent: + class_uri: GO:0005575 + + CellularComponentAssembly: + class_uri: GO:0022607 + + CellularComponentDisassembly: + class_uri: GO:0022411 + + CellularComponentOrganization: + class_uri: GO:0016043 + + DevelopmentalMaturation: + class_uri: GO:0021700 + + Growth: + class_uri: GO:0040007 + + LocalizationProcess: + class_uri: GO:0051179 + + Locomotion: + class_uri: GO:0040011 + + MovementOfCellOrSubcellularComponent: + class_uri: GO:0006928 + + ProteinContainingComplexRemodeling: + class_uri: GO:0034367 + + PatternSpecificationProcess: + class_uri: GO:0007389 + + BiologicalPhase: + class_uri: GO:0044848 + + LifeCycleStage: + class_uri: UBERON:0000105 + + PlantStructureDevelopmentStage: + class_uri: PO:0009012 + + TransporterActivity: + class_uri: GO:0005215 + + RootCellularComponent: + class_uri: http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent + + Protein: + class_uri: CHEBI:36080 + + Evidence: + class_uri: ECO:0000000 + +slots: + + part_of: + slot_uri: BFO:0000050 + notes: >- + this is combining two rules, one for BP-partof-BP and MF-partof-BP. + third rule uses inverse has_part, MF-partof-MF -- is there a problem to use + this one way MF-partof-MF (or vice versa, whichever is the preferred direction). + AE-partof-AE is another combo here that was combined -- all ok? + NC-partof-AE is another combo here that was combined -- all ok? + CC-partof-AE is another combo here that was combined -- all ok? + P-partof-PCC is another combo here that was combined -- all ok? + IM-partof-PCC is another combo here that was combined -- all ok? + domain: + any_of: + - BiologicalProcess + - MolecularFunction + - AnatomicalEntity + - NativeCell + - CellularComponent + - Protein + - InformationBiomacromolecule + range: + any_of: + - BiologicalProcess + - MolecularFunction + - AnatomicalEntity + - ProteinContainingComplex + inverse: has_part + exact_mappings: + - biolink:part_of + + has_part: + slot_uri: BFO:0000051 + notes: >- + can we put primary annotation on one side of this relationship instead of both? + e.g.: convert to part_of rules here by flipping domain and range? + domain: ProteinContainingComplex + range: + any_of: + - InformationBiomacromolecule + - ProteinContainingComplex + + has_input: + slot_uri: RO:0002233 + notes: >- + this is a combination of two rules. + domain: + any_of: + - BiologicalProcess + - CellDivision + - MolecularFunction + range: + any_of: + - ChemicalEntity + - AnatomicalEntity + - ProteinContainingComplex + - Taxon # what is an example of this? + inverse: input_of + exact_mappings: + - biolink:has_input + + has_output: + slot_uri: RO:0002234 + notes: >- + this is a combination of two rules. + domain: + any_of: + - BiologicalProcess + - MolecularFunction + range: + any_of: + - ChemicalEntity + - AnatomicalEntity + - ProteinContainingComplex + inverse: output_of + exact_mappings: + - biolink:has_output + + occurs_in: + slot_uri: BFO:0000066 + domain: + any_of: + - BiologicalProcess + - MolecularFunction + range: AnatomicalEntity + inverse: has_participant + exact_mappings: + - biolink:occurs_in + + transports_or_maintains_localization_of: + slot_uri: RO:0002436 + notes: >- + This predicate is used in two different shape expressions: one for + BP->InformationBiomacromolecule|ProteinContainingComplex and one for LocalizationProcess->AnatomicalEntity| + ChemicalEntity|InformationBiomacromolecule|ProteinContainingComplex. + Does BP-transports_or_maintains_localization_of->ChemicalEntity make sense as well? + third rule combo is: TransporterActivity-> + domain: + any_of: + - BiologicalProcess + - TransporterActivity + range: + any_of: + - InformationBiomacromolecule + - ProteinContainingComplex + - ChemicalEntity + inverse: transported_or_localized_by + + has_target_end_location: + slot_uri: RO:0002339 + domain: + any_of: + - BiologicalProcess + - LocalizationProcess + - TransporterActivity + range: + any_of: + - AnatomicalEntity + - CellularComponent + inverse: target_end_location_of + + has_target_start_location: + slot_uri: RO:0002338 + notes: >- + this is a combination of two rules. ok? + domain: + any_of: + - BiologicalProcess + - LocalizationProcess + - TransporterActivity + range: + any_of: + - AnatomicalEntity + - CellularComponent + inverse: target_start_location_of + + causally_upstream_of: + slot_uri: RO:0002411 + notes: >- + this is a combination of two rules. all ok? + domain: + any_of: + - BiologicalProcess + - MolecularFunction + range: + any_of: + - BiologicalProcess + - MolecularFunction + - MolecularEvent + + causally_upstream_of_or_within: + slot_uri: RO:0002418 + domain: MolecularFunction + range: + any_of: + - BiologicalProcess + - MolecularFunction + - MolecularEvent + + causally_upstream_of_negative_effect: + is_a: causally_upstream_of + slot_uri: RO:0002305 + notes: >- + this is a combination of two rules, all ok? + domain: + any_of: + - BiologicalProcess + - MolecularFunction + range: + any_of: + - BiologicalProcess + - MolecularFunction + - MolecularEvent + + causally_upstream_of_positive_effect: + is_a: causally_upstream_of + slot_uri: RO:0002304 + notes: >- + this is a combination of two rules, all ok? + domain: + any_of: + - BiologicalProcess + - MolecularFunction + range: + any_of: + - BiologicalProcess + - MolecularFunction + - MolecularEvent + + regulates: + slot_uri: RO:0002211 + notes: >- + this is a combination of two rules + domain: + any_of: + - BiologicalProcess + - MolecularFunction + range: + any_of: + - BiologicalProcess + - MolecularEvent + - MolecularFunction + inverse: regulated_by + exact_mappings: + - biolink:regulates + + negatively_regulates: + is_a: regulates + notes: >- + this is a combination of two rules + slot_uri: RO:0002212 + domain: + any_of: + - BiologicalProcess + - MolecularFunction + range: + any_of: + - BiologicalProcess + - MolecularFunction + inverse: negatively_regulated_by + + positively_regulates: + is_a: regulates + notes: >- + this is a combination of two rules + slot_uri: RO:0002213 + domain: + any_of: + - BiologicalProcess + - MolecularFunction + range: + any_of: + - BiologicalProcess + - MolecularFunction + inverse: positively_regulated_by + + acts_on_population_of: + slot_uri: RO:0012003 + domain: BiologicalProcess + range: Taxon + inverse: population_acted_on_by + + results_in_development_of: + slot_uri: RO:0002296 + domain: AnatomicalStructureDevelopment + range: AnatomicalEntity + + results_in_morphogenesis_of: + slot_uri: RO:0002298 + domain: AnatomicalStructureMorphogenesis + range: AnatomicalEntity + + results_in_acquisition_of_features_of: + slot_uri: RO:002315 + domain: CellDifferentiation + range: NativeCell + + results_in_commitment_to: + slot_uri: RO:0002348 + domain: CellFateCommitment + range: NativeCell + + results_in_determination_of: + slot_uri: RO:0002349 + domain: CellFateDetermination + range: NativeCell + + results_in_specification_of: + slot_uri: RO:0002356 + notes: >- + These were two separate statements in the Shex. Do all combinations of these + domains and ranges make sense? + domain: + any_of: + - CellFateSpecification + - PatternSpecificationProcess + range: + any_of: + - NativeCell + - AnatomicalEntity + + results_in_assembly_of: + slot_uri: RO:0002588 + domain: CellularComponentAssembly + range: CellularComponent + + results_in_disassembly_of: + slot_uri: RO:0002589 + domain: CellularComponenTDissaembly + range: CellularComponent + + results_in_organization_of: + slot_uri: RO:0002592 + domain: CellularComponentOrganization + range: CellularComponent + + results_in_maturation_of: + slot_uri: RO:0002299 + domain: DevelopmentalMaturation + range: AnatomicalEntity + + results_in_growth_of: + slot_uri: RO:0002343 + domain: Growth + range: AnatomicalEntity + + results_in_localization_of: + slot_uri: RO:0002331 + domain: Localization + range: AnatomicalEntity + + results_in_movement_of: + slot_uri: RO:0002565 + notes: >- + these were two rules, one for Locomotion, one for MovementOfCellOrSubcellularComponent. I combined them into one rule. + does MovementOfCellOrSubcellularComponent->AnatomicalEntity make sense? + does MovementOfCellOrSubcellularComponent->NativeCell make sense? + domain: + any_of: + - Locomotion + - MovementOfCellOrSubcellularComponent + range: + any_of: + - AnatomicalEntity + - NativeCell + - CellularComponent + + results_in_remodeling_of: + slot_uri: RO:0002591 + domain: ProteinContainingComplexRemodeling + range: ProteinContainingComplex + + enabled_by: + notes: >- + should we flip this rule so that we are using canonical directions vs. inverses? + in OLS, this looks like an inverse annotation. (could be wrong) + slot_uri: RO:0002333 + domain: MolecularFunction + range: + any_of: + - InformationBiomacromolecule + - ProteinContainingComplex + + directly_provides_input_for: + slot_uri: RO:0002413 + domain: MolecularFunction + range: + any_of: + - MolecularEvent + - MolecularFunction + + directly_regulates: + is_a: regulates + slot_uri: RO:0002578 + domain: MolecularFunction + range: MolecularFunction + + directly_negatively_regulates: + is_a: directly_regulates + slot_uri: RO:0002630 + domain: MolecularFunction + range: + any_of: + - MolecularFunction + - MolecularEvent + + directly_positively_regulates: + is_a: directly_regulates + slot_uri: RO:0002629 + domain: MolecularFunction + range: + any_of: + - MolecularFunction + - MolecularEvent + + happens_during: + slot_uri: RO:0002092 + domain: MolecularFunction + range: + any_of: + - BiologicalPhase + - LifeCycleStage + - PlantStructureDevelopmentStage + + location_of: + slot_uri: RO:0001015 + domain: AnatomicalEntity + range: + any_of: + - ProteinContainingComplex + - InformationBiomacromolecule + + located_in: + slot_uri: RO:0001025 + domain: + any_of: + - ProteinContainingComplex + - Protein + - InformationBiomacromolecule + range: AnatomicalEntity + + adjacent_to: + slot_uri: RO:0002220 + domain: CellularComponent + range: AnatomicalEntity + + overlaps: + slot_uri: RO:0002131 + domain: CellularComponent + range: AnatomicalEntity + + existence_overlaps: + slot_uri: RO:0002490 + notes: >- + this is the result of combining two rules, all ok? + domain: + any_of: + - CellularComponent + - ProteinContainingComplex + range: + any_of: + - BiologicalProcess + - LifeCycleStage + - PlantStructureDevelopmentStage + + existence_starts_and_ends_during: + slot_uri: RO:0002491 + domain: + any_of: + - CellularComponent + - ProteinContainingComplex + range: + any_of: + - BiologicalPhase + - LifeCycleStage + - PlantStructureDevelopmentStage + + is_active_in: + slot_uri: RO:0002432 + notes: >- + What's the difference between RootCellularComponent and CellularComponent? + Should CellularComponent be a range here too? + domain: + any_of: + - ProteinContainingComplex + - Protein + - InformationBiomacromolecule + range: + any_of: + - AnatomicalEntity + - RootCellularComponent + + contributes_to: + slot_uri: RO:0002326 + domain: + any_of: + - Protein + - InformationBiomacromolecule + range: MolecularFunction + + + +enums: \ No newline at end of file From 92bf97e85921bf1d14ee9f6f21d04e409e6429c7 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Mon, 24 Oct 2022 14:54:22 -0700 Subject: [PATCH 06/45] adding json representation here for reference in PR review, its a small file so I think its ok --- python/shex_dump.json | 582 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 582 insertions(+) create mode 100644 python/shex_dump.json diff --git a/python/shex_dump.json b/python/shex_dump.json new file mode 100644 index 0000000..abf9a43 --- /dev/null +++ b/python/shex_dump.json @@ -0,0 +1,582 @@ +{ + "NCBITaxon:1": {}, + "GO:0008150": { + "BFO:0000050": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002233": { + "range": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991", + "NCBITaxon:1" + ], + "cardinality": -1 + }, + "RO:0002234": { + "range": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991" + ], + "cardinality": -1 + }, + "BFO:0000066": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002313": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002339": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002338": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002411": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002305": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002304": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002211": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002212": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002213": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0012003": { + "range": [ + "CARO:0000000", + "NCBITaxon:1" + ], + "cardinality": -1 + } + }, + "GO:0048856": { + "RO:0002296": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0048646": { + "RO:0002297": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0009653": { + "RO:0002298": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0030154": { + "RO:0002315": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0051301": { + "RO:0002233": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0045165": { + "RO:0002348": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0001709": { + "RO:0002349": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0001708": { + "RO:0002356": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0022607": { + "RO:0002588": { + "range": [ + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0022411": { + "RO:0002590": { + "range": [ + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0016043": { + "RO:0002592": { + "range": [ + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0021700": { + "RO:0002299": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0040007": { + "RO:0002343": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0051179": { + "RO:0002313": { + "range": [ + "CARO:0000000", + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002339": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002338": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0040011": { + "RO:0002565": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0006928": { + "RO:0002565": { + "range": [ + "CL:0000003", + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0034367": { + "RO:0002591": { + "range": [ + "GO:0032991" + ], + "cardinality": 1 + } + }, + "GO:0007389": { + "RO:0002356": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0003674": { + "RO:0002333": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": 1 + }, + "BFO:0000050": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "BFO:0000051": { + "range": [ + "GO:0003674" + ], + "cardinality": -1 + }, + "BFO:0000066": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002234": { + "range": [ + "CHEBI:24431", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002233": { + "range": [ + "CHEBI:24431", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002413": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002211": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002212": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002213": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002578": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002630": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002629": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002418": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0004046": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0004047": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002411": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002305": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002304": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002092": { + "range": [ + "GO:0044848", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + } + }, + "GO:0005215": { + "RO:0002313": { + "range": [ + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002339": { + "range": [ + "GO:0005575" + ], + "cardinality": -1 + }, + "RO:0002338": { + "range": [ + "GO:0005575" + ], + "cardinality": -1 + } + }, + "GO:0044848": {}, + "UBERON:0000105": {}, + "PO:0009012": {}, + "CARO:0000000": { + "BFO:0000050": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0001015": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": 1 + } + }, + "CL:0000003": { + "BFO:0000050": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0005575": { + "BFO:0000050": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002220": { + "range": [ + "CARO:0000000" + ], + "cardinality": -1 + }, + "RO:0002131": { + "range": [ + "CARO:0000000" + ], + "cardinality": -1 + }, + "RO:0002490": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + }, + "RO:0002491": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + } + }, + "GO:0032991": { + "RO:0001025": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002432": { + "range": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "cardinality": 1 + }, + "BFO:0000051": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002490": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + }, + "RO:0002491": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + } + }, + "CHEBI:24431": {}, + "CHEBI:36080": { + "RO:0001025": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002432": { + "range": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "cardinality": 1 + }, + "BFO:0000050": { + "range": [ + "GO:0032991" + ], + "cardinality": 1 + }, + "RO:0002326": { + "range": [ + "GO:0003674" + ], + "cardinality": 1 + } + }, + "CHEBI:33695": { + "RO:0001025": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002432": { + "range": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "cardinality": 1 + }, + "BFO:0000050": { + "range": [ + "GO:0032991" + ], + "cardinality": 1 + }, + "RO:0002326": { + "range": [ + "GO:0003674" + ], + "cardinality": 1 + } + }, + "ECO:0000000": {} +} \ No newline at end of file From 9f903748681a55b9dff911171d33563250364dc5 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Mon, 24 Oct 2022 14:59:39 -0700 Subject: [PATCH 07/45] start converting to LinkML --- python/json_export.py | 93 +++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 48 deletions(-) diff --git a/python/json_export.py b/python/json_export.py index 029beb7..07fb13e 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -6,10 +6,19 @@ from prefixcommons.curie_util import contract_uri from pyshexc.parser_impl import generate_shexj from typing import Optional, List, Union -from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExprLabel, shapeExpr, shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf +from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExprLabel, shapeExpr, \ + shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf from pyshex import PrefixLibrary +def get_suffix(uri): + suffix = contract_uri(uri, cmaps=[prefix_context]) + if len(suffix) > 0: + return suffix[0] + + return path.basename(uri) + + class NoctuaFormShex: def __init__(self): self.json_shapes = {} @@ -18,34 +27,26 @@ def __init__(self): self.shex = generate_shexj.parse(shex_response.text) pref = PrefixLibrary(shex_response.text) self.pref_dict = { - k:self.get_suffix(str(v)) for (k,v) in dict(pref).items() - if str(v).startswith('http://purl.obolibrary.org/obo/')} + k: get_suffix(str(v)) for (k, v) in dict(pref).items() + if str(v).startswith('http://purl.obolibrary.org/obo/') + } del self.pref_dict['OBO'] - def get_suffix(self, uri): - suffix = contract_uri(uri, cmaps=[prefix_context]) - if len(suffix) > 0: - return suffix[0] - - return path.basename(uri) - - def get_shape_name(self, uri, clean=False): - name = path.basename(uri).upper() + name = path.basename(uri).upper() if '/go/' in uri: - name = 'GO'+name - return self.pref_dict.get(name, None if clean else uri ) + name = 'GO' + name + return self.pref_dict.get(name, None if clean else uri) def gen_lookup_table(self): table = {v: { - 'label':k - } for (k,v) in self.pref_dict.items()} + 'label': k + } for (k, v) in self.pref_dict.items()} return table - def _load_expr(self, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=None) -> List: - - if(preds == None): + + if preds is None: preds = {} if isinstance(expr, str) and isinstance(preds, list): preds.append(self.get_shape_name(expr)) @@ -54,52 +55,48 @@ def _load_expr(self, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=Non self._load_expr(expr2, preds) elif isinstance(expr, ShapeNot): self._load_expr(expr.shapeExpr, preds) - elif isinstance(expr, Shape): - if expr.expression is not None: - self._load_triple_expr(expr.expression, preds) - + elif isinstance(expr, Shape) and expr.expression is not None: + self._load_triple_expr(expr.expression, preds) + return preds - - def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None: - + def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None: + if isinstance(expr, (OneOf, EachOf)): for expr2 in expr.expressions: self._load_triple_expr(expr2, preds) - elif isinstance(expr, TripleConstraint): - if expr.valueExpr is not None: - pred = self.get_suffix(expr.predicate) - - if pred not in self.pref_dict.values(): - return - - preds[pred] = {} - preds[pred]['range'] = [] - - if expr.max != None: - preds[pred]['cardinality'] = expr.max - - self._load_expr(expr.valueExpr, preds[pred]['range']) - - + elif isinstance(expr, TripleConstraint) and expr.valueExpr is not None: + pred = get_suffix(expr.predicate) + + if pred not in self.pref_dict.values(): + return + + preds[pred] = {} + preds[pred]['range'] = [] + + if expr.max is not None: + preds[pred]['cardinality'] = expr.max + + self._load_expr(expr.valueExpr, preds[pred]['range']) + def parse(self): shapes = self.shex.shapes for shape in shapes: shape_name = self.get_shape_name(shape['id'], True) - - if shape_name == None: + + if shape_name is None: continue - + print('Parsing Shape: ' + shape['id']) self.json_shapes[shape_name] = {} - shexps = shape.shapeExprs or [] + shexps = shape.shapeExprs or [] for expr in shexps: self.json_shapes[shape_name] = self._load_expr(expr) - - + + nfShex = NoctuaFormShex() nfShex.parse() From 6b14a45b9f6e6b9dcb731d4201443b29ec5868e7 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Mon, 24 Oct 2022 15:04:37 -0700 Subject: [PATCH 08/45] adding tests, starting to refactor to LinkML version of json_export --- python/json_export.py | 2 ++ python/requirements.txt | 2 ++ python/tests/test_json_export.py | 8 ++++++++ 3 files changed, 12 insertions(+) create mode 100644 python/tests/test_json_export.py diff --git a/python/json_export.py b/python/json_export.py index 07fb13e..b517901 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -26,10 +26,12 @@ def __init__(self): shex_response = requests.get(shex_url) self.shex = generate_shexj.parse(shex_response.text) pref = PrefixLibrary(shex_response.text) + print("pref", pref) self.pref_dict = { k: get_suffix(str(v)) for (k, v) in dict(pref).items() if str(v).startswith('http://purl.obolibrary.org/obo/') } + print("self.pref_dict", self.pref_dict) del self.pref_dict['OBO'] def get_shape_name(self, uri, clean=False): diff --git a/python/requirements.txt b/python/requirements.txt index b6fbe05..9d5a8e2 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -5,3 +5,5 @@ SPARQLWrapper>=0.0 click>=0.0 cachier==1.1.8 dataclasses>=0.0 +linkml +linkml-runtime diff --git a/python/tests/test_json_export.py b/python/tests/test_json_export.py new file mode 100644 index 0000000..93cfa04 --- /dev/null +++ b/python/tests/test_json_export.py @@ -0,0 +1,8 @@ +import pytest + +REMOTE_PATH = ( + "https://raw.githubusercontent.com/biolink/biolink-model/v3.0.3/biolink-model.yaml" +) +def test_get_model_version(toolkit): + version = toolkit.get_model_version() + assert version == "3.0.3" From f2834d86744378a2b8cbc509fa0127266c584eb3 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Mon, 24 Oct 2022 15:18:53 -0700 Subject: [PATCH 09/45] add schemaview test --- python/tests/test_json_export.py | 13 +++++++++---- schema/shex_linkml.yaml | 6 +----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/python/tests/test_json_export.py b/python/tests/test_json_export.py index 93cfa04..7f19f4c 100644 --- a/python/tests/test_json_export.py +++ b/python/tests/test_json_export.py @@ -1,8 +1,13 @@ import pytest +from linkml_runtime.utils.schemaview import SchemaView REMOTE_PATH = ( - "https://raw.githubusercontent.com/biolink/biolink-model/v3.0.3/biolink-model.yaml" + "https://raw.githubusercontent.com/geneontology/go-shapes/6b14a45b9f6e6b9dcb731d4201443b29ec5868e7/schema/shex_linkml.yaml" ) -def test_get_model_version(toolkit): - version = toolkit.get_model_version() - assert version == "3.0.3" + + +def test_valid_schema(): + sv = SchemaView( + "https://raw.githubusercontent.com/geneontology/go-shapes/6b14a45b9f6e6b9dcb731d4201443b29ec5868e7/schema/shex_linkml.yaml" + ) + assert sv.all_classes() diff --git a/schema/shex_linkml.yaml b/schema/shex_linkml.yaml index 8be5bc7..94a7181 100644 --- a/schema/shex_linkml.yaml +++ b/schema/shex_linkml.yaml @@ -1,5 +1,5 @@ id: go-shex-linkml -name: GO ShEx +name: GOShexLinkML description: a schema for he ShEx language representation of GO rules/validation. license: https://creativecommons.org/publicdomain/zero/1.0/ version: 0.1.0 @@ -585,7 +585,3 @@ slots: - Protein - InformationBiomacromolecule range: MolecularFunction - - - -enums: \ No newline at end of file From b660d5022d903dc6b4ab96bddafd3de9cb394194 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Mon, 24 Oct 2022 15:25:50 -0700 Subject: [PATCH 10/45] fixing tests --- python/tests/test_json_export.py | 6 ++---- schema/shex_linkml.yaml | 3 --- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/python/tests/test_json_export.py b/python/tests/test_json_export.py index 7f19f4c..170c773 100644 --- a/python/tests/test_json_export.py +++ b/python/tests/test_json_export.py @@ -2,12 +2,10 @@ from linkml_runtime.utils.schemaview import SchemaView REMOTE_PATH = ( - "https://raw.githubusercontent.com/geneontology/go-shapes/6b14a45b9f6e6b9dcb731d4201443b29ec5868e7/schema/shex_linkml.yaml" + "../../schema/shex_linkml.yaml" ) def test_valid_schema(): - sv = SchemaView( - "https://raw.githubusercontent.com/geneontology/go-shapes/6b14a45b9f6e6b9dcb731d4201443b29ec5868e7/schema/shex_linkml.yaml" - ) + sv = SchemaView(REMOTE_PATH) assert sv.all_classes() diff --git a/schema/shex_linkml.yaml b/schema/shex_linkml.yaml index 94a7181..b42e756 100644 --- a/schema/shex_linkml.yaml +++ b/schema/shex_linkml.yaml @@ -13,9 +13,6 @@ default_curi_maps: - monarch_context - semweb_context -imports: - - linkml:types - prefixes: biolink: https://w3id.org/biolink/vocab/ From 893546aaee23b5964b1ee3fd758c88d963c0456a Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Tue, 25 Oct 2022 16:27:21 -0700 Subject: [PATCH 11/45] refactoring range union --- python/{ => tests}/json_export.py | 5 +++-- python/tests/test_json_export.py | 22 +++++++++++++++++++++- schema/shex_linkml.yaml | 29 +++++++++-------------------- 3 files changed, 33 insertions(+), 23 deletions(-) rename python/{ => tests}/json_export.py (96%) diff --git a/python/json_export.py b/python/tests/json_export.py similarity index 96% rename from python/json_export.py rename to python/tests/json_export.py index b517901..52f348d 100644 --- a/python/json_export.py +++ b/python/tests/json_export.py @@ -85,6 +85,7 @@ def parse(self): shapes = self.shex.shapes for shape in shapes: + print(shape) shape_name = self.get_shape_name(shape['id'], True) if shape_name is None: @@ -102,8 +103,8 @@ def parse(self): nfShex = NoctuaFormShex() nfShex.parse() -with open("shex_dump.json", "w") as sf: +with open("../shex_dump.json", "w") as sf: json.dump(nfShex.json_shapes, sf, indent=2) -with open("look_table.json", "w") as sf: +with open("../look_table.json", "w") as sf: json.dump(nfShex.gen_lookup_table(), sf, indent=2) diff --git a/python/tests/test_json_export.py b/python/tests/test_json_export.py index 170c773..b0087d1 100644 --- a/python/tests/test_json_export.py +++ b/python/tests/test_json_export.py @@ -1,5 +1,11 @@ -import pytest from linkml_runtime.utils.schemaview import SchemaView +from linkml_runtime.linkml_model.meta import ( + SchemaDefinition +) +import json_export +from pprint import pprint +from linkml.generators.shexgen import ShExGenerator +from linkml.generators.jsonschemagen import JsonSchemaGenerator REMOTE_PATH = ( "../../schema/shex_linkml.yaml" @@ -8,4 +14,18 @@ def test_valid_schema(): sv = SchemaView(REMOTE_PATH) + schemadef = sv.schema + assert isinstance(schemadef, SchemaDefinition) assert sv.all_classes() + + shexGen = ShExGenerator(schema=schemadef) + print(shexGen.serialize()) + jsonGen = JsonSchemaGenerator(schema=schemadef) + print(jsonGen.serialize()) + + +def test_json_parser(): + nfs = json_export.NoctuaFormShex() + nfs.parse() + + # pprint(nfs.json_shapes) diff --git a/schema/shex_linkml.yaml b/schema/shex_linkml.yaml index b42e756..52b1da6 100644 --- a/schema/shex_linkml.yaml +++ b/schema/shex_linkml.yaml @@ -4,7 +4,7 @@ description: a schema for he ShEx language representation of GO rules/validation license: https://creativecommons.org/publicdomain/zero/1.0/ version: 0.1.0 -default_prefix: goshex +default_prefix: go default_range: string default_curi_maps: @@ -135,21 +135,11 @@ slots: CC-partof-AE is another combo here that was combined -- all ok? P-partof-PCC is another combo here that was combined -- all ok? IM-partof-PCC is another combo here that was combined -- all ok? - domain: - any_of: - - BiologicalProcess - - MolecularFunction - - AnatomicalEntity - - NativeCell - - CellularComponent - - Protein - - InformationBiomacromolecule - range: - any_of: - - BiologicalProcess - - MolecularFunction - - AnatomicalEntity - - ProteinContainingComplex + any_of: + - range: BiologicalProcess + - range: MolecularFunction + - range: AnatomicalEntity + - range: ProteinContainingComplex inverse: has_part exact_mappings: - biolink:part_of @@ -160,10 +150,9 @@ slots: can we put primary annotation on one side of this relationship instead of both? e.g.: convert to part_of rules here by flipping domain and range? domain: ProteinContainingComplex - range: - any_of: - - InformationBiomacromolecule - - ProteinContainingComplex + any_of: + - range: InformationBiomacromolecule + - range: ProteinContainingComplex has_input: slot_uri: RO:0002233 From ff3a9df35fcab668afca5a894b739e99c70cb0eb Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 26 Oct 2022 09:56:38 -0700 Subject: [PATCH 12/45] more sample schemas --- python/shex_dump.json | 448 +++++++++++++------------- python/tests/test_json_export.py | 10 +- schema/autogen_schema.yaml | 537 +++++++++++++++++++++++++++++++ schema/shex_json_linkml.yaml | 64 ++++ 4 files changed, 831 insertions(+), 228 deletions(-) create mode 100644 schema/autogen_schema.yaml create mode 100644 schema/shex_json_linkml.yaml diff --git a/python/shex_dump.json b/python/shex_dump.json index abf9a43..4586eb7 100644 --- a/python/shex_dump.json +++ b/python/shex_dump.json @@ -1,582 +1,582 @@ { - "NCBITaxon:1": {}, - "GO:0008150": { - "BFO:0000050": { + "NCBITaxon_1": {}, + "GO_0008150": { + "BFO_0000050": { "range": [ - "GO:0008150" + "GO_0008150" ], "cardinality": -1 }, - "RO:0002233": { + "RO_0002233": { "range": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991", - "NCBITaxon:1" + "CHEBI_24431", + "CARO_0000000", + "GO_0032991", + "NCBITaxon_1" ], "cardinality": -1 }, - "RO:0002234": { + "RO_0002234": { "range": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991" + "CHEBI_24431", + "CARO_0000000", + "GO_0032991" ], "cardinality": -1 }, - "BFO:0000066": { + "BFO_0000066": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 }, - "RO:0002313": { + "RO_0002313": { "range": [ - "CHEBI:33695", - "GO:0032991" + "CHEBI_33695", + "GO_0032991" ], "cardinality": -1 }, - "RO:0002339": { + "RO_0002339": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 }, - "RO:0002338": { + "RO_0002338": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 }, - "RO:0002411": { + "RO_0002411": { "range": [ - "GO:0008150", - "GO:0003674", + "GO_0008150", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002305": { + "RO_0002305": { "range": [ - "GO:0008150", - "GO:0003674", + "GO_0008150", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002304": { + "RO_0002304": { "range": [ - "GO:0008150", - "GO:0003674", + "GO_0008150", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002211": { + "RO_0002211": { "range": [ - "GO:0008150" + "GO_0008150" ], "cardinality": -1 }, - "RO:0002212": { + "RO_0002212": { "range": [ - "GO:0008150" + "GO_0008150" ], "cardinality": -1 }, - "RO:0002213": { + "RO_0002213": { "range": [ - "GO:0008150" + "GO_0008150" ], "cardinality": -1 }, - "RO:0012003": { + "RO_0012003": { "range": [ - "CARO:0000000", - "NCBITaxon:1" + "CARO_0000000", + "NCBITaxon_1" ], "cardinality": -1 } }, - "GO:0048856": { - "RO:0002296": { + "GO_0048856": { + "RO_0002296": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 } }, - "GO:0048646": { - "RO:0002297": { + "GO_0048646": { + "RO_0002297": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 } }, - "GO:0009653": { - "RO:0002298": { + "GO_0009653": { + "RO_0002298": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 } }, - "GO:0030154": { - "RO:0002315": { + "GO_0030154": { + "RO_0002315": { "range": [ - "CL:0000003" + "CL_0000003" ], "cardinality": 1 } }, - "GO:0051301": { - "RO:0002233": { + "GO_0051301": { + "RO_0002233": { "range": [ - "CL:0000003" + "CL_0000003" ], "cardinality": 1 } }, - "GO:0045165": { - "RO:0002348": { + "GO_0045165": { + "RO_0002348": { "range": [ - "CL:0000003" + "CL_0000003" ], "cardinality": 1 } }, - "GO:0001709": { - "RO:0002349": { + "GO_0001709": { + "RO_0002349": { "range": [ - "CL:0000003" + "CL_0000003" ], "cardinality": 1 } }, - "GO:0001708": { - "RO:0002356": { + "GO_0001708": { + "RO_0002356": { "range": [ - "CL:0000003" + "CL_0000003" ], "cardinality": 1 } }, - "GO:0022607": { - "RO:0002588": { + "GO_0022607": { + "RO_0002588": { "range": [ - "GO:0005575" + "GO_0005575" ], "cardinality": 1 } }, - "GO:0022411": { - "RO:0002590": { + "GO_0022411": { + "RO_0002590": { "range": [ - "GO:0005575" + "GO_0005575" ], "cardinality": 1 } }, - "GO:0016043": { - "RO:0002592": { + "GO_0016043": { + "RO_0002592": { "range": [ - "GO:0005575" + "GO_0005575" ], "cardinality": 1 } }, - "GO:0021700": { - "RO:0002299": { + "GO_0021700": { + "RO_0002299": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 } }, - "GO:0040007": { - "RO:0002343": { + "GO_0040007": { + "RO_0002343": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 } }, - "GO:0051179": { - "RO:0002313": { + "GO_0051179": { + "RO_0002313": { "range": [ - "CARO:0000000", - "CHEBI:24431", - "CHEBI:33695", - "GO:0032991" + "CARO_0000000", + "CHEBI_24431", + "CHEBI_33695", + "GO_0032991" ], "cardinality": -1 }, - "RO:0002339": { + "RO_0002339": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 }, - "RO:0002338": { + "RO_0002338": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 } }, - "GO:0040011": { - "RO:0002565": { + "GO_0040011": { + "RO_0002565": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 } }, - "GO:0006928": { - "RO:0002565": { + "GO_0006928": { + "RO_0002565": { "range": [ - "CL:0000003", - "GO:0005575" + "CL_0000003", + "GO_0005575" ], "cardinality": 1 } }, - "GO:0034367": { - "RO:0002591": { + "GO_0034367": { + "RO_0002591": { "range": [ - "GO:0032991" + "GO_0032991" ], "cardinality": 1 } }, - "GO:0007389": { - "RO:0002356": { + "GO_0007389": { + "RO_0002356": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 } }, - "GO:0003674": { - "RO:0002333": { + "GO_0003674": { + "RO_0002333": { "range": [ - "CHEBI:33695", - "GO:0032991" + "CHEBI_33695", + "GO_0032991" ], "cardinality": 1 }, - "BFO:0000050": { + "BFO_0000050": { "range": [ - "GO:0008150" + "GO_0008150" ], "cardinality": -1 }, - "BFO:0000051": { + "BFO_0000051": { "range": [ - "GO:0003674" + "GO_0003674" ], "cardinality": -1 }, - "BFO:0000066": { + "BFO_0000066": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 }, - "RO:0002234": { + "RO_0002234": { "range": [ - "CHEBI:24431", - "GO:0032991" + "CHEBI_24431", + "GO_0032991" ], "cardinality": -1 }, - "RO:0002233": { + "RO_0002233": { "range": [ - "CHEBI:24431", - "GO:0032991" + "CHEBI_24431", + "GO_0032991" ], "cardinality": -1 }, - "RO:0002413": { + "RO_0002413": { "range": [ - "GO:0003674", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002211": { + "RO_0002211": { "range": [ - "GO:0003674", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002212": { + "RO_0002212": { "range": [ - "GO:0003674", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002213": { + "RO_0002213": { "range": [ - "GO:0003674", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002578": { + "RO_0002578": { "range": [ - "GO:0003674", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002630": { + "RO_0002630": { "range": [ - "GO:0003674", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002629": { + "RO_0002629": { "range": [ - "GO:0003674", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002418": { + "RO_0002418": { "range": [ - "GO:0003674", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", - "GO:0008150" + "GO_0008150" ], "cardinality": -1 }, - "RO:0004046": { + "RO_0004046": { "range": [ - "GO:0008150" + "GO_0008150" ], "cardinality": -1 }, - "RO:0004047": { + "RO_0004047": { "range": [ - "GO:0008150" + "GO_0008150" ], "cardinality": -1 }, - "RO:0002411": { + "RO_0002411": { "range": [ - "GO:0008150", - "GO:0003674", + "GO_0008150", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002305": { + "RO_0002305": { "range": [ - "GO:0008150", - "GO:0003674", + "GO_0008150", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002304": { + "RO_0002304": { "range": [ - "GO:0008150", - "GO:0003674", + "GO_0008150", + "GO_0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO:0002092": { + "RO_0002092": { "range": [ - "GO:0044848", - "UBERON:0000105", - "PO:0009012" + "GO_0044848", + "UBERON_0000105", + "PO_0009012" ], "cardinality": -1 } }, - "GO:0005215": { - "RO:0002313": { + "GO_0005215": { + "RO_0002313": { "range": [ - "CHEBI:24431", - "CHEBI:33695", - "GO:0032991" + "CHEBI_24431", + "CHEBI_33695", + "GO_0032991" ], "cardinality": -1 }, - "RO:0002339": { + "RO_0002339": { "range": [ - "GO:0005575" + "GO_0005575" ], "cardinality": -1 }, - "RO:0002338": { + "RO_0002338": { "range": [ - "GO:0005575" + "GO_0005575" ], "cardinality": -1 } }, - "GO:0044848": {}, - "UBERON:0000105": {}, - "PO:0009012": {}, - "CARO:0000000": { - "BFO:0000050": { + "GO_0044848": {}, + "UBERON_0000105": {}, + "PO_0009012": {}, + "CARO_0000000": { + "BFO_0000050": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 }, - "RO:0001015": { + "RO_0001015": { "range": [ - "CHEBI:33695", - "GO:0032991" + "CHEBI_33695", + "GO_0032991" ], "cardinality": 1 } }, - "CL:0000003": { - "BFO:0000050": { + "CL_0000003": { + "BFO_0000050": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 } }, - "GO:0005575": { - "BFO:0000050": { + "GO_0005575": { + "BFO_0000050": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 }, - "RO:0002220": { + "RO_0002220": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": -1 }, - "RO:0002131": { + "RO_0002131": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": -1 }, - "RO:0002490": { + "RO_0002490": { "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" + "GO_0008150", + "UBERON_0000105", + "PO_0009012" ], "cardinality": -1 }, - "RO:0002491": { + "RO_0002491": { "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" + "GO_0008150", + "UBERON_0000105", + "PO_0009012" ], "cardinality": -1 } }, - "GO:0032991": { - "RO:0001025": { + "GO_0032991": { + "RO_0001025": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 }, - "RO:0002432": { + "RO_0002432": { "range": [ - "CARO:0000000", + "CARO_0000000", "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" ], "cardinality": 1 }, - "BFO:0000051": { + "BFO_0000051": { "range": [ - "CHEBI:33695", - "GO:0032991" + "CHEBI_33695", + "GO_0032991" ], "cardinality": -1 }, - "RO:0002490": { + "RO_0002490": { "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" + "GO_0008150", + "UBERON_0000105", + "PO_0009012" ], "cardinality": -1 }, - "RO:0002491": { + "RO_0002491": { "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" + "GO_0008150", + "UBERON_0000105", + "PO_0009012" ], "cardinality": -1 } }, - "CHEBI:24431": {}, - "CHEBI:36080": { - "RO:0001025": { + "CHEBI_24431": {}, + "CHEBI_36080": { + "RO_0001025": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 }, - "RO:0002432": { + "RO_0002432": { "range": [ - "CARO:0000000", + "CARO_0000000", "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" ], "cardinality": 1 }, - "BFO:0000050": { + "BFO_0000050": { "range": [ - "GO:0032991" + "GO_0032991" ], "cardinality": 1 }, - "RO:0002326": { + "RO_0002326": { "range": [ - "GO:0003674" + "GO_0003674" ], "cardinality": 1 } }, - "CHEBI:33695": { - "RO:0001025": { + "CHEBI_33695": { + "RO_0001025": { "range": [ - "CARO:0000000" + "CARO_0000000" ], "cardinality": 1 }, - "RO:0002432": { + "RO_0002432": { "range": [ - "CARO:0000000", + "CARO_0000000", "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" ], "cardinality": 1 }, - "BFO:0000050": { + "BFO_0000050": { "range": [ - "GO:0032991" + "GO_0032991" ], "cardinality": 1 }, - "RO:0002326": { + "RO_0002326": { "range": [ - "GO:0003674" + "GO_0003674" ], "cardinality": 1 } }, - "ECO:0000000": {} + "ECO_0000000": {} } \ No newline at end of file diff --git a/python/tests/test_json_export.py b/python/tests/test_json_export.py index b0087d1..0fef9e1 100644 --- a/python/tests/test_json_export.py +++ b/python/tests/test_json_export.py @@ -7,19 +7,21 @@ from linkml.generators.shexgen import ShExGenerator from linkml.generators.jsonschemagen import JsonSchemaGenerator -REMOTE_PATH = ( +SHEX_LINKML_PATH = ( "../../schema/shex_linkml.yaml" ) +SHEX_JSON_LINKML_PATH = ( + "../../schema/shex_json_linkml.yaml" +) def test_valid_schema(): - sv = SchemaView(REMOTE_PATH) + sv = SchemaView(SHEX_JSON_LINKML_PATH) schemadef = sv.schema assert isinstance(schemadef, SchemaDefinition) assert sv.all_classes() + print(sv.all_classes()) - shexGen = ShExGenerator(schema=schemadef) - print(shexGen.serialize()) jsonGen = JsonSchemaGenerator(schema=schemadef) print(jsonGen.serialize()) diff --git a/schema/autogen_schema.yaml b/schema/autogen_schema.yaml new file mode 100644 index 0000000..b660ceb --- /dev/null +++ b/schema/autogen_schema.yaml @@ -0,0 +1,537 @@ +name: AUTO-GOSHEX +description: AUTO-GOSHEX +id: autoGOShEx +imports: +- linkml:types +prefixes: + linkml: https://w3id.org/linkml/ +default_prefix: GOSHEX + +slots: + range: + examples: + - value: '[''GO_0032991'']' + range: string + cardinality: + examples: + - value: '1' + range: integer + BFO_0000050: + range: string + RO_0002233: + range: string + RO_0002234: + range: string + BFO_0000066: + range: string + RO_0002313: + range: string + RO_0002339: + range: string + RO_0002338: + range: string + RO_0002411: + range: string + RO_0002305: + range: string + RO_0002304: + range: string + RO_0002211: + range: string + RO_0002212: + range: string + RO_0002213: + range: string + RO_0012003: + range: string + RO_0002296: + range: string + RO_0002297: + range: string + RO_0002298: + range: string + RO_0002315: + range: string + RO_0002348: + range: string + RO_0002349: + range: string + RO_0002356: + range: string + RO_0002588: + range: string + RO_0002590: + range: string + RO_0002592: + range: string + RO_0002299: + range: string + RO_0002343: + range: string + RO_0002565: + range: string + RO_0002591: + range: string + RO_0002333: + range: string + BFO_0000051: + range: string + RO_0002413: + range: string + RO_0002578: + range: string + RO_0002630: + range: string + RO_0002629: + range: string + RO_0002418: + range: string + RO_0004046: + range: string + RO_0004047: + range: string + RO_0002092: + range: string + RO_0001015: + range: string + RO_0002220: + range: string + RO_0002131: + range: string + RO_0002490: + range: string + RO_0002491: + range: string + RO_0001025: + range: string + RO_0002432: + range: string + RO_0002326: + range: string + NCBITaxon_1: + range: string + GO_0008150: + range: string + GO_0048856: + range: string + GO_0048646: + range: string + GO_0009653: + range: string + GO_0030154: + range: string + GO_0051301: + range: string + GO_0045165: + range: string + GO_0001709: + range: string + GO_0001708: + range: string + GO_0022607: + range: string + GO_0022411: + range: string + GO_0016043: + range: string + GO_0021700: + range: string + GO_0040007: + range: string + GO_0051179: + range: string + GO_0040011: + range: string + GO_0006928: + range: string + GO_0034367: + range: string + GO_0007389: + range: string + GO_0003674: + range: string + GO_0005215: + range: string + GO_0044848: + range: string + UBERON_0000105: + range: string + PO_0009012: + range: string + CARO_0000000: + range: string + CL_0000003: + range: string + GO_0005575: + range: string + GO_0032991: + range: string + CHEBI_24431: + range: string + CHEBI_36080: + range: string + CHEBI_33695: + range: string + ECO_0000000: + range: string + +classes: + NCBITaxon1: {} + BFO0000050: + slots: + - range + - cardinality + RO0002233: + slots: + - range + - cardinality + RO0002234: + slots: + - range + - cardinality + BFO0000066: + slots: + - range + - cardinality + RO0002313: + slots: + - range + - cardinality + RO0002339: + slots: + - range + - cardinality + RO0002338: + slots: + - range + - cardinality + RO0002411: + slots: + - range + - cardinality + RO0002305: + slots: + - range + - cardinality + RO0002304: + slots: + - range + - cardinality + RO0002211: + slots: + - range + - cardinality + RO0002212: + slots: + - range + - cardinality + RO0002213: + slots: + - range + - cardinality + RO0012003: + slots: + - range + - cardinality + GO0008150: + slots: + - BFO_0000050 + - RO_0002233 + - RO_0002234 + - BFO_0000066 + - RO_0002313 + - RO_0002339 + - RO_0002338 + - RO_0002411 + - RO_0002305 + - RO_0002304 + - RO_0002211 + - RO_0002212 + - RO_0002213 + - RO_0012003 + RO0002296: + slots: + - range + - cardinality + GO0048856: + slots: + - RO_0002296 + RO0002297: + slots: + - range + - cardinality + GO0048646: + slots: + - RO_0002297 + RO0002298: + slots: + - range + - cardinality + GO0009653: + slots: + - RO_0002298 + RO0002315: + slots: + - range + - cardinality + GO0030154: + slots: + - RO_0002315 + GO0051301: + slots: + - RO_0002233 + RO0002348: + slots: + - range + - cardinality + GO0045165: + slots: + - RO_0002348 + RO0002349: + slots: + - range + - cardinality + GO0001709: + slots: + - RO_0002349 + RO0002356: + slots: + - range + - cardinality + GO0001708: + slots: + - RO_0002356 + RO0002588: + slots: + - range + - cardinality + GO0022607: + slots: + - RO_0002588 + RO0002590: + slots: + - range + - cardinality + GO0022411: + slots: + - RO_0002590 + RO0002592: + slots: + - range + - cardinality + GO0016043: + slots: + - RO_0002592 + RO0002299: + slots: + - range + - cardinality + GO0021700: + slots: + - RO_0002299 + RO0002343: + slots: + - range + - cardinality + GO0040007: + slots: + - RO_0002343 + GO0051179: + slots: + - RO_0002313 + - RO_0002339 + - RO_0002338 + RO0002565: + slots: + - range + - cardinality + GO0040011: + slots: + - RO_0002565 + GO0006928: + slots: + - RO_0002565 + RO0002591: + slots: + - range + - cardinality + GO0034367: + slots: + - RO_0002591 + GO0007389: + slots: + - RO_0002356 + RO0002333: + slots: + - range + - cardinality + BFO0000051: + slots: + - range + - cardinality + RO0002413: + slots: + - range + - cardinality + RO0002578: + slots: + - range + - cardinality + RO0002630: + slots: + - range + - cardinality + RO0002629: + slots: + - range + - cardinality + RO0002418: + slots: + - range + - cardinality + RO0004046: + slots: + - range + - cardinality + RO0004047: + slots: + - range + - cardinality + RO0002092: + slots: + - range + - cardinality + GO0003674: + slots: + - RO_0002333 + - BFO_0000050 + - BFO_0000051 + - BFO_0000066 + - RO_0002234 + - RO_0002233 + - RO_0002413 + - RO_0002211 + - RO_0002212 + - RO_0002213 + - RO_0002578 + - RO_0002630 + - RO_0002629 + - RO_0002418 + - RO_0004046 + - RO_0004047 + - RO_0002411 + - RO_0002305 + - RO_0002304 + - RO_0002092 + GO0005215: + slots: + - RO_0002313 + - RO_0002339 + - RO_0002338 + GO0044848: {} + UBERON0000105: {} + PO0009012: {} + RO0001015: + slots: + - range + - cardinality + CARO0000000: + slots: + - BFO_0000050 + - RO_0001015 + CL0000003: + slots: + - BFO_0000050 + RO0002220: + slots: + - range + - cardinality + RO0002131: + slots: + - range + - cardinality + RO0002490: + slots: + - range + - cardinality + RO0002491: + slots: + - range + - cardinality + GO0005575: + slots: + - BFO_0000050 + - RO_0002220 + - RO_0002131 + - RO_0002490 + - RO_0002491 + RO0001025: + slots: + - range + - cardinality + RO0002432: + slots: + - range + - cardinality + GO0032991: + slots: + - RO_0001025 + - RO_0002432 + - BFO_0000051 + - RO_0002490 + - RO_0002491 + CHEBI24431: {} + RO0002326: + slots: + - range + - cardinality + CHEBI36080: + slots: + - RO_0001025 + - RO_0002432 + - BFO_0000050 + - RO_0002326 + CHEBI33695: + slots: + - RO_0001025 + - RO_0002432 + - BFO_0000050 + - RO_0002326 + ECO0000000: {} + Container: + slots: + - NCBITaxon_1 + - GO_0008150 + - GO_0048856 + - GO_0048646 + - GO_0009653 + - GO_0030154 + - GO_0051301 + - GO_0045165 + - GO_0001709 + - GO_0001708 + - GO_0022607 + - GO_0022411 + - GO_0016043 + - GO_0021700 + - GO_0040007 + - GO_0051179 + - GO_0040011 + - GO_0006928 + - GO_0034367 + - GO_0007389 + - GO_0003674 + - GO_0005215 + - GO_0044848 + - UBERON_0000105 + - PO_0009012 + - CARO_0000000 + - CL_0000003 + - GO_0005575 + - GO_0032991 + - CHEBI_24431 + - CHEBI_36080 + - CHEBI_33695 + - ECO_0000000 + tree_root: true + diff --git a/schema/shex_json_linkml.yaml b/schema/shex_json_linkml.yaml new file mode 100644 index 0000000..cc5d537 --- /dev/null +++ b/schema/shex_json_linkml.yaml @@ -0,0 +1,64 @@ +id: go-shex-linkml +name: GOShexLinkML +description: a schema for he ShEx language representation of GO rules/validation. +license: https://creativecommons.org/publicdomain/zero/1.0/ +version: 0.1.0 + +default_prefix: go +default_range: string + +imports: + - linkml:types + +default_curi_maps: + - obo_context + - idot_context + - monarch_context + - semweb_context + +prefixes: + biolink: https://w3id.org/biolink/vocab/ + linkml: https://w3id.org/linkml/ + +classes: + NamedThing: + description: >- + A generic grouping for any identifiable entity + slots: + - id + - relationships + close_mappings: + - schema:Thing + + Relationship: + description: >- + A relationship between two entities + slots: + - id + - ranger + - cardinality + close_mappings: + - schema:Relationship + +slots: + relationships: + multivalued: true + range: Relationship + + ranger: + multivalued: true + range: NamedThing + + cardinality: + range: Cardinality + + id: + range: string + + +enums: + Cardinality: + permissible_values: + "1": + "-1": + "0": \ No newline at end of file From e8b27196a28682baaf24d38cda62d50a79deb1fe Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 26 Oct 2022 11:30:59 -0700 Subject: [PATCH 13/45] add some test data --- python/shex_dump.json | 448 +++++++++++++++---------------- python/shex_json_test_data.json | 34 +++ python/tests/test_json_export.py | 11 +- schema/autogen_schema.yaml | 1 + schema/shex_json_linkml.yaml | 25 +- 5 files changed, 288 insertions(+), 231 deletions(-) create mode 100644 python/shex_json_test_data.json diff --git a/python/shex_dump.json b/python/shex_dump.json index 4586eb7..abf9a43 100644 --- a/python/shex_dump.json +++ b/python/shex_dump.json @@ -1,582 +1,582 @@ { - "NCBITaxon_1": {}, - "GO_0008150": { - "BFO_0000050": { + "NCBITaxon:1": {}, + "GO:0008150": { + "BFO:0000050": { "range": [ - "GO_0008150" + "GO:0008150" ], "cardinality": -1 }, - "RO_0002233": { + "RO:0002233": { "range": [ - "CHEBI_24431", - "CARO_0000000", - "GO_0032991", - "NCBITaxon_1" + "CHEBI:24431", + "CARO:0000000", + "GO:0032991", + "NCBITaxon:1" ], "cardinality": -1 }, - "RO_0002234": { + "RO:0002234": { "range": [ - "CHEBI_24431", - "CARO_0000000", - "GO_0032991" + "CHEBI:24431", + "CARO:0000000", + "GO:0032991" ], "cardinality": -1 }, - "BFO_0000066": { + "BFO:0000066": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 }, - "RO_0002313": { + "RO:0002313": { "range": [ - "CHEBI_33695", - "GO_0032991" + "CHEBI:33695", + "GO:0032991" ], "cardinality": -1 }, - "RO_0002339": { + "RO:0002339": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 }, - "RO_0002338": { + "RO:0002338": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 }, - "RO_0002411": { + "RO:0002411": { "range": [ - "GO_0008150", - "GO_0003674", + "GO:0008150", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002305": { + "RO:0002305": { "range": [ - "GO_0008150", - "GO_0003674", + "GO:0008150", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002304": { + "RO:0002304": { "range": [ - "GO_0008150", - "GO_0003674", + "GO:0008150", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002211": { + "RO:0002211": { "range": [ - "GO_0008150" + "GO:0008150" ], "cardinality": -1 }, - "RO_0002212": { + "RO:0002212": { "range": [ - "GO_0008150" + "GO:0008150" ], "cardinality": -1 }, - "RO_0002213": { + "RO:0002213": { "range": [ - "GO_0008150" + "GO:0008150" ], "cardinality": -1 }, - "RO_0012003": { + "RO:0012003": { "range": [ - "CARO_0000000", - "NCBITaxon_1" + "CARO:0000000", + "NCBITaxon:1" ], "cardinality": -1 } }, - "GO_0048856": { - "RO_0002296": { + "GO:0048856": { + "RO:0002296": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 } }, - "GO_0048646": { - "RO_0002297": { + "GO:0048646": { + "RO:0002297": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 } }, - "GO_0009653": { - "RO_0002298": { + "GO:0009653": { + "RO:0002298": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 } }, - "GO_0030154": { - "RO_0002315": { + "GO:0030154": { + "RO:0002315": { "range": [ - "CL_0000003" + "CL:0000003" ], "cardinality": 1 } }, - "GO_0051301": { - "RO_0002233": { + "GO:0051301": { + "RO:0002233": { "range": [ - "CL_0000003" + "CL:0000003" ], "cardinality": 1 } }, - "GO_0045165": { - "RO_0002348": { + "GO:0045165": { + "RO:0002348": { "range": [ - "CL_0000003" + "CL:0000003" ], "cardinality": 1 } }, - "GO_0001709": { - "RO_0002349": { + "GO:0001709": { + "RO:0002349": { "range": [ - "CL_0000003" + "CL:0000003" ], "cardinality": 1 } }, - "GO_0001708": { - "RO_0002356": { + "GO:0001708": { + "RO:0002356": { "range": [ - "CL_0000003" + "CL:0000003" ], "cardinality": 1 } }, - "GO_0022607": { - "RO_0002588": { + "GO:0022607": { + "RO:0002588": { "range": [ - "GO_0005575" + "GO:0005575" ], "cardinality": 1 } }, - "GO_0022411": { - "RO_0002590": { + "GO:0022411": { + "RO:0002590": { "range": [ - "GO_0005575" + "GO:0005575" ], "cardinality": 1 } }, - "GO_0016043": { - "RO_0002592": { + "GO:0016043": { + "RO:0002592": { "range": [ - "GO_0005575" + "GO:0005575" ], "cardinality": 1 } }, - "GO_0021700": { - "RO_0002299": { + "GO:0021700": { + "RO:0002299": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 } }, - "GO_0040007": { - "RO_0002343": { + "GO:0040007": { + "RO:0002343": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 } }, - "GO_0051179": { - "RO_0002313": { + "GO:0051179": { + "RO:0002313": { "range": [ - "CARO_0000000", - "CHEBI_24431", - "CHEBI_33695", - "GO_0032991" + "CARO:0000000", + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" ], "cardinality": -1 }, - "RO_0002339": { + "RO:0002339": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 }, - "RO_0002338": { + "RO:0002338": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 } }, - "GO_0040011": { - "RO_0002565": { + "GO:0040011": { + "RO:0002565": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 } }, - "GO_0006928": { - "RO_0002565": { + "GO:0006928": { + "RO:0002565": { "range": [ - "CL_0000003", - "GO_0005575" + "CL:0000003", + "GO:0005575" ], "cardinality": 1 } }, - "GO_0034367": { - "RO_0002591": { + "GO:0034367": { + "RO:0002591": { "range": [ - "GO_0032991" + "GO:0032991" ], "cardinality": 1 } }, - "GO_0007389": { - "RO_0002356": { + "GO:0007389": { + "RO:0002356": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 } }, - "GO_0003674": { - "RO_0002333": { + "GO:0003674": { + "RO:0002333": { "range": [ - "CHEBI_33695", - "GO_0032991" + "CHEBI:33695", + "GO:0032991" ], "cardinality": 1 }, - "BFO_0000050": { + "BFO:0000050": { "range": [ - "GO_0008150" + "GO:0008150" ], "cardinality": -1 }, - "BFO_0000051": { + "BFO:0000051": { "range": [ - "GO_0003674" + "GO:0003674" ], "cardinality": -1 }, - "BFO_0000066": { + "BFO:0000066": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 }, - "RO_0002234": { + "RO:0002234": { "range": [ - "CHEBI_24431", - "GO_0032991" + "CHEBI:24431", + "GO:0032991" ], "cardinality": -1 }, - "RO_0002233": { + "RO:0002233": { "range": [ - "CHEBI_24431", - "GO_0032991" + "CHEBI:24431", + "GO:0032991" ], "cardinality": -1 }, - "RO_0002413": { + "RO:0002413": { "range": [ - "GO_0003674", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002211": { + "RO:0002211": { "range": [ - "GO_0003674", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002212": { + "RO:0002212": { "range": [ - "GO_0003674", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002213": { + "RO:0002213": { "range": [ - "GO_0003674", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002578": { + "RO:0002578": { "range": [ - "GO_0003674", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002630": { + "RO:0002630": { "range": [ - "GO_0003674", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002629": { + "RO:0002629": { "range": [ - "GO_0003674", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002418": { + "RO:0002418": { "range": [ - "GO_0003674", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", - "GO_0008150" + "GO:0008150" ], "cardinality": -1 }, - "RO_0004046": { + "RO:0004046": { "range": [ - "GO_0008150" + "GO:0008150" ], "cardinality": -1 }, - "RO_0004047": { + "RO:0004047": { "range": [ - "GO_0008150" + "GO:0008150" ], "cardinality": -1 }, - "RO_0002411": { + "RO:0002411": { "range": [ - "GO_0008150", - "GO_0003674", + "GO:0008150", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002305": { + "RO:0002305": { "range": [ - "GO_0008150", - "GO_0003674", + "GO:0008150", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002304": { + "RO:0002304": { "range": [ - "GO_0008150", - "GO_0003674", + "GO:0008150", + "GO:0003674", "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ], "cardinality": -1 }, - "RO_0002092": { + "RO:0002092": { "range": [ - "GO_0044848", - "UBERON_0000105", - "PO_0009012" + "GO:0044848", + "UBERON:0000105", + "PO:0009012" ], "cardinality": -1 } }, - "GO_0005215": { - "RO_0002313": { + "GO:0005215": { + "RO:0002313": { "range": [ - "CHEBI_24431", - "CHEBI_33695", - "GO_0032991" + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" ], "cardinality": -1 }, - "RO_0002339": { + "RO:0002339": { "range": [ - "GO_0005575" + "GO:0005575" ], "cardinality": -1 }, - "RO_0002338": { + "RO:0002338": { "range": [ - "GO_0005575" + "GO:0005575" ], "cardinality": -1 } }, - "GO_0044848": {}, - "UBERON_0000105": {}, - "PO_0009012": {}, - "CARO_0000000": { - "BFO_0000050": { + "GO:0044848": {}, + "UBERON:0000105": {}, + "PO:0009012": {}, + "CARO:0000000": { + "BFO:0000050": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 }, - "RO_0001015": { + "RO:0001015": { "range": [ - "CHEBI_33695", - "GO_0032991" + "CHEBI:33695", + "GO:0032991" ], "cardinality": 1 } }, - "CL_0000003": { - "BFO_0000050": { + "CL:0000003": { + "BFO:0000050": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 } }, - "GO_0005575": { - "BFO_0000050": { + "GO:0005575": { + "BFO:0000050": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 }, - "RO_0002220": { + "RO:0002220": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": -1 }, - "RO_0002131": { + "RO:0002131": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": -1 }, - "RO_0002490": { + "RO:0002490": { "range": [ - "GO_0008150", - "UBERON_0000105", - "PO_0009012" + "GO:0008150", + "UBERON:0000105", + "PO:0009012" ], "cardinality": -1 }, - "RO_0002491": { + "RO:0002491": { "range": [ - "GO_0008150", - "UBERON_0000105", - "PO_0009012" + "GO:0008150", + "UBERON:0000105", + "PO:0009012" ], "cardinality": -1 } }, - "GO_0032991": { - "RO_0001025": { + "GO:0032991": { + "RO:0001025": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 }, - "RO_0002432": { + "RO:0002432": { "range": [ - "CARO_0000000", + "CARO:0000000", "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" ], "cardinality": 1 }, - "BFO_0000051": { + "BFO:0000051": { "range": [ - "CHEBI_33695", - "GO_0032991" + "CHEBI:33695", + "GO:0032991" ], "cardinality": -1 }, - "RO_0002490": { + "RO:0002490": { "range": [ - "GO_0008150", - "UBERON_0000105", - "PO_0009012" + "GO:0008150", + "UBERON:0000105", + "PO:0009012" ], "cardinality": -1 }, - "RO_0002491": { + "RO:0002491": { "range": [ - "GO_0008150", - "UBERON_0000105", - "PO_0009012" + "GO:0008150", + "UBERON:0000105", + "PO:0009012" ], "cardinality": -1 } }, - "CHEBI_24431": {}, - "CHEBI_36080": { - "RO_0001025": { + "CHEBI:24431": {}, + "CHEBI:36080": { + "RO:0001025": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 }, - "RO_0002432": { + "RO:0002432": { "range": [ - "CARO_0000000", + "CARO:0000000", "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" ], "cardinality": 1 }, - "BFO_0000050": { + "BFO:0000050": { "range": [ - "GO_0032991" + "GO:0032991" ], "cardinality": 1 }, - "RO_0002326": { + "RO:0002326": { "range": [ - "GO_0003674" + "GO:0003674" ], "cardinality": 1 } }, - "CHEBI_33695": { - "RO_0001025": { + "CHEBI:33695": { + "RO:0001025": { "range": [ - "CARO_0000000" + "CARO:0000000" ], "cardinality": 1 }, - "RO_0002432": { + "RO:0002432": { "range": [ - "CARO_0000000", + "CARO:0000000", "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" ], "cardinality": 1 }, - "BFO_0000050": { + "BFO:0000050": { "range": [ - "GO_0032991" + "GO:0032991" ], "cardinality": 1 }, - "RO_0002326": { + "RO:0002326": { "range": [ - "GO_0003674" + "GO:0003674" ], "cardinality": 1 } }, - "ECO_0000000": {} + "ECO:0000000": {} } \ No newline at end of file diff --git a/python/shex_json_test_data.json b/python/shex_json_test_data.json new file mode 100644 index 0000000..8191b9b --- /dev/null +++ b/python/shex_json_test_data.json @@ -0,0 +1,34 @@ +{ + "goshapes": [ + { + "name": "GO:0008150", + "relationships": [ + { + "id": "BFO:0000050", + "cardinality": "-1", + "range": ["GO:0008150"] + }, + { + "id": "RO:0002233", + "cardinality": "-1", + "range": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991", + "NCBITaxon:1" + ] + } + ] + }, + { + "name": "GO:0048856", + "relationships": [ + { + "id": "RO:0002296", + "cardinality": "-1", + "range": ["CARO:00000000"] + } + ] + } + ] +} \ No newline at end of file diff --git a/python/tests/test_json_export.py b/python/tests/test_json_export.py index 0fef9e1..7aaf3c7 100644 --- a/python/tests/test_json_export.py +++ b/python/tests/test_json_export.py @@ -14,6 +14,10 @@ "../../schema/shex_json_linkml.yaml" ) +AUTO_LINKML_PATH = ( + "../../schema/autogen_schema.yaml" +) + def test_valid_schema(): sv = SchemaView(SHEX_JSON_LINKML_PATH) @@ -22,8 +26,11 @@ def test_valid_schema(): assert sv.all_classes() print(sv.all_classes()) - jsonGen = JsonSchemaGenerator(schema=schemadef) - print(jsonGen.serialize()) + json_gen = JsonSchemaGenerator(schema=schemadef) + print(json_gen.serialize()) + + json_format = open('../shex_json_linkml.json', 'w') + json_format.write(json_gen.serialize()) def test_json_parser(): diff --git a/schema/autogen_schema.yaml b/schema/autogen_schema.yaml index b660ceb..390d9fc 100644 --- a/schema/autogen_schema.yaml +++ b/schema/autogen_schema.yaml @@ -5,6 +5,7 @@ imports: - linkml:types prefixes: linkml: https://w3id.org/linkml/ + goshex: https://w3id.org/goshex/ default_prefix: GOSHEX slots: diff --git a/schema/shex_json_linkml.yaml b/schema/shex_json_linkml.yaml index cc5d537..7d3aa94 100644 --- a/schema/shex_json_linkml.yaml +++ b/schema/shex_json_linkml.yaml @@ -21,33 +21,43 @@ prefixes: linkml: https://w3id.org/linkml/ classes: - NamedThing: + Shape: description: >- A generic grouping for any identifiable entity slots: - - id + - name - relationships close_mappings: - schema:Thing + slot_usage: + name: + notes: >- + This is the name of the rule, from the shex rules in JSON format, this can be a GO identifier. Relationship: description: >- A relationship between two entities slots: - id - - ranger + - range - cardinality close_mappings: - schema:Relationship + Collection: + tree_root: true + multivalued: true + slots: + - goshapes + slots: relationships: multivalued: true range: Relationship - ranger: + range: multivalued: true - range: NamedThing + range: uriorcurie cardinality: range: Cardinality @@ -55,6 +65,11 @@ slots: id: range: string + name: + range: uriorcurie + + goshapes: + multivalued: true enums: Cardinality: From 9eb2151a46880147c1b00020999c857971fa6431 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 26 Oct 2022 11:31:54 -0700 Subject: [PATCH 14/45] adding test data --- python/shex_json_linkml.json | 62 ++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 python/shex_json_linkml.json diff --git a/python/shex_json_linkml.json b/python/shex_json_linkml.json new file mode 100644 index 0000000..4c48755 --- /dev/null +++ b/python/shex_json_linkml.json @@ -0,0 +1,62 @@ +{ + "$defs": { + "Cardinality": { + "description": "", + "enum": [ + "1", + "-1", + "0" + ], + "title": "Cardinality", + "type": "string" + }, + "Relationship": { + "additionalProperties": false, + "description": "A relationship between two entities", + "properties": { + "cardinality": { + "$ref": "#/$defs/Cardinality" + }, + "id": { + "type": "string" + }, + "range": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [], + "title": "Relationship", + "type": "object" + }, + "Shape": { + "additionalProperties": false, + "description": "A generic grouping for any identifiable entity", + "properties": { + "name": { + "type": "string" + }, + "relationships": { + "items": { + "$ref": "#/$defs/Relationship" + }, + "type": "array" + } + }, + "required": [], + "title": "Shape", + "type": "object" + } + }, + "$id": "go-shex-linkml", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "metamodel_version": "1.7.0", + "properties": {}, + "required": [], + "title": "GOShexLinkML", + "type": "object", + "version": "0.1.0" +} From 8e42b6048ad7dee44b1f6e3231e22bec94011cfb Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 26 Oct 2022 11:38:24 -0700 Subject: [PATCH 15/45] make jsonschema restrictive of additional properties to shape class --- python/shex_json_linkml.json | 24 +++++++++++++++++++++++- schema/shex_json_linkml.yaml | 4 ++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/python/shex_json_linkml.json b/python/shex_json_linkml.json index 4c48755..5a9e867 100644 --- a/python/shex_json_linkml.json +++ b/python/shex_json_linkml.json @@ -10,6 +10,21 @@ "title": "Cardinality", "type": "string" }, + "Collection": { + "additionalProperties": false, + "description": "", + "properties": { + "goshapes": { + "items": { + "$ref": "#/$defs/Shape" + }, + "type": "array" + } + }, + "required": [], + "title": "Collection", + "type": "object" + }, "Relationship": { "additionalProperties": false, "description": "A relationship between two entities", @@ -54,7 +69,14 @@ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "metamodel_version": "1.7.0", - "properties": {}, + "properties": { + "goshapes": { + "items": { + "$ref": "#/$defs/Shape" + }, + "type": "array" + } + }, "required": [], "title": "GOShexLinkML", "type": "object", diff --git a/schema/shex_json_linkml.yaml b/schema/shex_json_linkml.yaml index 7d3aa94..479eef9 100644 --- a/schema/shex_json_linkml.yaml +++ b/schema/shex_json_linkml.yaml @@ -4,7 +4,7 @@ description: a schema for he ShEx language representation of GO rules/validation license: https://creativecommons.org/publicdomain/zero/1.0/ version: 0.1.0 -default_prefix: go +default_prefix: GO default_range: string imports: @@ -46,7 +46,6 @@ classes: Collection: tree_root: true - multivalued: true slots: - goshapes @@ -70,6 +69,7 @@ slots: goshapes: multivalued: true + range: Shape enums: Cardinality: From ab649db9cc849fa49c20767582ad575fe61be4a0 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 26 Oct 2022 15:45:50 -0700 Subject: [PATCH 16/45] minor touches --- python/{tests => }/json_export.py | 38 +- python/shex_dump.json | 582 ------------------------- python/{tests => }/test_json_export.py | 10 +- 3 files changed, 24 insertions(+), 606 deletions(-) rename python/{tests => }/json_export.py (82%) delete mode 100644 python/shex_dump.json rename python/{tests => }/test_json_export.py (72%) diff --git a/python/tests/json_export.py b/python/json_export.py similarity index 82% rename from python/tests/json_export.py rename to python/json_export.py index 52f348d..2a6d875 100644 --- a/python/tests/json_export.py +++ b/python/json_export.py @@ -9,14 +9,7 @@ from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExprLabel, shapeExpr, \ shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf from pyshex import PrefixLibrary - - -def get_suffix(uri): - suffix = contract_uri(uri, cmaps=[prefix_context]) - if len(suffix) > 0: - return suffix[0] - - return path.basename(uri) +from shex_json_linkml import Shape, Relationship, Collection, Cardinality class NoctuaFormShex: @@ -26,14 +19,18 @@ def __init__(self): shex_response = requests.get(shex_url) self.shex = generate_shexj.parse(shex_response.text) pref = PrefixLibrary(shex_response.text) - print("pref", pref) self.pref_dict = { - k: get_suffix(str(v)) for (k, v) in dict(pref).items() - if str(v).startswith('http://purl.obolibrary.org/obo/') - } - print("self.pref_dict", self.pref_dict) + k: self.get_suffix(str(v)) for (k, v) in dict(pref).items() + if str(v).startswith('http://purl.obolibrary.org/obo/')} del self.pref_dict['OBO'] + def get_suffix(self, uri): + suffix = contract_uri(uri, cmaps=[prefix_context]) + if len(suffix) > 0: + return suffix[0] + + return path.basename(uri) + def get_shape_name(self, uri, clean=False): name = path.basename(uri).upper() if '/go/' in uri: @@ -48,7 +45,7 @@ def gen_lookup_table(self): def _load_expr(self, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=None) -> List: - if preds is None: + if (preds == None): preds = {} if isinstance(expr, str) and isinstance(preds, list): preds.append(self.get_shape_name(expr)) @@ -68,7 +65,7 @@ def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None for expr2 in expr.expressions: self._load_triple_expr(expr2, preds) elif isinstance(expr, TripleConstraint) and expr.valueExpr is not None: - pred = get_suffix(expr.predicate) + pred = self.get_suffix(expr.predicate) if pred not in self.pref_dict.values(): return @@ -76,7 +73,7 @@ def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None preds[pred] = {} preds[pred]['range'] = [] - if expr.max is not None: + if expr.max != None: preds[pred]['cardinality'] = expr.max self._load_expr(expr.valueExpr, preds[pred]['range']) @@ -85,10 +82,9 @@ def parse(self): shapes = self.shex.shapes for shape in shapes: - print(shape) shape_name = self.get_shape_name(shape['id'], True) - if shape_name is None: + if shape_name == None: continue print('Parsing Shape: ' + shape['id']) @@ -103,8 +99,8 @@ def parse(self): nfShex = NoctuaFormShex() nfShex.parse() -with open("../shex_dump.json", "w") as sf: +with open("tests/shex_dump.json", "w") as sf: json.dump(nfShex.json_shapes, sf, indent=2) -with open("../look_table.json", "w") as sf: - json.dump(nfShex.gen_lookup_table(), sf, indent=2) +with open("tests/look_table.json", "w") as sf: + json.dump(nfShex.gen_lookup_table(), sf, indent=2) \ No newline at end of file diff --git a/python/shex_dump.json b/python/shex_dump.json deleted file mode 100644 index abf9a43..0000000 --- a/python/shex_dump.json +++ /dev/null @@ -1,582 +0,0 @@ -{ - "NCBITaxon:1": {}, - "GO:0008150": { - "BFO:0000050": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002233": { - "range": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991", - "NCBITaxon:1" - ], - "cardinality": -1 - }, - "RO:0002234": { - "range": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991" - ], - "cardinality": -1 - }, - "BFO:0000066": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002313": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002339": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002338": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002411": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002305": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002304": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002211": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002212": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002213": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0012003": { - "range": [ - "CARO:0000000", - "NCBITaxon:1" - ], - "cardinality": -1 - } - }, - "GO:0048856": { - "RO:0002296": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0048646": { - "RO:0002297": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0009653": { - "RO:0002298": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0030154": { - "RO:0002315": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0051301": { - "RO:0002233": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0045165": { - "RO:0002348": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0001709": { - "RO:0002349": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0001708": { - "RO:0002356": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0022607": { - "RO:0002588": { - "range": [ - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0022411": { - "RO:0002590": { - "range": [ - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0016043": { - "RO:0002592": { - "range": [ - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0021700": { - "RO:0002299": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0040007": { - "RO:0002343": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0051179": { - "RO:0002313": { - "range": [ - "CARO:0000000", - "CHEBI:24431", - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002339": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002338": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0040011": { - "RO:0002565": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0006928": { - "RO:0002565": { - "range": [ - "CL:0000003", - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0034367": { - "RO:0002591": { - "range": [ - "GO:0032991" - ], - "cardinality": 1 - } - }, - "GO:0007389": { - "RO:0002356": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0003674": { - "RO:0002333": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": 1 - }, - "BFO:0000050": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "BFO:0000051": { - "range": [ - "GO:0003674" - ], - "cardinality": -1 - }, - "BFO:0000066": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002234": { - "range": [ - "CHEBI:24431", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002233": { - "range": [ - "CHEBI:24431", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002413": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002211": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002212": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002213": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002578": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002630": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002629": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002418": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0004046": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0004047": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002411": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002305": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002304": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002092": { - "range": [ - "GO:0044848", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - } - }, - "GO:0005215": { - "RO:0002313": { - "range": [ - "CHEBI:24431", - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002339": { - "range": [ - "GO:0005575" - ], - "cardinality": -1 - }, - "RO:0002338": { - "range": [ - "GO:0005575" - ], - "cardinality": -1 - } - }, - "GO:0044848": {}, - "UBERON:0000105": {}, - "PO:0009012": {}, - "CARO:0000000": { - "BFO:0000050": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0001015": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": 1 - } - }, - "CL:0000003": { - "BFO:0000050": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0005575": { - "BFO:0000050": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002220": { - "range": [ - "CARO:0000000" - ], - "cardinality": -1 - }, - "RO:0002131": { - "range": [ - "CARO:0000000" - ], - "cardinality": -1 - }, - "RO:0002490": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - }, - "RO:0002491": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - } - }, - "GO:0032991": { - "RO:0001025": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002432": { - "range": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "cardinality": 1 - }, - "BFO:0000051": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002490": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - }, - "RO:0002491": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - } - }, - "CHEBI:24431": {}, - "CHEBI:36080": { - "RO:0001025": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002432": { - "range": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "cardinality": 1 - }, - "BFO:0000050": { - "range": [ - "GO:0032991" - ], - "cardinality": 1 - }, - "RO:0002326": { - "range": [ - "GO:0003674" - ], - "cardinality": 1 - } - }, - "CHEBI:33695": { - "RO:0001025": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002432": { - "range": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "cardinality": 1 - }, - "BFO:0000050": { - "range": [ - "GO:0032991" - ], - "cardinality": 1 - }, - "RO:0002326": { - "range": [ - "GO:0003674" - ], - "cardinality": 1 - } - }, - "ECO:0000000": {} -} \ No newline at end of file diff --git a/python/tests/test_json_export.py b/python/test_json_export.py similarity index 72% rename from python/tests/test_json_export.py rename to python/test_json_export.py index 7aaf3c7..929b924 100644 --- a/python/tests/test_json_export.py +++ b/python/test_json_export.py @@ -2,10 +2,10 @@ from linkml_runtime.linkml_model.meta import ( SchemaDefinition ) -import json_export +from python import json_export from pprint import pprint -from linkml.generators.shexgen import ShExGenerator from linkml.generators.jsonschemagen import JsonSchemaGenerator +from linkml.generators.pydanticgen import PydanticGenerator SHEX_LINKML_PATH = ( "../../schema/shex_linkml.yaml" @@ -27,14 +27,18 @@ def test_valid_schema(): print(sv.all_classes()) json_gen = JsonSchemaGenerator(schema=schemadef) + python_gen = PydanticGenerator(schema=schemadef) print(json_gen.serialize()) - json_format = open('../shex_json_linkml.json', 'w') + json_format = open('shex_json_linkml.json', 'w') json_format.write(json_gen.serialize()) + pyfile = open('tests/data/shex_json_linkml.py', 'w') + pyfile.write(python_gen.serialize()) def test_json_parser(): nfs = json_export.NoctuaFormShex() nfs.parse() + pprint(nfs.json_shapes) # pprint(nfs.json_shapes) From 1d8aefd1b8e908c829fce1d9f023cf47b7e35ce5 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 26 Oct 2022 16:00:16 -0700 Subject: [PATCH 17/45] fixing tests --- python/json_export.py | 20 +++++++++++--------- python/shex_json_linkml.json | 34 +++++++++++++++++----------------- python/test_json_export.py | 8 ++++---- schema/shex_json_linkml.yaml | 4 ++-- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/python/json_export.py b/python/json_export.py index 2a6d875..c06853b 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -1,15 +1,14 @@ from os import path import json import requests -from typing import List from ontobio.rdfgen.assoc_rdfgen import prefix_context from prefixcommons.curie_util import contract_uri from pyshexc.parser_impl import generate_shexj from typing import Optional, List, Union -from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExprLabel, shapeExpr, \ +from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExpr, \ shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf from pyshex import PrefixLibrary -from shex_json_linkml import Shape, Relationship, Collection, Cardinality +from shex_json_linkml import Collection, GoShape, Relationship, Cardinality class NoctuaFormShex: @@ -79,14 +78,17 @@ def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None self._load_expr(expr.valueExpr, preds[pred]['range']) def parse(self): + goshapes = [] + shapes = self.shex.shapes for shape in shapes: + goshape = GoShape() shape_name = self.get_shape_name(shape['id'], True) - if shape_name == None: + if shape_name is None: continue - + goshape.name = shape_name print('Parsing Shape: ' + shape['id']) self.json_shapes[shape_name] = {} @@ -94,13 +96,13 @@ def parse(self): for expr in shexps: self.json_shapes[shape_name] = self._load_expr(expr) - + print(self.json_shapes[shape_name]) nfShex = NoctuaFormShex() nfShex.parse() -with open("tests/shex_dump.json", "w") as sf: +with open("shex_dump.json", "w") as sf: json.dump(nfShex.json_shapes, sf, indent=2) -with open("tests/look_table.json", "w") as sf: - json.dump(nfShex.gen_lookup_table(), sf, indent=2) \ No newline at end of file +with open("look_table.json", "w") as sf: + json.dump(nfShex.gen_lookup_table(), sf, indent=2) diff --git a/python/shex_json_linkml.json b/python/shex_json_linkml.json index 5a9e867..510abaa 100644 --- a/python/shex_json_linkml.json +++ b/python/shex_json_linkml.json @@ -16,7 +16,7 @@ "properties": { "goshapes": { "items": { - "$ref": "#/$defs/Shape" + "$ref": "#/$defs/GoShape" }, "type": "array" } @@ -25,43 +25,43 @@ "title": "Collection", "type": "object" }, - "Relationship": { + "GoShape": { "additionalProperties": false, - "description": "A relationship between two entities", + "description": "A generic grouping for any identifiable entity", "properties": { - "cardinality": { - "$ref": "#/$defs/Cardinality" - }, - "id": { + "name": { "type": "string" }, - "range": { + "relationships": { "items": { - "type": "string" + "$ref": "#/$defs/Relationship" }, "type": "array" } }, "required": [], - "title": "Relationship", + "title": "GoShape", "type": "object" }, - "Shape": { + "Relationship": { "additionalProperties": false, - "description": "A generic grouping for any identifiable entity", + "description": "A relationship between two entities", "properties": { - "name": { + "cardinality": { + "$ref": "#/$defs/Cardinality" + }, + "id": { "type": "string" }, - "relationships": { + "range": { "items": { - "$ref": "#/$defs/Relationship" + "type": "string" }, "type": "array" } }, "required": [], - "title": "Shape", + "title": "Relationship", "type": "object" } }, @@ -72,7 +72,7 @@ "properties": { "goshapes": { "items": { - "$ref": "#/$defs/Shape" + "$ref": "#/$defs/GoShape" }, "type": "array" } diff --git a/python/test_json_export.py b/python/test_json_export.py index 929b924..7c5baf8 100644 --- a/python/test_json_export.py +++ b/python/test_json_export.py @@ -8,14 +8,14 @@ from linkml.generators.pydanticgen import PydanticGenerator SHEX_LINKML_PATH = ( - "../../schema/shex_linkml.yaml" + "../schema/shex_linkml.yaml" ) SHEX_JSON_LINKML_PATH = ( - "../../schema/shex_json_linkml.yaml" + "../schema/shex_json_linkml.yaml" ) AUTO_LINKML_PATH = ( - "../../schema/autogen_schema.yaml" + "../schema/autogen_schema.yaml" ) @@ -32,7 +32,7 @@ def test_valid_schema(): json_format = open('shex_json_linkml.json', 'w') json_format.write(json_gen.serialize()) - pyfile = open('tests/data/shex_json_linkml.py', 'w') + pyfile = open('shex_json_linkml.py', 'w') pyfile.write(python_gen.serialize()) diff --git a/schema/shex_json_linkml.yaml b/schema/shex_json_linkml.yaml index 479eef9..2574658 100644 --- a/schema/shex_json_linkml.yaml +++ b/schema/shex_json_linkml.yaml @@ -21,7 +21,7 @@ prefixes: linkml: https://w3id.org/linkml/ classes: - Shape: + GoShape: description: >- A generic grouping for any identifiable entity slots: @@ -69,7 +69,7 @@ slots: goshapes: multivalued: true - range: Shape + range: GoShape enums: Cardinality: From 65b9fbc6c0c471fc7bbcfa462b7491c5881b119c Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 26 Oct 2022 16:45:04 -0700 Subject: [PATCH 18/45] adding jsonschema and pydantic generation to the makefile --- python/Makefile | 6 + python/json_export.py | 2 +- python/shex_json_linkml.json | 21 +- python/shex_json_test_data.json | 6 +- schema/autogen_schema.yaml | 538 ------------------------------ schema/shex_json_linkml.yaml | 21 +- schema/shex_linkml.yaml | 573 -------------------------------- 7 files changed, 23 insertions(+), 1144 deletions(-) delete mode 100644 schema/autogen_schema.yaml delete mode 100644 schema/shex_linkml.yaml diff --git a/python/Makefile b/python/Makefile index e4e1f3d..c7c5dec 100644 --- a/python/Makefile +++ b/python/Makefile @@ -41,4 +41,10 @@ p-%: tests/data/p-%.ttl f-%: tests/data/f-%.ttl python ./gocam_validator.py $< && exit -1 || echo FAILED AS EXPECTED +gen-pydantic: + rm -f shex_json_linkml.py && gen-pydantic ../schema/shex_json_linkml.yaml > shex_json_linkml.py + +gen-jsonschema: + rm -f shex_json_linkml.json && gen-json-schema ../schema/shex_json_linkml.yaml > shex_json_linkml.json + .PRECIOUS: tests/data/%.ttl diff --git a/python/json_export.py b/python/json_export.py index c06853b..681e16f 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -44,7 +44,7 @@ def gen_lookup_table(self): def _load_expr(self, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=None) -> List: - if (preds == None): + if preds is None: preds = {} if isinstance(expr, str) and isinstance(preds, list): preds.append(self.get_shape_name(expr)) diff --git a/python/shex_json_linkml.json b/python/shex_json_linkml.json index 510abaa..8a31b21 100644 --- a/python/shex_json_linkml.json +++ b/python/shex_json_linkml.json @@ -1,15 +1,5 @@ { "$defs": { - "Cardinality": { - "description": "", - "enum": [ - "1", - "-1", - "0" - ], - "title": "Cardinality", - "type": "string" - }, "Collection": { "additionalProperties": false, "description": "", @@ -47,12 +37,12 @@ "additionalProperties": false, "description": "A relationship between two entities", "properties": { - "cardinality": { - "$ref": "#/$defs/Cardinality" - }, "id": { "type": "string" }, + "is_multivalued": { + "type": "boolean" + }, "range": { "items": { "type": "string" @@ -65,7 +55,7 @@ "type": "object" } }, - "$id": "go-shex-linkml", + "$id": "go-shex-domain-range-constraints", "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "metamodel_version": "1.7.0", @@ -78,7 +68,8 @@ } }, "required": [], - "title": "GOShexLinkML", + "title": "GODomainRangeConstraintsModel", "type": "object", "version": "0.1.0" } + diff --git a/python/shex_json_test_data.json b/python/shex_json_test_data.json index 8191b9b..446eda1 100644 --- a/python/shex_json_test_data.json +++ b/python/shex_json_test_data.json @@ -5,12 +5,12 @@ "relationships": [ { "id": "BFO:0000050", - "cardinality": "-1", + "is_multivalued": false, "range": ["GO:0008150"] }, { "id": "RO:0002233", - "cardinality": "-1", + "is_multivalued": true, "range": [ "CHEBI:24431", "CARO:0000000", @@ -25,7 +25,7 @@ "relationships": [ { "id": "RO:0002296", - "cardinality": "-1", + "is_multivalued": false, "range": ["CARO:00000000"] } ] diff --git a/schema/autogen_schema.yaml b/schema/autogen_schema.yaml deleted file mode 100644 index 390d9fc..0000000 --- a/schema/autogen_schema.yaml +++ /dev/null @@ -1,538 +0,0 @@ -name: AUTO-GOSHEX -description: AUTO-GOSHEX -id: autoGOShEx -imports: -- linkml:types -prefixes: - linkml: https://w3id.org/linkml/ - goshex: https://w3id.org/goshex/ -default_prefix: GOSHEX - -slots: - range: - examples: - - value: '[''GO_0032991'']' - range: string - cardinality: - examples: - - value: '1' - range: integer - BFO_0000050: - range: string - RO_0002233: - range: string - RO_0002234: - range: string - BFO_0000066: - range: string - RO_0002313: - range: string - RO_0002339: - range: string - RO_0002338: - range: string - RO_0002411: - range: string - RO_0002305: - range: string - RO_0002304: - range: string - RO_0002211: - range: string - RO_0002212: - range: string - RO_0002213: - range: string - RO_0012003: - range: string - RO_0002296: - range: string - RO_0002297: - range: string - RO_0002298: - range: string - RO_0002315: - range: string - RO_0002348: - range: string - RO_0002349: - range: string - RO_0002356: - range: string - RO_0002588: - range: string - RO_0002590: - range: string - RO_0002592: - range: string - RO_0002299: - range: string - RO_0002343: - range: string - RO_0002565: - range: string - RO_0002591: - range: string - RO_0002333: - range: string - BFO_0000051: - range: string - RO_0002413: - range: string - RO_0002578: - range: string - RO_0002630: - range: string - RO_0002629: - range: string - RO_0002418: - range: string - RO_0004046: - range: string - RO_0004047: - range: string - RO_0002092: - range: string - RO_0001015: - range: string - RO_0002220: - range: string - RO_0002131: - range: string - RO_0002490: - range: string - RO_0002491: - range: string - RO_0001025: - range: string - RO_0002432: - range: string - RO_0002326: - range: string - NCBITaxon_1: - range: string - GO_0008150: - range: string - GO_0048856: - range: string - GO_0048646: - range: string - GO_0009653: - range: string - GO_0030154: - range: string - GO_0051301: - range: string - GO_0045165: - range: string - GO_0001709: - range: string - GO_0001708: - range: string - GO_0022607: - range: string - GO_0022411: - range: string - GO_0016043: - range: string - GO_0021700: - range: string - GO_0040007: - range: string - GO_0051179: - range: string - GO_0040011: - range: string - GO_0006928: - range: string - GO_0034367: - range: string - GO_0007389: - range: string - GO_0003674: - range: string - GO_0005215: - range: string - GO_0044848: - range: string - UBERON_0000105: - range: string - PO_0009012: - range: string - CARO_0000000: - range: string - CL_0000003: - range: string - GO_0005575: - range: string - GO_0032991: - range: string - CHEBI_24431: - range: string - CHEBI_36080: - range: string - CHEBI_33695: - range: string - ECO_0000000: - range: string - -classes: - NCBITaxon1: {} - BFO0000050: - slots: - - range - - cardinality - RO0002233: - slots: - - range - - cardinality - RO0002234: - slots: - - range - - cardinality - BFO0000066: - slots: - - range - - cardinality - RO0002313: - slots: - - range - - cardinality - RO0002339: - slots: - - range - - cardinality - RO0002338: - slots: - - range - - cardinality - RO0002411: - slots: - - range - - cardinality - RO0002305: - slots: - - range - - cardinality - RO0002304: - slots: - - range - - cardinality - RO0002211: - slots: - - range - - cardinality - RO0002212: - slots: - - range - - cardinality - RO0002213: - slots: - - range - - cardinality - RO0012003: - slots: - - range - - cardinality - GO0008150: - slots: - - BFO_0000050 - - RO_0002233 - - RO_0002234 - - BFO_0000066 - - RO_0002313 - - RO_0002339 - - RO_0002338 - - RO_0002411 - - RO_0002305 - - RO_0002304 - - RO_0002211 - - RO_0002212 - - RO_0002213 - - RO_0012003 - RO0002296: - slots: - - range - - cardinality - GO0048856: - slots: - - RO_0002296 - RO0002297: - slots: - - range - - cardinality - GO0048646: - slots: - - RO_0002297 - RO0002298: - slots: - - range - - cardinality - GO0009653: - slots: - - RO_0002298 - RO0002315: - slots: - - range - - cardinality - GO0030154: - slots: - - RO_0002315 - GO0051301: - slots: - - RO_0002233 - RO0002348: - slots: - - range - - cardinality - GO0045165: - slots: - - RO_0002348 - RO0002349: - slots: - - range - - cardinality - GO0001709: - slots: - - RO_0002349 - RO0002356: - slots: - - range - - cardinality - GO0001708: - slots: - - RO_0002356 - RO0002588: - slots: - - range - - cardinality - GO0022607: - slots: - - RO_0002588 - RO0002590: - slots: - - range - - cardinality - GO0022411: - slots: - - RO_0002590 - RO0002592: - slots: - - range - - cardinality - GO0016043: - slots: - - RO_0002592 - RO0002299: - slots: - - range - - cardinality - GO0021700: - slots: - - RO_0002299 - RO0002343: - slots: - - range - - cardinality - GO0040007: - slots: - - RO_0002343 - GO0051179: - slots: - - RO_0002313 - - RO_0002339 - - RO_0002338 - RO0002565: - slots: - - range - - cardinality - GO0040011: - slots: - - RO_0002565 - GO0006928: - slots: - - RO_0002565 - RO0002591: - slots: - - range - - cardinality - GO0034367: - slots: - - RO_0002591 - GO0007389: - slots: - - RO_0002356 - RO0002333: - slots: - - range - - cardinality - BFO0000051: - slots: - - range - - cardinality - RO0002413: - slots: - - range - - cardinality - RO0002578: - slots: - - range - - cardinality - RO0002630: - slots: - - range - - cardinality - RO0002629: - slots: - - range - - cardinality - RO0002418: - slots: - - range - - cardinality - RO0004046: - slots: - - range - - cardinality - RO0004047: - slots: - - range - - cardinality - RO0002092: - slots: - - range - - cardinality - GO0003674: - slots: - - RO_0002333 - - BFO_0000050 - - BFO_0000051 - - BFO_0000066 - - RO_0002234 - - RO_0002233 - - RO_0002413 - - RO_0002211 - - RO_0002212 - - RO_0002213 - - RO_0002578 - - RO_0002630 - - RO_0002629 - - RO_0002418 - - RO_0004046 - - RO_0004047 - - RO_0002411 - - RO_0002305 - - RO_0002304 - - RO_0002092 - GO0005215: - slots: - - RO_0002313 - - RO_0002339 - - RO_0002338 - GO0044848: {} - UBERON0000105: {} - PO0009012: {} - RO0001015: - slots: - - range - - cardinality - CARO0000000: - slots: - - BFO_0000050 - - RO_0001015 - CL0000003: - slots: - - BFO_0000050 - RO0002220: - slots: - - range - - cardinality - RO0002131: - slots: - - range - - cardinality - RO0002490: - slots: - - range - - cardinality - RO0002491: - slots: - - range - - cardinality - GO0005575: - slots: - - BFO_0000050 - - RO_0002220 - - RO_0002131 - - RO_0002490 - - RO_0002491 - RO0001025: - slots: - - range - - cardinality - RO0002432: - slots: - - range - - cardinality - GO0032991: - slots: - - RO_0001025 - - RO_0002432 - - BFO_0000051 - - RO_0002490 - - RO_0002491 - CHEBI24431: {} - RO0002326: - slots: - - range - - cardinality - CHEBI36080: - slots: - - RO_0001025 - - RO_0002432 - - BFO_0000050 - - RO_0002326 - CHEBI33695: - slots: - - RO_0001025 - - RO_0002432 - - BFO_0000050 - - RO_0002326 - ECO0000000: {} - Container: - slots: - - NCBITaxon_1 - - GO_0008150 - - GO_0048856 - - GO_0048646 - - GO_0009653 - - GO_0030154 - - GO_0051301 - - GO_0045165 - - GO_0001709 - - GO_0001708 - - GO_0022607 - - GO_0022411 - - GO_0016043 - - GO_0021700 - - GO_0040007 - - GO_0051179 - - GO_0040011 - - GO_0006928 - - GO_0034367 - - GO_0007389 - - GO_0003674 - - GO_0005215 - - GO_0044848 - - UBERON_0000105 - - PO_0009012 - - CARO_0000000 - - CL_0000003 - - GO_0005575 - - GO_0032991 - - CHEBI_24431 - - CHEBI_36080 - - CHEBI_33695 - - ECO_0000000 - tree_root: true - diff --git a/schema/shex_json_linkml.yaml b/schema/shex_json_linkml.yaml index 2574658..0127bbd 100644 --- a/schema/shex_json_linkml.yaml +++ b/schema/shex_json_linkml.yaml @@ -1,6 +1,6 @@ -id: go-shex-linkml -name: GOShexLinkML -description: a schema for he ShEx language representation of GO rules/validation. +id: go-shex-domain-range-constraints +name: GODomainRangeConstraintsModel +description: a schema for the domain and range exchange format for the GO shape expressions license: https://creativecommons.org/publicdomain/zero/1.0/ version: 0.1.0 @@ -40,7 +40,7 @@ classes: slots: - id - range - - cardinality + - is_multivalued close_mappings: - schema:Relationship @@ -58,22 +58,15 @@ slots: multivalued: true range: uriorcurie - cardinality: - range: Cardinality - id: range: string name: range: uriorcurie + is_multivalued: + range: boolean + goshapes: multivalued: true range: GoShape - -enums: - Cardinality: - permissible_values: - "1": - "-1": - "0": \ No newline at end of file diff --git a/schema/shex_linkml.yaml b/schema/shex_linkml.yaml deleted file mode 100644 index 52b1da6..0000000 --- a/schema/shex_linkml.yaml +++ /dev/null @@ -1,573 +0,0 @@ -id: go-shex-linkml -name: GOShexLinkML -description: a schema for he ShEx language representation of GO rules/validation. -license: https://creativecommons.org/publicdomain/zero/1.0/ -version: 0.1.0 - -default_prefix: go -default_range: string - -default_curi_maps: - - obo_context - - idot_context - - monarch_context - - semweb_context - -prefixes: - biolink: https://w3id.org/biolink/vocab/ - -classes: - Taxon: - class_uri: NCBITaxon:1 - - BiologicalProcess: - class_uri: GO:0008150 - - ChemicalEntity: - class_uri: CHEBI:24431 - - AnatomicalEntity: - class_uri: CARO:0000000 - - ProteinContainingComplex: - class_uri: GO:0032991 - - InformationBiomacromolecule: - class_uri: CHEBI:33695 - - MolecularFunction: - class_uri: GO:0003674 - - MolecularEvent: - class_uri: http://purl.obolibrary.org/obo/go/shapes/MolecularEvent - - AnatomicalStructureDevelopment: - class_uri: GO:0048856 - - AnatomicalStructureFormationInvolvedInMutagenesis: - class_uri: GO:0048646 - - AnatomicalStructureMorphogenesis: - class_uri: GO:0009653 - - CellDifferentiation: - class_uri: GO:0030154 - - NativeCell: - class_uri: CL:0000003 - - CellDivision: - class_uri: GO:0051301 - - CellFateCommitment: - class_uri: GO:0045165 - - CellFateDetermination: - class_uri: GO:0001709 - - CellFateSpecification: - class_uri: GO:0001708 - - CellularComponent: - class_uri: GO:0005575 - - CellularComponentAssembly: - class_uri: GO:0022607 - - CellularComponentDisassembly: - class_uri: GO:0022411 - - CellularComponentOrganization: - class_uri: GO:0016043 - - DevelopmentalMaturation: - class_uri: GO:0021700 - - Growth: - class_uri: GO:0040007 - - LocalizationProcess: - class_uri: GO:0051179 - - Locomotion: - class_uri: GO:0040011 - - MovementOfCellOrSubcellularComponent: - class_uri: GO:0006928 - - ProteinContainingComplexRemodeling: - class_uri: GO:0034367 - - PatternSpecificationProcess: - class_uri: GO:0007389 - - BiologicalPhase: - class_uri: GO:0044848 - - LifeCycleStage: - class_uri: UBERON:0000105 - - PlantStructureDevelopmentStage: - class_uri: PO:0009012 - - TransporterActivity: - class_uri: GO:0005215 - - RootCellularComponent: - class_uri: http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent - - Protein: - class_uri: CHEBI:36080 - - Evidence: - class_uri: ECO:0000000 - -slots: - - part_of: - slot_uri: BFO:0000050 - notes: >- - this is combining two rules, one for BP-partof-BP and MF-partof-BP. - third rule uses inverse has_part, MF-partof-MF -- is there a problem to use - this one way MF-partof-MF (or vice versa, whichever is the preferred direction). - AE-partof-AE is another combo here that was combined -- all ok? - NC-partof-AE is another combo here that was combined -- all ok? - CC-partof-AE is another combo here that was combined -- all ok? - P-partof-PCC is another combo here that was combined -- all ok? - IM-partof-PCC is another combo here that was combined -- all ok? - any_of: - - range: BiologicalProcess - - range: MolecularFunction - - range: AnatomicalEntity - - range: ProteinContainingComplex - inverse: has_part - exact_mappings: - - biolink:part_of - - has_part: - slot_uri: BFO:0000051 - notes: >- - can we put primary annotation on one side of this relationship instead of both? - e.g.: convert to part_of rules here by flipping domain and range? - domain: ProteinContainingComplex - any_of: - - range: InformationBiomacromolecule - - range: ProteinContainingComplex - - has_input: - slot_uri: RO:0002233 - notes: >- - this is a combination of two rules. - domain: - any_of: - - BiologicalProcess - - CellDivision - - MolecularFunction - range: - any_of: - - ChemicalEntity - - AnatomicalEntity - - ProteinContainingComplex - - Taxon # what is an example of this? - inverse: input_of - exact_mappings: - - biolink:has_input - - has_output: - slot_uri: RO:0002234 - notes: >- - this is a combination of two rules. - domain: - any_of: - - BiologicalProcess - - MolecularFunction - range: - any_of: - - ChemicalEntity - - AnatomicalEntity - - ProteinContainingComplex - inverse: output_of - exact_mappings: - - biolink:has_output - - occurs_in: - slot_uri: BFO:0000066 - domain: - any_of: - - BiologicalProcess - - MolecularFunction - range: AnatomicalEntity - inverse: has_participant - exact_mappings: - - biolink:occurs_in - - transports_or_maintains_localization_of: - slot_uri: RO:0002436 - notes: >- - This predicate is used in two different shape expressions: one for - BP->InformationBiomacromolecule|ProteinContainingComplex and one for LocalizationProcess->AnatomicalEntity| - ChemicalEntity|InformationBiomacromolecule|ProteinContainingComplex. - Does BP-transports_or_maintains_localization_of->ChemicalEntity make sense as well? - third rule combo is: TransporterActivity-> - domain: - any_of: - - BiologicalProcess - - TransporterActivity - range: - any_of: - - InformationBiomacromolecule - - ProteinContainingComplex - - ChemicalEntity - inverse: transported_or_localized_by - - has_target_end_location: - slot_uri: RO:0002339 - domain: - any_of: - - BiologicalProcess - - LocalizationProcess - - TransporterActivity - range: - any_of: - - AnatomicalEntity - - CellularComponent - inverse: target_end_location_of - - has_target_start_location: - slot_uri: RO:0002338 - notes: >- - this is a combination of two rules. ok? - domain: - any_of: - - BiologicalProcess - - LocalizationProcess - - TransporterActivity - range: - any_of: - - AnatomicalEntity - - CellularComponent - inverse: target_start_location_of - - causally_upstream_of: - slot_uri: RO:0002411 - notes: >- - this is a combination of two rules. all ok? - domain: - any_of: - - BiologicalProcess - - MolecularFunction - range: - any_of: - - BiologicalProcess - - MolecularFunction - - MolecularEvent - - causally_upstream_of_or_within: - slot_uri: RO:0002418 - domain: MolecularFunction - range: - any_of: - - BiologicalProcess - - MolecularFunction - - MolecularEvent - - causally_upstream_of_negative_effect: - is_a: causally_upstream_of - slot_uri: RO:0002305 - notes: >- - this is a combination of two rules, all ok? - domain: - any_of: - - BiologicalProcess - - MolecularFunction - range: - any_of: - - BiologicalProcess - - MolecularFunction - - MolecularEvent - - causally_upstream_of_positive_effect: - is_a: causally_upstream_of - slot_uri: RO:0002304 - notes: >- - this is a combination of two rules, all ok? - domain: - any_of: - - BiologicalProcess - - MolecularFunction - range: - any_of: - - BiologicalProcess - - MolecularFunction - - MolecularEvent - - regulates: - slot_uri: RO:0002211 - notes: >- - this is a combination of two rules - domain: - any_of: - - BiologicalProcess - - MolecularFunction - range: - any_of: - - BiologicalProcess - - MolecularEvent - - MolecularFunction - inverse: regulated_by - exact_mappings: - - biolink:regulates - - negatively_regulates: - is_a: regulates - notes: >- - this is a combination of two rules - slot_uri: RO:0002212 - domain: - any_of: - - BiologicalProcess - - MolecularFunction - range: - any_of: - - BiologicalProcess - - MolecularFunction - inverse: negatively_regulated_by - - positively_regulates: - is_a: regulates - notes: >- - this is a combination of two rules - slot_uri: RO:0002213 - domain: - any_of: - - BiologicalProcess - - MolecularFunction - range: - any_of: - - BiologicalProcess - - MolecularFunction - inverse: positively_regulated_by - - acts_on_population_of: - slot_uri: RO:0012003 - domain: BiologicalProcess - range: Taxon - inverse: population_acted_on_by - - results_in_development_of: - slot_uri: RO:0002296 - domain: AnatomicalStructureDevelopment - range: AnatomicalEntity - - results_in_morphogenesis_of: - slot_uri: RO:0002298 - domain: AnatomicalStructureMorphogenesis - range: AnatomicalEntity - - results_in_acquisition_of_features_of: - slot_uri: RO:002315 - domain: CellDifferentiation - range: NativeCell - - results_in_commitment_to: - slot_uri: RO:0002348 - domain: CellFateCommitment - range: NativeCell - - results_in_determination_of: - slot_uri: RO:0002349 - domain: CellFateDetermination - range: NativeCell - - results_in_specification_of: - slot_uri: RO:0002356 - notes: >- - These were two separate statements in the Shex. Do all combinations of these - domains and ranges make sense? - domain: - any_of: - - CellFateSpecification - - PatternSpecificationProcess - range: - any_of: - - NativeCell - - AnatomicalEntity - - results_in_assembly_of: - slot_uri: RO:0002588 - domain: CellularComponentAssembly - range: CellularComponent - - results_in_disassembly_of: - slot_uri: RO:0002589 - domain: CellularComponenTDissaembly - range: CellularComponent - - results_in_organization_of: - slot_uri: RO:0002592 - domain: CellularComponentOrganization - range: CellularComponent - - results_in_maturation_of: - slot_uri: RO:0002299 - domain: DevelopmentalMaturation - range: AnatomicalEntity - - results_in_growth_of: - slot_uri: RO:0002343 - domain: Growth - range: AnatomicalEntity - - results_in_localization_of: - slot_uri: RO:0002331 - domain: Localization - range: AnatomicalEntity - - results_in_movement_of: - slot_uri: RO:0002565 - notes: >- - these were two rules, one for Locomotion, one for MovementOfCellOrSubcellularComponent. I combined them into one rule. - does MovementOfCellOrSubcellularComponent->AnatomicalEntity make sense? - does MovementOfCellOrSubcellularComponent->NativeCell make sense? - domain: - any_of: - - Locomotion - - MovementOfCellOrSubcellularComponent - range: - any_of: - - AnatomicalEntity - - NativeCell - - CellularComponent - - results_in_remodeling_of: - slot_uri: RO:0002591 - domain: ProteinContainingComplexRemodeling - range: ProteinContainingComplex - - enabled_by: - notes: >- - should we flip this rule so that we are using canonical directions vs. inverses? - in OLS, this looks like an inverse annotation. (could be wrong) - slot_uri: RO:0002333 - domain: MolecularFunction - range: - any_of: - - InformationBiomacromolecule - - ProteinContainingComplex - - directly_provides_input_for: - slot_uri: RO:0002413 - domain: MolecularFunction - range: - any_of: - - MolecularEvent - - MolecularFunction - - directly_regulates: - is_a: regulates - slot_uri: RO:0002578 - domain: MolecularFunction - range: MolecularFunction - - directly_negatively_regulates: - is_a: directly_regulates - slot_uri: RO:0002630 - domain: MolecularFunction - range: - any_of: - - MolecularFunction - - MolecularEvent - - directly_positively_regulates: - is_a: directly_regulates - slot_uri: RO:0002629 - domain: MolecularFunction - range: - any_of: - - MolecularFunction - - MolecularEvent - - happens_during: - slot_uri: RO:0002092 - domain: MolecularFunction - range: - any_of: - - BiologicalPhase - - LifeCycleStage - - PlantStructureDevelopmentStage - - location_of: - slot_uri: RO:0001015 - domain: AnatomicalEntity - range: - any_of: - - ProteinContainingComplex - - InformationBiomacromolecule - - located_in: - slot_uri: RO:0001025 - domain: - any_of: - - ProteinContainingComplex - - Protein - - InformationBiomacromolecule - range: AnatomicalEntity - - adjacent_to: - slot_uri: RO:0002220 - domain: CellularComponent - range: AnatomicalEntity - - overlaps: - slot_uri: RO:0002131 - domain: CellularComponent - range: AnatomicalEntity - - existence_overlaps: - slot_uri: RO:0002490 - notes: >- - this is the result of combining two rules, all ok? - domain: - any_of: - - CellularComponent - - ProteinContainingComplex - range: - any_of: - - BiologicalProcess - - LifeCycleStage - - PlantStructureDevelopmentStage - - existence_starts_and_ends_during: - slot_uri: RO:0002491 - domain: - any_of: - - CellularComponent - - ProteinContainingComplex - range: - any_of: - - BiologicalPhase - - LifeCycleStage - - PlantStructureDevelopmentStage - - is_active_in: - slot_uri: RO:0002432 - notes: >- - What's the difference between RootCellularComponent and CellularComponent? - Should CellularComponent be a range here too? - domain: - any_of: - - ProteinContainingComplex - - Protein - - InformationBiomacromolecule - range: - any_of: - - AnatomicalEntity - - RootCellularComponent - - contributes_to: - slot_uri: RO:0002326 - domain: - any_of: - - Protein - - InformationBiomacromolecule - range: MolecularFunction From 329b2dabd462579434af4dccb6e542f026f4d4bc Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 26 Oct 2022 16:45:59 -0700 Subject: [PATCH 19/45] remove cardinality --- python/json_export.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/json_export.py b/python/json_export.py index 681e16f..b15dc96 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -8,7 +8,7 @@ from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExpr, \ shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf from pyshex import PrefixLibrary -from shex_json_linkml import Collection, GoShape, Relationship, Cardinality +from shex_json_linkml import Collection, GoShape, Relationship class NoctuaFormShex: From fd9e1de2205ba4a6624cb57d39a3548e338419c1 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Thu, 27 Oct 2022 12:18:54 -0700 Subject: [PATCH 20/45] add output to the repo --- python/Makefile | 3 + python/json_export.py | 38 ++- python/shex_dump.json | 582 +++++++++++++++++++++++++++++++++++ python/tests/shex_dump.json | 0 schema/shex_json_linkml.yaml | 4 +- 5 files changed, 611 insertions(+), 16 deletions(-) create mode 100644 python/shex_dump.json create mode 100644 python/tests/shex_dump.json diff --git a/python/Makefile b/python/Makefile index c7c5dec..edd412c 100644 --- a/python/Makefile +++ b/python/Makefile @@ -47,4 +47,7 @@ gen-pydantic: gen-jsonschema: rm -f shex_json_linkml.json && gen-json-schema ../schema/shex_json_linkml.yaml > shex_json_linkml.json +gen-typescript: + rm -f shex_json_linkml.ts && gen-typescript ../schema/shex_json_linkml.yaml > shex_json_linkml.ts + .PRECIOUS: tests/data/%.ttl diff --git a/python/json_export.py b/python/json_export.py index b15dc96..29a3160 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -9,6 +9,15 @@ shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf from pyshex import PrefixLibrary from shex_json_linkml import Collection, GoShape, Relationship +from pprint import pprint + + +def get_suffix(uri): + suffix = contract_uri(uri, cmaps=[prefix_context]) + if len(suffix) > 0: + return suffix[0] + + return path.basename(uri) class NoctuaFormShex: @@ -19,17 +28,10 @@ def __init__(self): self.shex = generate_shexj.parse(shex_response.text) pref = PrefixLibrary(shex_response.text) self.pref_dict = { - k: self.get_suffix(str(v)) for (k, v) in dict(pref).items() + k: get_suffix(str(v)) for (k, v) in dict(pref).items() if str(v).startswith('http://purl.obolibrary.org/obo/')} del self.pref_dict['OBO'] - def get_suffix(self, uri): - suffix = contract_uri(uri, cmaps=[prefix_context]) - if len(suffix) > 0: - return suffix[0] - - return path.basename(uri) - def get_shape_name(self, uri, clean=False): name = path.basename(uri).upper() if '/go/' in uri: @@ -47,6 +49,7 @@ def _load_expr(self, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=Non if preds is None: preds = {} if isinstance(expr, str) and isinstance(preds, list): + # ('Adding: ' + expr + ' to ' + str(preds)) preds.append(self.get_shape_name(expr)) if isinstance(expr, (ShapeOr, ShapeAnd)): for expr2 in expr.shapeExprs: @@ -58,13 +61,13 @@ def _load_expr(self, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=Non return preds - def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None: + def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None: if isinstance(expr, (OneOf, EachOf)): for expr2 in expr.expressions: self._load_triple_expr(expr2, preds) elif isinstance(expr, TripleConstraint) and expr.valueExpr is not None: - pred = self.get_suffix(expr.predicate) + pred = get_suffix(expr.predicate) if pred not in self.pref_dict.values(): return @@ -72,7 +75,7 @@ def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None preds[pred] = {} preds[pred]['range'] = [] - if expr.max != None: + if expr.max is not None: preds[pred]['cardinality'] = expr.max self._load_expr(expr.valueExpr, preds[pred]['range']) @@ -83,20 +86,27 @@ def parse(self): shapes = self.shex.shapes for shape in shapes: - goshape = GoShape() + print(shape) + print("") shape_name = self.get_shape_name(shape['id'], True) if shape_name is None: continue + + goshape = GoShape() goshape.name = shape_name - print('Parsing Shape: ' + shape['id']) + goshape.relationships = [] + # print('Parsing Shape: ' + shape['id']) self.json_shapes[shape_name] = {} shexps = shape.shapeExprs or [] for expr in shexps: self.json_shapes[shape_name] = self._load_expr(expr) - print(self.json_shapes[shape_name]) + goshape.relationships.append(self._load_expr(expr)) + goshapes.append(goshape) + # print(goshapes) + nfShex = NoctuaFormShex() nfShex.parse() diff --git a/python/shex_dump.json b/python/shex_dump.json new file mode 100644 index 0000000..abf9a43 --- /dev/null +++ b/python/shex_dump.json @@ -0,0 +1,582 @@ +{ + "NCBITaxon:1": {}, + "GO:0008150": { + "BFO:0000050": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002233": { + "range": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991", + "NCBITaxon:1" + ], + "cardinality": -1 + }, + "RO:0002234": { + "range": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991" + ], + "cardinality": -1 + }, + "BFO:0000066": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002313": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002339": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002338": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002411": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002305": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002304": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002211": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002212": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002213": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0012003": { + "range": [ + "CARO:0000000", + "NCBITaxon:1" + ], + "cardinality": -1 + } + }, + "GO:0048856": { + "RO:0002296": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0048646": { + "RO:0002297": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0009653": { + "RO:0002298": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0030154": { + "RO:0002315": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0051301": { + "RO:0002233": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0045165": { + "RO:0002348": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0001709": { + "RO:0002349": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0001708": { + "RO:0002356": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0022607": { + "RO:0002588": { + "range": [ + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0022411": { + "RO:0002590": { + "range": [ + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0016043": { + "RO:0002592": { + "range": [ + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0021700": { + "RO:0002299": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0040007": { + "RO:0002343": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0051179": { + "RO:0002313": { + "range": [ + "CARO:0000000", + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002339": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002338": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0040011": { + "RO:0002565": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0006928": { + "RO:0002565": { + "range": [ + "CL:0000003", + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0034367": { + "RO:0002591": { + "range": [ + "GO:0032991" + ], + "cardinality": 1 + } + }, + "GO:0007389": { + "RO:0002356": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0003674": { + "RO:0002333": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": 1 + }, + "BFO:0000050": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "BFO:0000051": { + "range": [ + "GO:0003674" + ], + "cardinality": -1 + }, + "BFO:0000066": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002234": { + "range": [ + "CHEBI:24431", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002233": { + "range": [ + "CHEBI:24431", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002413": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002211": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002212": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002213": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002578": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002630": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002629": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002418": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0004046": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0004047": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002411": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002305": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002304": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002092": { + "range": [ + "GO:0044848", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + } + }, + "GO:0005215": { + "RO:0002313": { + "range": [ + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002339": { + "range": [ + "GO:0005575" + ], + "cardinality": -1 + }, + "RO:0002338": { + "range": [ + "GO:0005575" + ], + "cardinality": -1 + } + }, + "GO:0044848": {}, + "UBERON:0000105": {}, + "PO:0009012": {}, + "CARO:0000000": { + "BFO:0000050": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0001015": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": 1 + } + }, + "CL:0000003": { + "BFO:0000050": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0005575": { + "BFO:0000050": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002220": { + "range": [ + "CARO:0000000" + ], + "cardinality": -1 + }, + "RO:0002131": { + "range": [ + "CARO:0000000" + ], + "cardinality": -1 + }, + "RO:0002490": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + }, + "RO:0002491": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + } + }, + "GO:0032991": { + "RO:0001025": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002432": { + "range": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "cardinality": 1 + }, + "BFO:0000051": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002490": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + }, + "RO:0002491": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + } + }, + "CHEBI:24431": {}, + "CHEBI:36080": { + "RO:0001025": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002432": { + "range": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "cardinality": 1 + }, + "BFO:0000050": { + "range": [ + "GO:0032991" + ], + "cardinality": 1 + }, + "RO:0002326": { + "range": [ + "GO:0003674" + ], + "cardinality": 1 + } + }, + "CHEBI:33695": { + "RO:0001025": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002432": { + "range": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "cardinality": 1 + }, + "BFO:0000050": { + "range": [ + "GO:0032991" + ], + "cardinality": 1 + }, + "RO:0002326": { + "range": [ + "GO:0003674" + ], + "cardinality": 1 + } + }, + "ECO:0000000": {} +} \ No newline at end of file diff --git a/python/tests/shex_dump.json b/python/tests/shex_dump.json new file mode 100644 index 0000000..e69de29 diff --git a/schema/shex_json_linkml.yaml b/schema/shex_json_linkml.yaml index 0127bbd..4413be9 100644 --- a/schema/shex_json_linkml.yaml +++ b/schema/shex_json_linkml.yaml @@ -25,7 +25,7 @@ classes: description: >- A generic grouping for any identifiable entity slots: - - name + - domain_name - relationships close_mappings: - schema:Thing @@ -61,7 +61,7 @@ slots: id: range: string - name: + domain_name: range: uriorcurie is_multivalued: From e56b332b489bc1b7a94e35c5650a9e8e5c89287d Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Thu, 27 Oct 2022 12:19:57 -0700 Subject: [PATCH 21/45] add json python typescript outputs --- python/shex_json_linkml.json | 3 ++ python/shex_json_linkml.py | 53 ++++++++++++++++++++++++++++ python/shex_json_linkml.ts | 67 ++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 python/shex_json_linkml.py create mode 100644 python/shex_json_linkml.ts diff --git a/python/shex_json_linkml.json b/python/shex_json_linkml.json index 8a31b21..85dd576 100644 --- a/python/shex_json_linkml.json +++ b/python/shex_json_linkml.json @@ -19,6 +19,9 @@ "additionalProperties": false, "description": "A generic grouping for any identifiable entity", "properties": { + "domain_name": { + "type": "string" + }, "name": { "type": "string" }, diff --git a/python/shex_json_linkml.py b/python/shex_json_linkml.py new file mode 100644 index 0000000..e6e119a --- /dev/null +++ b/python/shex_json_linkml.py @@ -0,0 +1,53 @@ +from __future__ import annotations +from datetime import datetime, date +from enum import Enum +from typing import List, Dict, Optional, Any +from pydantic import BaseModel as BaseModel, Field + +metamodel_version = "None" +version = "0.1.0" + +class WeakRefShimBaseModel(BaseModel): + __slots__ = '__weakref__' + +class ConfiguredBaseModel(WeakRefShimBaseModel, + validate_assignment = True, + validate_all = True, + underscore_attrs_are_private = True, + extra = 'forbid', + arbitrary_types_allowed = True): + pass + + +class GoShape(ConfiguredBaseModel): + """ + A generic grouping for any identifiable entity + """ + domain_name: Optional[str] = Field(None) + relationships: Optional[List[Relationship]] = Field(default_factory=list) + + + +class Relationship(ConfiguredBaseModel): + """ + A relationship between two entities + """ + id: Optional[str] = Field(None) + range: Optional[List[str]] = Field(default_factory=list) + is_multivalued: Optional[bool] = Field(None) + + + +class Collection(ConfiguredBaseModel): + + goshapes: Optional[List[GoShape]] = Field(default_factory=list) + + + + +# Update forward refs +# see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ +GoShape.update_forward_refs() +Relationship.update_forward_refs() +Collection.update_forward_refs() + diff --git a/python/shex_json_linkml.ts b/python/shex_json_linkml.ts new file mode 100644 index 0000000..4b07243 --- /dev/null +++ b/python/shex_json_linkml.ts @@ -0,0 +1,67 @@ + + + + + +/** + * A generic grouping for any identifiable entity + */ + +export interface GoShape { + + + /** + * None + */ + domain_name?: string, + + + /** + * None + */ + relationships?: Relationship[], + +} + + +/** + * A relationship between two entities + */ + +export interface Relationship { + + + /** + * None + */ + id?: string, + + + /** + * None + */ + range?: string, + + + /** + * None + */ + is_multivalued?: boolean, + +} + + +/** + * None + */ + +export interface Collection { + + + /** + * None + */ + goshapes?: GoShape[], + +} + From 1d345569ee70196a60c78fe63816f2a577127c88 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 11:46:05 -0700 Subject: [PATCH 22/45] stashing changes to update from master --- python/tests/shex_dump.json | 582 +++++++++++++++++++++++++++++++++++ schema/shex_json_linkml.yaml | 1 + 2 files changed, 583 insertions(+) diff --git a/python/tests/shex_dump.json b/python/tests/shex_dump.json index e69de29..abf9a43 100644 --- a/python/tests/shex_dump.json +++ b/python/tests/shex_dump.json @@ -0,0 +1,582 @@ +{ + "NCBITaxon:1": {}, + "GO:0008150": { + "BFO:0000050": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002233": { + "range": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991", + "NCBITaxon:1" + ], + "cardinality": -1 + }, + "RO:0002234": { + "range": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991" + ], + "cardinality": -1 + }, + "BFO:0000066": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002313": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002339": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002338": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002411": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002305": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002304": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002211": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002212": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002213": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0012003": { + "range": [ + "CARO:0000000", + "NCBITaxon:1" + ], + "cardinality": -1 + } + }, + "GO:0048856": { + "RO:0002296": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0048646": { + "RO:0002297": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0009653": { + "RO:0002298": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0030154": { + "RO:0002315": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0051301": { + "RO:0002233": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0045165": { + "RO:0002348": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0001709": { + "RO:0002349": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0001708": { + "RO:0002356": { + "range": [ + "CL:0000003" + ], + "cardinality": 1 + } + }, + "GO:0022607": { + "RO:0002588": { + "range": [ + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0022411": { + "RO:0002590": { + "range": [ + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0016043": { + "RO:0002592": { + "range": [ + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0021700": { + "RO:0002299": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0040007": { + "RO:0002343": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0051179": { + "RO:0002313": { + "range": [ + "CARO:0000000", + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002339": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002338": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0040011": { + "RO:0002565": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0006928": { + "RO:0002565": { + "range": [ + "CL:0000003", + "GO:0005575" + ], + "cardinality": 1 + } + }, + "GO:0034367": { + "RO:0002591": { + "range": [ + "GO:0032991" + ], + "cardinality": 1 + } + }, + "GO:0007389": { + "RO:0002356": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0003674": { + "RO:0002333": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": 1 + }, + "BFO:0000050": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "BFO:0000051": { + "range": [ + "GO:0003674" + ], + "cardinality": -1 + }, + "BFO:0000066": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002234": { + "range": [ + "CHEBI:24431", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002233": { + "range": [ + "CHEBI:24431", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002413": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002211": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002212": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002213": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002578": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002630": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002629": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002418": { + "range": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0004046": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0004047": { + "range": [ + "GO:0008150" + ], + "cardinality": -1 + }, + "RO:0002411": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002305": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002304": { + "range": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "cardinality": -1 + }, + "RO:0002092": { + "range": [ + "GO:0044848", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + } + }, + "GO:0005215": { + "RO:0002313": { + "range": [ + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002339": { + "range": [ + "GO:0005575" + ], + "cardinality": -1 + }, + "RO:0002338": { + "range": [ + "GO:0005575" + ], + "cardinality": -1 + } + }, + "GO:0044848": {}, + "UBERON:0000105": {}, + "PO:0009012": {}, + "CARO:0000000": { + "BFO:0000050": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0001015": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": 1 + } + }, + "CL:0000003": { + "BFO:0000050": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + } + }, + "GO:0005575": { + "BFO:0000050": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002220": { + "range": [ + "CARO:0000000" + ], + "cardinality": -1 + }, + "RO:0002131": { + "range": [ + "CARO:0000000" + ], + "cardinality": -1 + }, + "RO:0002490": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + }, + "RO:0002491": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + } + }, + "GO:0032991": { + "RO:0001025": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002432": { + "range": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "cardinality": 1 + }, + "BFO:0000051": { + "range": [ + "CHEBI:33695", + "GO:0032991" + ], + "cardinality": -1 + }, + "RO:0002490": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + }, + "RO:0002491": { + "range": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "cardinality": -1 + } + }, + "CHEBI:24431": {}, + "CHEBI:36080": { + "RO:0001025": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002432": { + "range": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "cardinality": 1 + }, + "BFO:0000050": { + "range": [ + "GO:0032991" + ], + "cardinality": 1 + }, + "RO:0002326": { + "range": [ + "GO:0003674" + ], + "cardinality": 1 + } + }, + "CHEBI:33695": { + "RO:0001025": { + "range": [ + "CARO:0000000" + ], + "cardinality": 1 + }, + "RO:0002432": { + "range": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "cardinality": 1 + }, + "BFO:0000050": { + "range": [ + "GO:0032991" + ], + "cardinality": 1 + }, + "RO:0002326": { + "range": [ + "GO:0003674" + ], + "cardinality": 1 + } + }, + "ECO:0000000": {} +} \ No newline at end of file diff --git a/schema/shex_json_linkml.yaml b/schema/shex_json_linkml.yaml index 4413be9..8b43807 100644 --- a/schema/shex_json_linkml.yaml +++ b/schema/shex_json_linkml.yaml @@ -63,6 +63,7 @@ slots: domain_name: range: uriorcurie + required: true is_multivalued: range: boolean From cb61fb5aa5ef6f3f442a11b31ca5b632cda20d97 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:18:23 -0700 Subject: [PATCH 23/45] adding required properties to the slots. adding class descriptions --- schema/shex_json_linkml.yaml | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/schema/shex_json_linkml.yaml b/schema/shex_json_linkml.yaml index 8b43807..2b1c93c 100644 --- a/schema/shex_json_linkml.yaml +++ b/schema/shex_json_linkml.yaml @@ -23,7 +23,8 @@ prefixes: classes: GoShape: description: >- - A generic grouping for any identifiable entity + GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape + expression rule slots: - domain_name - relationships @@ -36,11 +37,16 @@ classes: Relationship: description: >- - A relationship between two entities + A relationship object holds the relationship (Relationship.id) between a GoShape.domain (subject) and the Relatioship.range (object), + the range of the relationship (what values can be provided in the object of a statement), whether or not the + object can be multivalued, if the object is required when used with a particular domain and what context the + relationship should be used for. slots: - id - range - is_multivalued + - is_required + - context close_mappings: - schema:Relationship @@ -53,10 +59,12 @@ slots: relationships: multivalued: true range: Relationship + required: true range: multivalued: true range: uriorcurie + required: true id: range: string @@ -67,7 +75,25 @@ slots: is_multivalued: range: boolean + required: true + description: >- + for this shape, the relationship in question supports multiple values in the object of the association. goshapes: multivalued: true range: GoShape + description: >- + A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape + is defined as the domain, relationship, and range of a GO shape expression rule. + + is_required: + range: boolean + required: true + + context: + range: string + description: >- + used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes + annotated with like this https://github.com/geneontology/go-shapes/pull/285/files will be exlcuded from the + visual pathway editor but still included in the file so this file can be used in the graphical editor as well. + required: true From a9fd50ce53841423f36b384aec59a27164d83de2 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:20:34 -0700 Subject: [PATCH 24/45] adding required properties to the slots. adding class descriptions --- schema/shex_json_linkml.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/schema/shex_json_linkml.yaml b/schema/shex_json_linkml.yaml index 2b1c93c..99962d0 100644 --- a/schema/shex_json_linkml.yaml +++ b/schema/shex_json_linkml.yaml @@ -54,24 +54,36 @@ classes: tree_root: true slots: - goshapes + description: >- + A collection of GO domain/range constraint shapes slots: relationships: multivalued: true range: Relationship required: true + description: >- + A list of relationships that are defined for a particular domain range: multivalued: true range: uriorcurie required: true + description: >- + The range of the relationship identified by the Relationship.id parameter + (This contains the values can be provided in the object of a statement) id: range: string + description: >- + The relationship id is the predicate of the relationship between the domain and + range of the GO shape expression rule. domain_name: range: uriorcurie required: true + description: >- + The domain of the GO shape expression rule, this is the subject of the relationship. is_multivalued: range: boolean From ec279785116fef37c097956382f6b4f38965a6a8 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:21:21 -0700 Subject: [PATCH 25/45] adding required properties to the slots. adding class descriptions --- schema/shex_json_linkml.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/schema/shex_json_linkml.yaml b/schema/shex_json_linkml.yaml index 99962d0..a7fe1d1 100644 --- a/schema/shex_json_linkml.yaml +++ b/schema/shex_json_linkml.yaml @@ -55,7 +55,8 @@ classes: slots: - goshapes description: >- - A collection of GO domain/range constraint shapes + A collection of GO domain/range constraint shapes. This is primarily used in this schema to allow several + test data objects to be submitted in a single file. slots: relationships: From 95df950221f8dbf00df8da59410d625575699187 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:26:41 -0700 Subject: [PATCH 26/45] add target directory under python to store autogenerated artifacts except the python file which is autogenerated but stored in the python directory to make imports easier. --- python/Makefile | 4 +- python/json_export.py | 2 +- python/shex_dump.json | 582 -------------------- python/shex_json_linkml.json | 78 --- python/shex_json_linkml.py | 53 -- python/shex_json_linkml.ts | 67 --- python/{ => tests}/shex_json_test_data.json | 0 python/{ => tests}/test_json_export.py | 4 +- 8 files changed, 6 insertions(+), 784 deletions(-) delete mode 100644 python/shex_dump.json delete mode 100644 python/shex_json_linkml.json delete mode 100644 python/shex_json_linkml.py delete mode 100644 python/shex_json_linkml.ts rename python/{ => tests}/shex_json_test_data.json (100%) rename python/{ => tests}/test_json_export.py (90%) diff --git a/python/Makefile b/python/Makefile index edd412c..dbf8c17 100644 --- a/python/Makefile +++ b/python/Makefile @@ -45,9 +45,9 @@ gen-pydantic: rm -f shex_json_linkml.py && gen-pydantic ../schema/shex_json_linkml.yaml > shex_json_linkml.py gen-jsonschema: - rm -f shex_json_linkml.json && gen-json-schema ../schema/shex_json_linkml.yaml > shex_json_linkml.json + rm -f target/jsonschema/shex_json_linkml.json && gen-json-schema ../schema/shex_json_linkml.yaml > target/jsonschema/shex_json_linkml.json gen-typescript: - rm -f shex_json_linkml.ts && gen-typescript ../schema/shex_json_linkml.yaml > shex_json_linkml.ts + rm -f target/typescript/shex_json_linkml.ts && gen-typescript ../schema/shex_json_linkml.yaml > target/typescript/shex_json_linkml.ts .PRECIOUS: tests/data/%.ttl diff --git a/python/json_export.py b/python/json_export.py index 29a3160..0f32270 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -114,5 +114,5 @@ def parse(self): with open("shex_dump.json", "w") as sf: json.dump(nfShex.json_shapes, sf, indent=2) -with open("look_table.json", "w") as sf: +with open("tests/look_table.json", "w") as sf: json.dump(nfShex.gen_lookup_table(), sf, indent=2) diff --git a/python/shex_dump.json b/python/shex_dump.json deleted file mode 100644 index abf9a43..0000000 --- a/python/shex_dump.json +++ /dev/null @@ -1,582 +0,0 @@ -{ - "NCBITaxon:1": {}, - "GO:0008150": { - "BFO:0000050": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002233": { - "range": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991", - "NCBITaxon:1" - ], - "cardinality": -1 - }, - "RO:0002234": { - "range": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991" - ], - "cardinality": -1 - }, - "BFO:0000066": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002313": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002339": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002338": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002411": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002305": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002304": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002211": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002212": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002213": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0012003": { - "range": [ - "CARO:0000000", - "NCBITaxon:1" - ], - "cardinality": -1 - } - }, - "GO:0048856": { - "RO:0002296": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0048646": { - "RO:0002297": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0009653": { - "RO:0002298": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0030154": { - "RO:0002315": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0051301": { - "RO:0002233": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0045165": { - "RO:0002348": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0001709": { - "RO:0002349": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0001708": { - "RO:0002356": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0022607": { - "RO:0002588": { - "range": [ - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0022411": { - "RO:0002590": { - "range": [ - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0016043": { - "RO:0002592": { - "range": [ - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0021700": { - "RO:0002299": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0040007": { - "RO:0002343": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0051179": { - "RO:0002313": { - "range": [ - "CARO:0000000", - "CHEBI:24431", - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002339": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002338": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0040011": { - "RO:0002565": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0006928": { - "RO:0002565": { - "range": [ - "CL:0000003", - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0034367": { - "RO:0002591": { - "range": [ - "GO:0032991" - ], - "cardinality": 1 - } - }, - "GO:0007389": { - "RO:0002356": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0003674": { - "RO:0002333": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": 1 - }, - "BFO:0000050": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "BFO:0000051": { - "range": [ - "GO:0003674" - ], - "cardinality": -1 - }, - "BFO:0000066": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002234": { - "range": [ - "CHEBI:24431", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002233": { - "range": [ - "CHEBI:24431", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002413": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002211": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002212": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002213": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002578": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002630": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002629": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002418": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0004046": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0004047": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002411": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002305": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002304": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002092": { - "range": [ - "GO:0044848", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - } - }, - "GO:0005215": { - "RO:0002313": { - "range": [ - "CHEBI:24431", - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002339": { - "range": [ - "GO:0005575" - ], - "cardinality": -1 - }, - "RO:0002338": { - "range": [ - "GO:0005575" - ], - "cardinality": -1 - } - }, - "GO:0044848": {}, - "UBERON:0000105": {}, - "PO:0009012": {}, - "CARO:0000000": { - "BFO:0000050": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0001015": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": 1 - } - }, - "CL:0000003": { - "BFO:0000050": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0005575": { - "BFO:0000050": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002220": { - "range": [ - "CARO:0000000" - ], - "cardinality": -1 - }, - "RO:0002131": { - "range": [ - "CARO:0000000" - ], - "cardinality": -1 - }, - "RO:0002490": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - }, - "RO:0002491": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - } - }, - "GO:0032991": { - "RO:0001025": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002432": { - "range": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "cardinality": 1 - }, - "BFO:0000051": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002490": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - }, - "RO:0002491": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - } - }, - "CHEBI:24431": {}, - "CHEBI:36080": { - "RO:0001025": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002432": { - "range": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "cardinality": 1 - }, - "BFO:0000050": { - "range": [ - "GO:0032991" - ], - "cardinality": 1 - }, - "RO:0002326": { - "range": [ - "GO:0003674" - ], - "cardinality": 1 - } - }, - "CHEBI:33695": { - "RO:0001025": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002432": { - "range": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "cardinality": 1 - }, - "BFO:0000050": { - "range": [ - "GO:0032991" - ], - "cardinality": 1 - }, - "RO:0002326": { - "range": [ - "GO:0003674" - ], - "cardinality": 1 - } - }, - "ECO:0000000": {} -} \ No newline at end of file diff --git a/python/shex_json_linkml.json b/python/shex_json_linkml.json deleted file mode 100644 index 85dd576..0000000 --- a/python/shex_json_linkml.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "$defs": { - "Collection": { - "additionalProperties": false, - "description": "", - "properties": { - "goshapes": { - "items": { - "$ref": "#/$defs/GoShape" - }, - "type": "array" - } - }, - "required": [], - "title": "Collection", - "type": "object" - }, - "GoShape": { - "additionalProperties": false, - "description": "A generic grouping for any identifiable entity", - "properties": { - "domain_name": { - "type": "string" - }, - "name": { - "type": "string" - }, - "relationships": { - "items": { - "$ref": "#/$defs/Relationship" - }, - "type": "array" - } - }, - "required": [], - "title": "GoShape", - "type": "object" - }, - "Relationship": { - "additionalProperties": false, - "description": "A relationship between two entities", - "properties": { - "id": { - "type": "string" - }, - "is_multivalued": { - "type": "boolean" - }, - "range": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [], - "title": "Relationship", - "type": "object" - } - }, - "$id": "go-shex-domain-range-constraints", - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "metamodel_version": "1.7.0", - "properties": { - "goshapes": { - "items": { - "$ref": "#/$defs/GoShape" - }, - "type": "array" - } - }, - "required": [], - "title": "GODomainRangeConstraintsModel", - "type": "object", - "version": "0.1.0" -} - diff --git a/python/shex_json_linkml.py b/python/shex_json_linkml.py deleted file mode 100644 index e6e119a..0000000 --- a/python/shex_json_linkml.py +++ /dev/null @@ -1,53 +0,0 @@ -from __future__ import annotations -from datetime import datetime, date -from enum import Enum -from typing import List, Dict, Optional, Any -from pydantic import BaseModel as BaseModel, Field - -metamodel_version = "None" -version = "0.1.0" - -class WeakRefShimBaseModel(BaseModel): - __slots__ = '__weakref__' - -class ConfiguredBaseModel(WeakRefShimBaseModel, - validate_assignment = True, - validate_all = True, - underscore_attrs_are_private = True, - extra = 'forbid', - arbitrary_types_allowed = True): - pass - - -class GoShape(ConfiguredBaseModel): - """ - A generic grouping for any identifiable entity - """ - domain_name: Optional[str] = Field(None) - relationships: Optional[List[Relationship]] = Field(default_factory=list) - - - -class Relationship(ConfiguredBaseModel): - """ - A relationship between two entities - """ - id: Optional[str] = Field(None) - range: Optional[List[str]] = Field(default_factory=list) - is_multivalued: Optional[bool] = Field(None) - - - -class Collection(ConfiguredBaseModel): - - goshapes: Optional[List[GoShape]] = Field(default_factory=list) - - - - -# Update forward refs -# see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ -GoShape.update_forward_refs() -Relationship.update_forward_refs() -Collection.update_forward_refs() - diff --git a/python/shex_json_linkml.ts b/python/shex_json_linkml.ts deleted file mode 100644 index 4b07243..0000000 --- a/python/shex_json_linkml.ts +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -/** - * A generic grouping for any identifiable entity - */ - -export interface GoShape { - - - /** - * None - */ - domain_name?: string, - - - /** - * None - */ - relationships?: Relationship[], - -} - - -/** - * A relationship between two entities - */ - -export interface Relationship { - - - /** - * None - */ - id?: string, - - - /** - * None - */ - range?: string, - - - /** - * None - */ - is_multivalued?: boolean, - -} - - -/** - * None - */ - -export interface Collection { - - - /** - * None - */ - goshapes?: GoShape[], - -} - diff --git a/python/shex_json_test_data.json b/python/tests/shex_json_test_data.json similarity index 100% rename from python/shex_json_test_data.json rename to python/tests/shex_json_test_data.json diff --git a/python/test_json_export.py b/python/tests/test_json_export.py similarity index 90% rename from python/test_json_export.py rename to python/tests/test_json_export.py index 7c5baf8..5f836d6 100644 --- a/python/test_json_export.py +++ b/python/tests/test_json_export.py @@ -6,6 +6,8 @@ from pprint import pprint from linkml.generators.jsonschemagen import JsonSchemaGenerator from linkml.generators.pydanticgen import PydanticGenerator +from json_export import NoctuaFormShex + SHEX_LINKML_PATH = ( "../schema/shex_linkml.yaml" @@ -30,7 +32,7 @@ def test_valid_schema(): python_gen = PydanticGenerator(schema=schemadef) print(json_gen.serialize()) - json_format = open('shex_json_linkml.json', 'w') + json_format = open('../target/jsonschema/shex_json_linkml.json', 'w') json_format.write(json_gen.serialize()) pyfile = open('shex_json_linkml.py', 'w') pyfile.write(python_gen.serialize()) From d8e17d036d6e616743c5105423d99c77e86a1a29 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:26:58 -0700 Subject: [PATCH 27/45] adding generated outputs to the git repo --- python/tests/look_table.json | 242 +++++++++++++++++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 python/tests/look_table.json diff --git a/python/tests/look_table.json b/python/tests/look_table.json new file mode 100644 index 0000000..b04b696 --- /dev/null +++ b/python/tests/look_table.json @@ -0,0 +1,242 @@ +{ + "CHEBI:33695": { + "label": "GOINFORMATIONBIOMACROMOLECULE" + }, + "CHEBI:36080": { + "label": "GOPROTEIN" + }, + "GO:0032991": { + "label": "GOPROTEINCONTAININGCOMPLEX" + }, + "GO:0005575": { + "label": "GOCELLULARCOMPONENT" + }, + "GO:0008150": { + "label": "GOBIOLOGICALPROCESS" + }, + "GO:0048856": { + "label": "GOANATOMICALSTRUCTUREDEVELOPMENT" + }, + "GO:0048646": { + "label": "GOANATOMICALSTRUCTUREFORMATIONINVOLVEDINMORPHOGENESIS" + }, + "GO:0009653": { + "label": "GOANATOMICALSTRUCTUREMORPHOGENESIS" + }, + "GO:0030154": { + "label": "GOCELLDIFFERENTIATION" + }, + "GO:0051301": { + "label": "GOCELLDIVISION" + }, + "GO:0045165": { + "label": "GOCELLFATECOMMITMENT" + }, + "GO:0001709": { + "label": "GOCELLFATEDETERMINATION" + }, + "GO:0001708": { + "label": "GOCELLFATESPECIFICATION" + }, + "GO:0022607": { + "label": "GOCELLULARCOMPONENTASSEMBLY" + }, + "GO:0022411": { + "label": "GOCELLULARCOMPONENTDISASSEMBLY" + }, + "GO:0016043": { + "label": "GOCELLULARCOMPONENTORGANIZATION" + }, + "GO:0021700": { + "label": "GODEVELOPMENTALMATURATION" + }, + "GO:0040007": { + "label": "GOGROWTH" + }, + "GO:0051179": { + "label": "GOLOCALIZATION" + }, + "GO:0040011": { + "label": "GOLOCOMOTION" + }, + "GO:0006928": { + "label": "GOMOVEMENTOFCELLORSUBCELLULARCOMPONENT" + }, + "GO:0034367": { + "label": "GOPROTEINCONTAININGCOMPLEXREMODELING" + }, + "GO:0007389": { + "label": "GOPATTERNSPECIFICATIONPROCESS" + }, + "GO:0003674": { + "label": "GOMOLECULARFUNCTION" + }, + "GO:0005215": { + "label": "GOTRANSPORTERACTIVITY" + }, + "CHEBI:24431": { + "label": "GOCHEMICALENTITY" + }, + "ECO:0000000": { + "label": "GOEVIDENCE" + }, + "CARO:0000000": { + "label": "GOANATOMICALENTITY" + }, + "CL:0000003": { + "label": "GONATIVECELL" + }, + "NCBITaxon:1": { + "label": "GOORGANISM" + }, + "GO:0044848": { + "label": "GOBIOLOGICALPHASE" + }, + "UBERON:0000105": { + "label": "GOLIFECYCLESTAGE" + }, + "PO:0009012": { + "label": "GOPLANTSTRUCTUREDEVELOPMENTSTAGE" + }, + "BFO:0000050": { + "label": "PART_OF" + }, + "BFO:0000051": { + "label": "HAS_PART" + }, + "BFO:0000066": { + "label": "OCCURS_IN" + }, + "RO:0002220": { + "label": "ADJACENT_TO" + }, + "RO:0002131": { + "label": "OVERLAPS" + }, + "RO:0002490": { + "label": "EXISTENCE_OVERLAPS" + }, + "RO:0002491": { + "label": "EXISTENCE_STARTS_AND_ENDS_DURING" + }, + "RO:0002333": { + "label": "ENABLED_BY" + }, + "RO:0002326": { + "label": "CONTRIBUTES_TO" + }, + "RO:0002233": { + "label": "HAS_INPUT" + }, + "RO:0002234": { + "label": "HAS_OUTPUT" + }, + "RO:0002339": { + "label": "HAS_TARGET_END_LOCATION" + }, + "RO:0002338": { + "label": "HAS_TARGET_START_LOCATION" + }, + "RO:0002313": { + "label": "TRANSPORTS_OR_MAINTAINS_LOCALIZATION_OF" + }, + "RO:0002413": { + "label": "DIRECTLY_PROVIDES_INPUT_FOR" + }, + "RO:0002629": { + "label": "DIRECTLY_POSITIVELY_REGULATES" + }, + "RO:0001025": { + "label": "LOCATED_IN" + }, + "RO:0001015": { + "label": "LOCATION_OF" + }, + "RO:0002432": { + "label": "IS_ACTIVE_IN" + }, + "RO:0002092": { + "label": "HAPPENS_DURING" + }, + "RO:0002211": { + "label": "REGULATES" + }, + "RO:0002212": { + "label": "NEGATIVELY_REGULATES" + }, + "RO:0002213": { + "label": "POSITIVELY_REGULATES" + }, + "RO:0002578": { + "label": "DIRECTLY_REGULATES" + }, + "RO:0002630": { + "label": "DIRECTLY_NEGATIVELY_REGULATES" + }, + "RO:0002406": { + "label": "DIRECTLY_ACTIVATES" + }, + "RO:0002418": { + "label": "CAUSALLY_UPSTREAM_OF_OR_WITHIN" + }, + "RO:0004046": { + "label": "CAUSALLY_UPSTREAM_OF_OR_WITHIN_NEGATIVE_EFFECT" + }, + "RO:0004047": { + "label": "CAUSALLY_UPSTREAM_OF_OR_WITHIN_POSITIVE_EFFECT" + }, + "RO:0002411": { + "label": "CAUSALLY_UPSTREAM_OF" + }, + "RO:0002305": { + "label": "CAUSALLY_UPSTREAM_OF_NEGATIVE_EFFECT" + }, + "RO:0002304": { + "label": "CAUSALLY_UPSTREAM_OF_POSITIVE_EFFECT" + }, + "RO:0012003": { + "label": "ACTS_ON_POPULATION_OF" + }, + "RO:0002296": { + "label": "RESULTS_IN_DEVELOPMENT_OF" + }, + "RO:0002297": { + "label": "RESULTS_IN_FORMATION_OF" + }, + "RO:0002298": { + "label": "RESULTS_IN_MORPHOGENESIS_OF" + }, + "RO:0002315": { + "label": "RESULTS_IN_ACQUISITION_OF_FEATURES_OF" + }, + "RO:0002348": { + "label": "RESULTS_IN_COMMITMENT_TO" + }, + "RO:0002349": { + "label": "RESULTS_IN_DETERMINATION_OF" + }, + "RO:0002356": { + "label": "RESULTS_IN_SPECIFICATION_OF" + }, + "RO:0002588": { + "label": "RESULTS_IN_ASSEMBLY_OF" + }, + "RO:0002590": { + "label": "RESULTS_IN_DISASSEMBLY_OF" + }, + "RO:0002592": { + "label": "RESULTS_IN_ORGANIZATION_OF" + }, + "RO:0002299": { + "label": "RESULTS_IN_MATURATION_OF" + }, + "RO:0002343": { + "label": "RESULTS_IN_GROWTH_OF" + }, + "RO:0002565": { + "label": "RESULTS_IN_MOVEMENT_OF" + }, + "RO:0002591": { + "label": "RESULTS_IN_REMODELING_OF" + } +} \ No newline at end of file From 91b267c0f2640860b97ec0c704ca2faac6ec1c8c Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:30:43 -0700 Subject: [PATCH 28/45] move some of the outputs around so that we can consistently produce them --- python/json_export.py | 2 +- python/tests/{ => data}/shex_json_test_data.json | 0 python/tests/test_json_export.py | 7 ------- {python/tests => shapes/json}/look_table.json | 0 {python/tests => shapes/json}/shex_dump.json | 0 5 files changed, 1 insertion(+), 8 deletions(-) rename python/tests/{ => data}/shex_json_test_data.json (100%) rename {python/tests => shapes/json}/look_table.json (100%) rename {python/tests => shapes/json}/shex_dump.json (100%) diff --git a/python/json_export.py b/python/json_export.py index 0f32270..6616dbe 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -114,5 +114,5 @@ def parse(self): with open("shex_dump.json", "w") as sf: json.dump(nfShex.json_shapes, sf, indent=2) -with open("tests/look_table.json", "w") as sf: +with open("../shapes/json/look_table.json", "w") as sf: json.dump(nfShex.gen_lookup_table(), sf, indent=2) diff --git a/python/tests/shex_json_test_data.json b/python/tests/data/shex_json_test_data.json similarity index 100% rename from python/tests/shex_json_test_data.json rename to python/tests/data/shex_json_test_data.json diff --git a/python/tests/test_json_export.py b/python/tests/test_json_export.py index 5f836d6..bc032d5 100644 --- a/python/tests/test_json_export.py +++ b/python/tests/test_json_export.py @@ -8,17 +8,10 @@ from linkml.generators.pydanticgen import PydanticGenerator from json_export import NoctuaFormShex - -SHEX_LINKML_PATH = ( - "../schema/shex_linkml.yaml" -) SHEX_JSON_LINKML_PATH = ( "../schema/shex_json_linkml.yaml" ) -AUTO_LINKML_PATH = ( - "../schema/autogen_schema.yaml" -) def test_valid_schema(): diff --git a/python/tests/look_table.json b/shapes/json/look_table.json similarity index 100% rename from python/tests/look_table.json rename to shapes/json/look_table.json diff --git a/python/tests/shex_dump.json b/shapes/json/shex_dump.json similarity index 100% rename from python/tests/shex_dump.json rename to shapes/json/shex_dump.json From abeec910b303d380f6612daed4571448ae4cdc6b Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:32:55 -0700 Subject: [PATCH 29/45] regenerate python fil --- python/json_export.py | 2 +- python/shex_json_linkml.py | 57 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 python/shex_json_linkml.py diff --git a/python/json_export.py b/python/json_export.py index 6616dbe..545a1fb 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -111,7 +111,7 @@ def parse(self): nfShex = NoctuaFormShex() nfShex.parse() -with open("shex_dump.json", "w") as sf: +with open("../shapes/json/shex_dump.json", "w") as sf: json.dump(nfShex.json_shapes, sf, indent=2) with open("../shapes/json/look_table.json", "w") as sf: diff --git a/python/shex_json_linkml.py b/python/shex_json_linkml.py new file mode 100644 index 0000000..8bbc443 --- /dev/null +++ b/python/shex_json_linkml.py @@ -0,0 +1,57 @@ +from __future__ import annotations +from datetime import datetime, date +from enum import Enum +from typing import List, Dict, Optional, Any +from pydantic import BaseModel as BaseModel, Field + +metamodel_version = "None" +version = "0.1.0" + +class WeakRefShimBaseModel(BaseModel): + __slots__ = '__weakref__' + +class ConfiguredBaseModel(WeakRefShimBaseModel, + validate_assignment = True, + validate_all = True, + underscore_attrs_are_private = True, + extra = 'forbid', + arbitrary_types_allowed = True): + pass + + +class GoShape(ConfiguredBaseModel): + """ + GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule + """ + domain_name: str = Field(None, description="""The domain of the GO shape expression rule, this is the subject of the relationship.""") + relationships: List[Relationship] = Field(default_factory=list, description="""A list of relationships that are defined for a particular domain""") + + + +class Relationship(ConfiguredBaseModel): + """ + A relationship object holds the relationship (Relationship.id) between a GoShape.domain (subject) and the Relatioship.range (object), the range of the relationship (what values can be provided in the object of a statement), whether or not the object can be multivalued, if the object is required when used with a particular domain and what context the relationship should be used for. + """ + id: Optional[str] = Field(None, description="""The relationship id is the predicate of the relationship between the domain and range of the GO shape expression rule.""") + range: List[str] = Field(default_factory=list, description="""The range of the relationship identified by the Relationship.id parameter (This contains the values can be provided in the object of a statement)""") + is_multivalued: bool = Field(None, description="""for this shape, the relationship in question supports multiple values in the object of the association.""") + is_required: bool = Field(None) + context: str = Field(None, description="""used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes annotated with like this https://github.com/geneontology/go-shapes/pull/285/files will be exlcuded from the visual pathway editor but still included in the file so this file can be used in the graphical editor as well.""") + + + +class Collection(ConfiguredBaseModel): + """ + A collection of GO domain/range constraint shapes. This is primarily used in this schema to allow several test data objects to be submitted in a single file. + """ + goshapes: Optional[List[GoShape]] = Field(default_factory=list, description="""A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule.""") + + + + +# Update forward refs +# see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ +GoShape.update_forward_refs() +Relationship.update_forward_refs() +Collection.update_forward_refs() + From 96e3e40ae60d9919680e73f9674e5fb39ec6a6d2 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:42:11 -0700 Subject: [PATCH 30/45] update to fix paths --- python/json_export.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/python/json_export.py b/python/json_export.py index 545a1fb..feba512 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -10,6 +10,7 @@ from pyshex import PrefixLibrary from shex_json_linkml import Collection, GoShape, Relationship from pprint import pprint +from pathlib import Path def get_suffix(uri): @@ -94,7 +95,7 @@ def parse(self): continue goshape = GoShape() - goshape.name = shape_name + goshape.domain_name = shape_name goshape.relationships = [] # print('Parsing Shape: ' + shape['id']) self.json_shapes[shape_name] = {} @@ -111,8 +112,13 @@ def parse(self): nfShex = NoctuaFormShex() nfShex.parse() -with open("../shapes/json/shex_dump.json", "w") as sf: +base_path = Path(__file__).parent +json_shapes_file_path = (base_path / "../shapes/json/shex_dump.json").resolve() +look_table_file_path = (base_path / "../shapes/json/look_table.json").resolve() + + +with open(json_shapes_file_path, "w") as sf: json.dump(nfShex.json_shapes, sf, indent=2) -with open("../shapes/json/look_table.json", "w") as sf: +with open(look_table_file_path, "w") as sf: json.dump(nfShex.gen_lookup_table(), sf, indent=2) From 9b6998e8302851ac1d7c9a6b0018cbbcfe218c38 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:47:46 -0700 Subject: [PATCH 31/45] fixing test paths --- {schema => python/schema}/shex_json_linkml.yaml | 0 python/shex_json_linkml.py | 1 - python/tests/test_json_export.py | 11 ++++++++--- 3 files changed, 8 insertions(+), 4 deletions(-) rename {schema => python/schema}/shex_json_linkml.yaml (100%) diff --git a/schema/shex_json_linkml.yaml b/python/schema/shex_json_linkml.yaml similarity index 100% rename from schema/shex_json_linkml.yaml rename to python/schema/shex_json_linkml.yaml diff --git a/python/shex_json_linkml.py b/python/shex_json_linkml.py index 8bbc443..7582caf 100644 --- a/python/shex_json_linkml.py +++ b/python/shex_json_linkml.py @@ -54,4 +54,3 @@ class Collection(ConfiguredBaseModel): GoShape.update_forward_refs() Relationship.update_forward_refs() Collection.update_forward_refs() - diff --git a/python/tests/test_json_export.py b/python/tests/test_json_export.py index bc032d5..2f98f09 100644 --- a/python/tests/test_json_export.py +++ b/python/tests/test_json_export.py @@ -7,13 +7,15 @@ from linkml.generators.jsonschemagen import JsonSchemaGenerator from linkml.generators.pydanticgen import PydanticGenerator from json_export import NoctuaFormShex +from pathlib import Path + +base_path = Path(__file__).parent SHEX_JSON_LINKML_PATH = ( "../schema/shex_json_linkml.yaml" ) - def test_valid_schema(): sv = SchemaView(SHEX_JSON_LINKML_PATH) schemadef = sv.schema @@ -25,9 +27,12 @@ def test_valid_schema(): python_gen = PydanticGenerator(schema=schemadef) print(json_gen.serialize()) - json_format = open('../target/jsonschema/shex_json_linkml.json', 'w') + base_path = Path(__file__).parent + jsonschema = (base_path / "../target/jsonschema/shex_json_linkml.json").resolve() + + json_format = open(jsonschema, 'w') json_format.write(json_gen.serialize()) - pyfile = open('shex_json_linkml.py', 'w') + pyfile = open('../shex_json_linkml.py', 'w') pyfile.write(python_gen.serialize()) From 0529c29f6c97dd248351dd8a53ba97811c16b29c Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:48:39 -0700 Subject: [PATCH 32/45] add target output directory to hold generated content --- .../target/jsonschema/shex_json_linkml.json | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 python/target/jsonschema/shex_json_linkml.json diff --git a/python/target/jsonschema/shex_json_linkml.json b/python/target/jsonschema/shex_json_linkml.json new file mode 100644 index 0000000..be7f36f --- /dev/null +++ b/python/target/jsonschema/shex_json_linkml.json @@ -0,0 +1,99 @@ +{ + "$defs": { + "Collection": { + "additionalProperties": false, + "description": "A collection of GO domain/range constraint shapes. This is primarily used in this schema to allow several test data objects to be submitted in a single file.", + "properties": { + "goshapes": { + "description": "A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule.", + "items": { + "$ref": "#/$defs/GoShape" + }, + "type": "array" + } + }, + "required": [], + "title": "Collection", + "type": "object" + }, + "GoShape": { + "additionalProperties": false, + "description": "GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule", + "properties": { + "domain_name": { + "description": "The domain of the GO shape expression rule, this is the subject of the relationship.", + "type": "string" + }, + "name": { + "type": "string" + }, + "relationships": { + "description": "A list of relationships that are defined for a particular domain", + "items": { + "$ref": "#/$defs/Relationship" + }, + "type": "array" + } + }, + "required": [ + "domain_name", + "relationships" + ], + "title": "GoShape", + "type": "object" + }, + "Relationship": { + "additionalProperties": false, + "description": "A relationship object holds the relationship (Relationship.id) between a GoShape.domain (subject) and the Relatioship.range (object), the range of the relationship (what values can be provided in the object of a statement), whether or not the object can be multivalued, if the object is required when used with a particular domain and what context the relationship should be used for.", + "properties": { + "context": { + "description": "used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes annotated with like this https://github.com/geneontology/go-shapes/pull/285/files will be exlcuded from the visual pathway editor but still included in the file so this file can be used in the graphical editor as well.", + "type": "string" + }, + "id": { + "description": "The relationship id is the predicate of the relationship between the domain and range of the GO shape expression rule.", + "type": "string" + }, + "is_multivalued": { + "description": "for this shape, the relationship in question supports multiple values in the object of the association.", + "type": "boolean" + }, + "is_required": { + "type": "boolean" + }, + "range": { + "description": "The range of the relationship identified by the Relationship.id parameter (This contains the values can be provided in the object of a statement)", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "range", + "is_multivalued", + "is_required", + "context" + ], + "title": "Relationship", + "type": "object" + } + }, + "$id": "go-shex-domain-range-constraints", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "metamodel_version": "1.7.0", + "properties": { + "goshapes": { + "description": "A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule.", + "items": { + "$ref": "#/$defs/GoShape" + }, + "type": "array" + } + }, + "required": [], + "title": "GODomainRangeConstraintsModel", + "type": "object", + "version": "0.1.0" +} From 06350f298479c259bc309a924cbe29b97e8181a4 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 28 Oct 2022 12:55:25 -0700 Subject: [PATCH 33/45] add typescript output directory, add single makefile target that does all the linkml regen --- .github/workflows/gen-project-linkml.yaml | 52 ++++++++++++ python/Makefile | 9 ++- python/shex_json_linkml.py | 1 + .../target/jsonschema/shex_json_linkml.json | 1 + python/target/typescript/shex_json_linkml.ts | 79 +++++++++++++++++++ 5 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/gen-project-linkml.yaml create mode 100644 python/target/typescript/shex_json_linkml.ts diff --git a/.github/workflows/gen-project-linkml.yaml b/.github/workflows/gen-project-linkml.yaml new file mode 100644 index 0000000..7d062ae --- /dev/null +++ b/.github/workflows/gen-project-linkml.yaml @@ -0,0 +1,52 @@ +# Built from: +# https://docs.github.com/en/actions/guides/building-and-testing-python +# https://github.com/snok/install-poetry#workflows-and-tips + +name: Build and test linkml-runtime + +on: [pull_request] + +jobs: + test: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.9", "3.10"] + + steps: + + #---------------------------------------------- + # check-out repo and set-up python + #---------------------------------------------- + - name: Check out repository + uses: actions/checkout@v2 + + - name: Set up Python ${{ "{{" }} matrix.python-version {{ "}}" }} + uses: actions/setup-python@v2 + with: + python-version: ${{ "{{" }} matrix.python-version {{ "}}" }} + + #---------------------------------------------- + # install & configure poetry + #---------------------------------------------- + - name: Install Poetry + uses: snok/install-poetry@v1.3 + + #---------------------------------------------- + # install dependencies if cache does not exist + #---------------------------------------------- + - name: Install dependencies + run: poetry install --no-interaction --no-root + + #---------------------------------------------- + # install your root project, if required + #---------------------------------------------- + - name: Install library + run: poetry install --no-interaction + + #---------------------------------------------- + # run test suite + #---------------------------------------------- + - name: Run tests + run: make test \ No newline at end of file diff --git a/python/Makefile b/python/Makefile index dbf8c17..9a00c29 100644 --- a/python/Makefile +++ b/python/Makefile @@ -42,12 +42,15 @@ f-%: tests/data/f-%.ttl python ./gocam_validator.py $< && exit -1 || echo FAILED AS EXPECTED gen-pydantic: - rm -f shex_json_linkml.py && gen-pydantic ../schema/shex_json_linkml.yaml > shex_json_linkml.py + rm -f shex_json_linkml.py && gen-pydantic schema/shex_json_linkml.yaml > shex_json_linkml.py gen-jsonschema: - rm -f target/jsonschema/shex_json_linkml.json && gen-json-schema ../schema/shex_json_linkml.yaml > target/jsonschema/shex_json_linkml.json + rm -f target/jsonschema/shex_json_linkml.json && gen-json-schema schema/shex_json_linkml.yaml > target/jsonschema/shex_json_linkml.json gen-typescript: - rm -f target/typescript/shex_json_linkml.ts && gen-typescript ../schema/shex_json_linkml.yaml > target/typescript/shex_json_linkml.ts + rm -f target/typescript/shex_json_linkml.ts && gen-typescript schema/shex_json_linkml.yaml > target/typescript/shex_json_linkml.ts + +linkml: gen-pydantic gen-jsonschema gen-typescript + .PRECIOUS: tests/data/%.ttl diff --git a/python/shex_json_linkml.py b/python/shex_json_linkml.py index 7582caf..8bbc443 100644 --- a/python/shex_json_linkml.py +++ b/python/shex_json_linkml.py @@ -54,3 +54,4 @@ class Collection(ConfiguredBaseModel): GoShape.update_forward_refs() Relationship.update_forward_refs() Collection.update_forward_refs() + diff --git a/python/target/jsonschema/shex_json_linkml.json b/python/target/jsonschema/shex_json_linkml.json index be7f36f..dab84ee 100644 --- a/python/target/jsonschema/shex_json_linkml.json +++ b/python/target/jsonschema/shex_json_linkml.json @@ -97,3 +97,4 @@ "type": "object", "version": "0.1.0" } + diff --git a/python/target/typescript/shex_json_linkml.ts b/python/target/typescript/shex_json_linkml.ts new file mode 100644 index 0000000..a729704 --- /dev/null +++ b/python/target/typescript/shex_json_linkml.ts @@ -0,0 +1,79 @@ + + + + + +/** + * GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule + */ + +export interface GoShape { + + + /** + * The domain of the GO shape expression rule, this is the subject of the relationship. + */ + domain_name?: string, + + + /** + * A list of relationships that are defined for a particular domain + */ + relationships?: Relationship[], + +} + + +/** + * A relationship object holds the relationship (Relationship.id) between a GoShape.domain (subject) and the Relatioship.range (object), the range of the relationship (what values can be provided in the object of a statement), whether or not the object can be multivalued, if the object is required when used with a particular domain and what context the relationship should be used for. + */ + +export interface Relationship { + + + /** + * The relationship id is the predicate of the relationship between the domain and range of the GO shape expression rule. + */ + id?: string, + + + /** + * The range of the relationship identified by the Relationship.id parameter (This contains the values can be provided in the object of a statement) + */ + range?: string, + + + /** + * for this shape, the relationship in question supports multiple values in the object of the association. + */ + is_multivalued?: boolean, + + + /** + * None + */ + is_required?: boolean, + + + /** + * used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes annotated with like this https://github.com/geneontology/go-shapes/pull/285/files will be exlcuded from the visual pathway editor but still included in the file so this file can be used in the graphical editor as well. + */ + context?: string, + +} + + +/** + * A collection of GO domain/range constraint shapes. This is primarily used in this schema to allow several test data objects to be submitted in a single file. + */ + +export interface Collection { + + + /** + * A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule. + */ + goshapes?: GoShape[], + +} + From 1281a38a66c567dd31c3b946b5f8221e77d884c8 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 2 Nov 2022 15:36:18 -0700 Subject: [PATCH 34/45] flatten data structure --- .github/workflows/gen-project-linkml.yaml | 16 ++++++--- .gitignore | 1 + python/json_export.py | 6 ++-- python/requirements.txt | 1 - python/schema/shex_json_linkml.yaml | 34 ++++++------------ python/tests/data/flatten_shex_test_data.json | 35 +++++++++++++++++++ 6 files changed, 62 insertions(+), 31 deletions(-) create mode 100644 python/tests/data/flatten_shex_test_data.json diff --git a/.github/workflows/gen-project-linkml.yaml b/.github/workflows/gen-project-linkml.yaml index 7d062ae..dfbdc7a 100644 --- a/.github/workflows/gen-project-linkml.yaml +++ b/.github/workflows/gen-project-linkml.yaml @@ -2,7 +2,7 @@ # https://docs.github.com/en/actions/guides/building-and-testing-python # https://github.com/snok/install-poetry#workflows-and-tips -name: Build and test linkml-runtime +name: Build and test LinkML output of GO domain/range constraints as JSON on: [pull_request] @@ -46,7 +46,15 @@ jobs: run: poetry install --no-interaction #---------------------------------------------- - # run test suite + # regerate LinkML artifacts #---------------------------------------------- - - name: Run tests - run: make test \ No newline at end of file + - name: Regenerate LinkML artifacts + run: | + make clean-artifacts + make -B gen-artifacts + if [ $? -eq 0 ]; then + echo "LinkML artifacts generated successfully" + else + echo "LinkML artifacts generation failed" + exit 1 + fi \ No newline at end of file diff --git a/.gitignore b/.gitignore index 08a3b02..edc3b2b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ python/tests/__pycache__/ java/.idea/ .DS_Store +.venv/ *.log scala/target/* scala/test/* diff --git a/python/json_export.py b/python/json_export.py index feba512..4b25956 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -8,7 +8,7 @@ from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExpr, \ shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf from pyshex import PrefixLibrary -from shex_json_linkml import Collection, GoShape, Relationship +from shex_json_linkml import Association from pprint import pprint from pathlib import Path @@ -31,7 +31,8 @@ def __init__(self): self.pref_dict = { k: get_suffix(str(v)) for (k, v) in dict(pref).items() if str(v).startswith('http://purl.obolibrary.org/obo/')} - del self.pref_dict['OBO'] + del self.pref_dict['OBO'] # remove this filter and make sure that it works because it needs to be + # working for every shape. def get_shape_name(self, uri, clean=False): name = path.basename(uri).upper() @@ -60,6 +61,7 @@ def _load_expr(self, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=Non elif isinstance(expr, Shape) and expr.expression is not None: self._load_triple_expr(expr.expression, preds) + # throw an error here if pred list is empty return preds def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None: diff --git a/python/requirements.txt b/python/requirements.txt index 9d5a8e2..15ef926 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -4,6 +4,5 @@ rdflib>=0.0 SPARQLWrapper>=0.0 click>=0.0 cachier==1.1.8 -dataclasses>=0.0 linkml linkml-runtime diff --git a/python/schema/shex_json_linkml.yaml b/python/schema/shex_json_linkml.yaml index a7fe1d1..e0742dd 100644 --- a/python/schema/shex_json_linkml.yaml +++ b/python/schema/shex_json_linkml.yaml @@ -21,34 +21,20 @@ prefixes: linkml: https://w3id.org/linkml/ classes: - GoShape: + Association: description: >- GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule slots: - domain_name - - relationships - close_mappings: - - schema:Thing - slot_usage: - name: - notes: >- - This is the name of the rule, from the shex rules in JSON format, this can be a GO identifier. - - Relationship: - description: >- - A relationship object holds the relationship (Relationship.id) between a GoShape.domain (subject) and the Relatioship.range (object), - the range of the relationship (what values can be provided in the object of a statement), whether or not the - object can be multivalued, if the object is required when used with a particular domain and what context the - relationship should be used for. - slots: - - id + - relationship - range - is_multivalued - is_required - context + - exclude_from_extensions # where does this belong? close_mappings: - - schema:Relationship + - schema:Thing Collection: tree_root: true @@ -59,12 +45,6 @@ classes: test data objects to be submitted in a single file. slots: - relationships: - multivalued: true - range: Relationship - required: true - description: >- - A list of relationships that are defined for a particular domain range: multivalued: true @@ -110,3 +90,9 @@ slots: annotated with like this https://github.com/geneontology/go-shapes/pull/285/files will be exlcuded from the visual pathway editor but still included in the file so this file can be used in the graphical editor as well. required: true + + exclude_from_extensions: + range: boolean + description: >- + used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes + annotated with like this diff --git a/python/tests/data/flatten_shex_test_data.json b/python/tests/data/flatten_shex_test_data.json new file mode 100644 index 0000000..589b1dc --- /dev/null +++ b/python/tests/data/flatten_shex_test_data.json @@ -0,0 +1,35 @@ +{ + "goshapes": [ + { + "domain_name": "GO:0008150", + "relationship": "BFO:0000050", + "is_multivalued": false, + "exclude_from_extensions": "part_of", + "range": ["GO:0008150"], + "context": "", + "is_required": true + }, + { + "domain_name": "GO:0008150", + "relationship": "RO:0002233", + "is_multivalued": true, + "range": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991", + "NCBITaxon:1" + ], + "context": "", + "exclude_from_extensions": "occurs_in", + "is_required": true + }, + { + "domain_name": "GO:0048856", + "relationship": "RO:0002296", + "is_multivalued": false, + "range": ["CARO:00000000"], + "exclude_from_extensions": "occurs_in", + "is_required": true + } + ] +} \ No newline at end of file From ad526e8974b473da7ee524c8a719b27ceb590d17 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 2 Nov 2022 15:36:41 -0700 Subject: [PATCH 35/45] add poetry config files --- python/poetry.lock | 471 ++++++++++++++++++++++++++++++++++++++++++ python/poetry.toml | 2 + python/pyproject.toml | 19 ++ 3 files changed, 492 insertions(+) create mode 100644 python/poetry.lock create mode 100644 python/poetry.toml create mode 100644 python/pyproject.toml diff --git a/python/poetry.lock b/python/poetry.lock new file mode 100644 index 0000000..bbe63ad --- /dev/null +++ b/python/poetry.lock @@ -0,0 +1,471 @@ +[[package]] +name = "antlr4-python3-runtime" +version = "4.9.3" +description = "ANTLR 4.9.3 runtime for Python 3.7" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "cachier" +version = "1.5.4" +description = "Persistent, stale-free, local and cross-machine caching for Python functions." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pathtools = "*" +portalocker = "*" +watchdog = "*" + +[package.extras] +test = ["pytest", "coverage", "pytest-cov", "birch", "pymongo", "dnspython", "pandas", "collective.checkdocs", "pygments"] + +[[package]] +name = "certifi" +version = "2022.9.24" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "cfgraph" +version = "0.2.1" +description = "rdflib collections flattening graph" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +rdflib = ">=0.4.2" + +[[package]] +name = "chardet" +version = "5.0.0" +description = "Universal encoding detector for Python 3" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "charset-normalizer" +version = "2.1.1" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.6.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" + +[[package]] +name = "hbreader" +version = "0.9.1" +description = "Honey Badger reader - a generic file/url/string open and read tool" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "isodate" +version = "0.6.1" +description = "An ISO 8601 date/time/duration parser and formatter" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +six = "*" + +[[package]] +name = "jsonasobj" +version = "2.0.1" +description = "JSON as python objects" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +hbreader = "*" + +[[package]] +name = "pathtools" +version = "0.1.2" +description = "File system general utilities" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "portalocker" +version = "2.6.0" +description = "Wraps the portalocker recipe for easy usage" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +pywin32 = {version = ">=226", markers = "platform_system == \"Windows\""} + +[package.extras] +docs = ["sphinx (>=1.7.1)"] +redis = ["redis"] +tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-timeout (>=2.1.0)", "sphinx (>=3.0.3)", "pytest-mypy (>=0.8.0)", "redis"] + +[[package]] +name = "pyjsg" +version = "0.11.10" +description = "Python JSON Schema Grammar interpreter" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +antlr4-python3-runtime = ">=4.9.3,<4.10.0" +jsonasobj = ">=1.2.1" + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" +optional = false +python-versions = ">=3.6.8" + +[package.extras] +diagrams = ["railroad-diagrams", "jinja2"] + +[[package]] +name = "pyshex" +version = "0.8.1" +description = "Python ShEx Implementation" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cfgraph = ">=0.2.1" +chardet = "*" +pyshexc = "0.9.1" +rdflib-shim = "*" +requests = ">=2.22.0" +shexjsg = ">=0.8.2" +sparqlslurper = ">=0.5.1" +sparqlwrapper = ">=1.8.5" +urllib3 = "*" + +[[package]] +name = "pyshexc" +version = "0.9.1" +description = "PyShExC - Python ShEx compiler" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +antlr4-python3-runtime = ">=4.9.3,<4.10.0" +chardet = "*" +jsonasobj = ">=1.2.1" +pyjsg = ">=0.11.10" +rdflib-shim = "*" +shexjsg = ">=0.8.1" + +[[package]] +name = "pywin32" +version = "304" +description = "Python for Window Extensions" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "rdflib" +version = "6.2.0" +description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +isodate = "*" +pyparsing = "*" + +[package.extras] +berkeleydb = ["berkeleydb"] +dev = ["black (==22.6.0)", "flake8", "isort", "mypy", "pep8-naming", "types-setuptools", "flakeheaven"] +docs = ["myst-parser", "sphinx (<6)", "sphinxcontrib-apidoc", "sphinxcontrib-kroki", "sphinx-autodoc-typehints"] +html = ["html5lib"] +networkx = ["networkx"] +tests = ["html5lib", "pytest", "pytest-cov"] + +[[package]] +name = "rdflib-jsonld" +version = "0.6.1" +description = "rdflib extension adding JSON-LD parser and serializer" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +rdflib = ">=5.0.0" + +[[package]] +name = "rdflib-shim" +version = "1.0.3" +description = "Shim for rdflib 5 and 6 incompatibilities" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +rdflib = ">=5.0.0" +rdflib-jsonld = "0.6.1" + +[[package]] +name = "requests" +version = "2.28.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=3.7, <4" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "shexjsg" +version = "0.8.2" +description = "ShExJSG - Astract Syntax Tree for the ShEx 2.0 language" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pyjsg = ">=0.11.10" + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "sparqlslurper" +version = "0.5.1" +description = "SPARQL Slurper for rdflib" +category = "main" +optional = false +python-versions = ">=3.7.4" + +[package.dependencies] +rdflib = ">=5.0.0" +rdflib-shim = "*" +sparqlwrapper = ">=1.8.2" + +[[package]] +name = "sparqlwrapper" +version = "2.0.0" +description = "SPARQL Endpoint interface to Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +rdflib = ">=6.1.1" + +[package.extras] +dev = ["setuptools (>=3.7.1)", "mypy (>=0.931)", "pandas (>=1.3.5)", "pandas-stubs (>=1.2.0.48)"] +docs = ["sphinx (<5)", "sphinx-rtd-theme"] +keepalive = ["keepalive (>=0.5)"] +pandas = ["pandas (>=1.3.5)"] + +[[package]] +name = "urllib3" +version = "1.26.12" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" + +[package.extras] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "watchdog" +version = "2.1.9" +description = "Filesystem events monitoring" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + +[metadata] +lock-version = "1.1" +python-versions = "^3.9" +content-hash = "025b6b7707c86088fc98e6ca83e8c22eb1783e625ac21752e7ed419f01ba55cb" + +[metadata.files] +antlr4-python3-runtime = [ + {file = "antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b"}, +] +cachier = [] +certifi = [] +cfgraph = [ + {file = "CFGraph-0.2.1.tar.gz", hash = "sha256:b57fe7044a10b8ff65aa3a8a8ddc7d4cd77bf511b42e57289cd52cbc29f8fe74"}, +] +chardet = [ + {file = "chardet-5.0.0-py3-none-any.whl", hash = "sha256:d3e64f022d254183001eccc5db4040520c0f23b1a3f33d6413e099eb7f126557"}, + {file = "chardet-5.0.0.tar.gz", hash = "sha256:0368df2bfd78b5fc20572bb4e9bb7fb53e2c094f60ae9993339e8671d0afb8aa"}, +] +charset-normalizer = [] +click = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] +colorama = [] +hbreader = [ + {file = "hbreader-0.9.1-py3-none-any.whl", hash = "sha256:9a6e76c9d1afc1b977374a5dc430a1ebb0ea0488205546d4678d6e31cc5f6801"}, + {file = "hbreader-0.9.1.tar.gz", hash = "sha256:d2c132f8ba6276d794c66224c3297cec25c8079d0a4cf019c061611e0a3b94fa"}, +] +idna = [] +isodate = [ + {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, + {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, +] +jsonasobj = [ + {file = "jsonasobj-2.0.1-py3-none-any.whl", hash = "sha256:221af946bbe4171505e81ea1f0c31d652e69c68e02fff742e37543abe08ff7d9"}, + {file = "jsonasobj-2.0.1.tar.gz", hash = "sha256:e87c47ec5ec3db65a212e15236fdefc38dd01bdcf563b0d53021095066cd5963"}, +] +pathtools = [] +portalocker = [] +pyjsg = [ + {file = "PyJSG-0.11.10-py3-none-any.whl", hash = "sha256:10af60ff42219be7e85bf7f11c19b648715b0b29eb2ddbd269e87069a7c3f26d"}, + {file = "PyJSG-0.11.10.tar.gz", hash = "sha256:4bd6e3ff2833fa2b395bbe803a2d72a5f0bab5b7285bccd0da1a1bc0aee88bfa"}, +] +pyparsing = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] +pyshex = [ + {file = "PyShEx-0.8.1-py3-none-any.whl", hash = "sha256:6da1b10123e191abf8dcb6bf3e54aa3e1fcf771df5d1a0ed453217c8900c8e6a"}, + {file = "PyShEx-0.8.1.tar.gz", hash = "sha256:3c5c4d45fe27faaadae803cb008c41acf8ee784da7868b04fd84967e75be70d0"}, +] +pyshexc = [ + {file = "PyShExC-0.9.1-py2.py3-none-any.whl", hash = "sha256:efc55ed5cb2453e9df569b03e282505e96bb06597934288f3b23dd980ef10028"}, + {file = "PyShExC-0.9.1.tar.gz", hash = "sha256:35a9975d4b9afeb20ef710fb6680871756381d0c39fbb5470b3b506581a304d3"}, +] +pywin32 = [ + {file = "pywin32-304-cp310-cp310-win32.whl", hash = "sha256:3c7bacf5e24298c86314f03fa20e16558a4e4138fc34615d7de4070c23e65af3"}, + {file = "pywin32-304-cp310-cp310-win_amd64.whl", hash = "sha256:4f32145913a2447736dad62495199a8e280a77a0ca662daa2332acf849f0be48"}, + {file = "pywin32-304-cp310-cp310-win_arm64.whl", hash = "sha256:d3ee45adff48e0551d1aa60d2ec066fec006083b791f5c3527c40cd8aefac71f"}, + {file = "pywin32-304-cp311-cp311-win32.whl", hash = "sha256:30c53d6ce44c12a316a06c153ea74152d3b1342610f1b99d40ba2795e5af0269"}, + {file = "pywin32-304-cp311-cp311-win_amd64.whl", hash = "sha256:7ffa0c0fa4ae4077e8b8aa73800540ef8c24530057768c3ac57c609f99a14fd4"}, + {file = "pywin32-304-cp311-cp311-win_arm64.whl", hash = "sha256:cbbe34dad39bdbaa2889a424d28752f1b4971939b14b1bb48cbf0182a3bcfc43"}, + {file = "pywin32-304-cp36-cp36m-win32.whl", hash = "sha256:be253e7b14bc601718f014d2832e4c18a5b023cbe72db826da63df76b77507a1"}, + {file = "pywin32-304-cp36-cp36m-win_amd64.whl", hash = "sha256:de9827c23321dcf43d2f288f09f3b6d772fee11e809015bdae9e69fe13213988"}, + {file = "pywin32-304-cp37-cp37m-win32.whl", hash = "sha256:f64c0377cf01b61bd5e76c25e1480ca8ab3b73f0c4add50538d332afdf8f69c5"}, + {file = "pywin32-304-cp37-cp37m-win_amd64.whl", hash = "sha256:bb2ea2aa81e96eee6a6b79d87e1d1648d3f8b87f9a64499e0b92b30d141e76df"}, + {file = "pywin32-304-cp38-cp38-win32.whl", hash = "sha256:94037b5259701988954931333aafd39cf897e990852115656b014ce72e052e96"}, + {file = "pywin32-304-cp38-cp38-win_amd64.whl", hash = "sha256:ead865a2e179b30fb717831f73cf4373401fc62fbc3455a0889a7ddac848f83e"}, + {file = "pywin32-304-cp39-cp39-win32.whl", hash = "sha256:25746d841201fd9f96b648a248f731c1dec851c9a08b8e33da8b56148e4c65cc"}, + {file = "pywin32-304-cp39-cp39-win_amd64.whl", hash = "sha256:d24a3382f013b21aa24a5cfbfad5a2cd9926610c0affde3e8ab5b3d7dbcf4ac9"}, +] +rdflib = [] +rdflib-jsonld = [ + {file = "rdflib-jsonld-0.6.1.tar.gz", hash = "sha256:eda5a42a2e09f80d4da78e32b5c684bccdf275368f1541e6b7bcddfb1382a0e0"}, + {file = "rdflib_jsonld-0.6.1-py2.py3-none-any.whl", hash = "sha256:bcf84317e947a661bae0a3f2aee1eced697075fc4ac4db6065a3340ea0f10fc2"}, +] +rdflib-shim = [ + {file = "rdflib_shim-1.0.3-py3-none-any.whl", hash = "sha256:7a853e7750ef1e9bf4e35dea27d54e02d4ed087de5a9e0c329c4a6d82d647081"}, + {file = "rdflib_shim-1.0.3.tar.gz", hash = "sha256:d955d11e2986aab42b6830ca56ac6bc9c893abd1d049a161c6de2f1b99d4fc0d"}, +] +requests = [ + {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, + {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, +] +shexjsg = [ + {file = "ShExJSG-0.8.2-py2.py3-none-any.whl", hash = "sha256:3b0d8432dd313bee9e1343382c5e02e9908dd941a7dd7342bf8c0200fe523766"}, + {file = "ShExJSG-0.8.2.tar.gz", hash = "sha256:f17a629fc577fa344382bdee143cd9ff86588537f9f811f66cea6f63cdbcd0b6"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +sparqlslurper = [ + {file = "sparqlslurper-0.5.1-py3-none-any.whl", hash = "sha256:ae49b2d8ce3dd38df7a40465b228ad5d33fb7e11b3f248d195f9cadfc9cfff87"}, + {file = "sparqlslurper-0.5.1.tar.gz", hash = "sha256:9282ebb064fc6152a58269d194cb1e7b275b0f095425a578d75b96dcc851f546"}, +] +sparqlwrapper = [ + {file = "SPARQLWrapper-2.0.0-py3-none-any.whl", hash = "sha256:c99a7204fff676ee28e6acef327dc1ff8451c6f7217dcd8d49e8872f324a8a20"}, + {file = "SPARQLWrapper-2.0.0.tar.gz", hash = "sha256:3fed3ebcc77617a4a74d2644b86fd88e0f32e7f7003ac7b2b334c026201731f1"}, +] +urllib3 = [] +watchdog = [ + {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"}, + {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d"}, + {file = "watchdog-2.1.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658"}, + {file = "watchdog-2.1.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591"}, + {file = "watchdog-2.1.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33"}, + {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846"}, + {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3"}, + {file = "watchdog-2.1.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654"}, + {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39"}, + {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7"}, + {file = "watchdog-2.1.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd"}, + {file = "watchdog-2.1.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3"}, + {file = "watchdog-2.1.9-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d"}, + {file = "watchdog-2.1.9-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_armv7l.whl", hash = "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_i686.whl", hash = "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64.whl", hash = "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_s390x.whl", hash = "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6"}, + {file = "watchdog-2.1.9-py3-none-win32.whl", hash = "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1"}, + {file = "watchdog-2.1.9-py3-none-win_amd64.whl", hash = "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c"}, + {file = "watchdog-2.1.9-py3-none-win_ia64.whl", hash = "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428"}, + {file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"}, +] diff --git a/python/poetry.toml b/python/poetry.toml new file mode 100644 index 0000000..ab1033b --- /dev/null +++ b/python/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +in-project = true diff --git a/python/pyproject.toml b/python/pyproject.toml new file mode 100644 index 0000000..31b24e0 --- /dev/null +++ b/python/pyproject.toml @@ -0,0 +1,19 @@ +[tool.poetry] +name = "go-shapes" +version = "0.1.0" +description = "" +authors = [] + +[tool.poetry.dependencies] +python = "^3.9" +PyShEx = "^0.8.1" +rdflib = "^6.2.0" +SPARQLWrapper = "^2.0.0" +click = "^8.1.3" +cachier = "^1.5.4" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" From beb70d5ab8aaede25d127de398433ec0f79bf05c Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 2 Nov 2022 15:37:44 -0700 Subject: [PATCH 36/45] remove older test data --- python/tests/data/shex_json_test_data.json | 34 ---------------------- 1 file changed, 34 deletions(-) delete mode 100644 python/tests/data/shex_json_test_data.json diff --git a/python/tests/data/shex_json_test_data.json b/python/tests/data/shex_json_test_data.json deleted file mode 100644 index 446eda1..0000000 --- a/python/tests/data/shex_json_test_data.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "goshapes": [ - { - "name": "GO:0008150", - "relationships": [ - { - "id": "BFO:0000050", - "is_multivalued": false, - "range": ["GO:0008150"] - }, - { - "id": "RO:0002233", - "is_multivalued": true, - "range": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991", - "NCBITaxon:1" - ] - } - ] - }, - { - "name": "GO:0048856", - "relationships": [ - { - "id": "RO:0002296", - "is_multivalued": false, - "range": ["CARO:00000000"] - } - ] - } - ] -} \ No newline at end of file From c36860e7eb34d8e2b8b5db51ea237f72657d4daa Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 2 Nov 2022 15:40:50 -0700 Subject: [PATCH 37/45] regenerate prodcuts --- python/schema/shex_json_linkml.yaml | 18 ++-- python/shex_json_linkml.py | 22 ++--- .../target/jsonschema/shex_json_linkml.json | 83 ++++++++----------- python/target/typescript/shex_json_linkml.ts | 33 +++----- 4 files changed, 64 insertions(+), 92 deletions(-) diff --git a/python/schema/shex_json_linkml.yaml b/python/schema/shex_json_linkml.yaml index e0742dd..9e52ee4 100644 --- a/python/schema/shex_json_linkml.yaml +++ b/python/schema/shex_json_linkml.yaml @@ -26,9 +26,9 @@ classes: GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule slots: - - domain_name - - relationship - - range + - subject + - predicate + - object - is_multivalued - is_required - context @@ -46,7 +46,7 @@ classes: slots: - range: + object: multivalued: true range: uriorcurie required: true @@ -60,7 +60,13 @@ slots: The relationship id is the predicate of the relationship between the domain and range of the GO shape expression rule. - domain_name: + predicate: + range: string + description: >- + The predicate is the relationship between the domain and + range of the GO shape expression rule. + + subject: range: uriorcurie required: true description: >- @@ -74,7 +80,7 @@ slots: goshapes: multivalued: true - range: GoShape + range: Association description: >- A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule. diff --git a/python/shex_json_linkml.py b/python/shex_json_linkml.py index 8bbc443..134718c 100644 --- a/python/shex_json_linkml.py +++ b/python/shex_json_linkml.py @@ -19,24 +19,17 @@ class ConfiguredBaseModel(WeakRefShimBaseModel, pass -class GoShape(ConfiguredBaseModel): +class Association(ConfiguredBaseModel): """ GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule """ - domain_name: str = Field(None, description="""The domain of the GO shape expression rule, this is the subject of the relationship.""") - relationships: List[Relationship] = Field(default_factory=list, description="""A list of relationships that are defined for a particular domain""") - - - -class Relationship(ConfiguredBaseModel): - """ - A relationship object holds the relationship (Relationship.id) between a GoShape.domain (subject) and the Relatioship.range (object), the range of the relationship (what values can be provided in the object of a statement), whether or not the object can be multivalued, if the object is required when used with a particular domain and what context the relationship should be used for. - """ - id: Optional[str] = Field(None, description="""The relationship id is the predicate of the relationship between the domain and range of the GO shape expression rule.""") - range: List[str] = Field(default_factory=list, description="""The range of the relationship identified by the Relationship.id parameter (This contains the values can be provided in the object of a statement)""") + subject: str = Field(None, description="""The domain of the GO shape expression rule, this is the subject of the relationship.""") + predicate: Optional[str] = Field(None, description="""The predicate is the relationship between the domain and range of the GO shape expression rule.""") + object: List[str] = Field(default_factory=list, description="""The range of the relationship identified by the Relationship.id parameter (This contains the values can be provided in the object of a statement)""") is_multivalued: bool = Field(None, description="""for this shape, the relationship in question supports multiple values in the object of the association.""") is_required: bool = Field(None) context: str = Field(None, description="""used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes annotated with like this https://github.com/geneontology/go-shapes/pull/285/files will be exlcuded from the visual pathway editor but still included in the file so this file can be used in the graphical editor as well.""") + exclude_from_extensions: Optional[bool] = Field(None, description="""used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes annotated with like this""") @@ -44,14 +37,13 @@ class Collection(ConfiguredBaseModel): """ A collection of GO domain/range constraint shapes. This is primarily used in this schema to allow several test data objects to be submitted in a single file. """ - goshapes: Optional[List[GoShape]] = Field(default_factory=list, description="""A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule.""") + goshapes: Optional[List[Association]] = Field(default_factory=list, description="""A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule.""") # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ -GoShape.update_forward_refs() -Relationship.update_forward_refs() +Association.update_forward_refs() Collection.update_forward_refs() diff --git a/python/target/jsonschema/shex_json_linkml.json b/python/target/jsonschema/shex_json_linkml.json index dab84ee..1d02317 100644 --- a/python/target/jsonschema/shex_json_linkml.json +++ b/python/target/jsonschema/shex_json_linkml.json @@ -1,58 +1,16 @@ { "$defs": { - "Collection": { - "additionalProperties": false, - "description": "A collection of GO domain/range constraint shapes. This is primarily used in this schema to allow several test data objects to be submitted in a single file.", - "properties": { - "goshapes": { - "description": "A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule.", - "items": { - "$ref": "#/$defs/GoShape" - }, - "type": "array" - } - }, - "required": [], - "title": "Collection", - "type": "object" - }, - "GoShape": { + "Association": { "additionalProperties": false, "description": "GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule", - "properties": { - "domain_name": { - "description": "The domain of the GO shape expression rule, this is the subject of the relationship.", - "type": "string" - }, - "name": { - "type": "string" - }, - "relationships": { - "description": "A list of relationships that are defined for a particular domain", - "items": { - "$ref": "#/$defs/Relationship" - }, - "type": "array" - } - }, - "required": [ - "domain_name", - "relationships" - ], - "title": "GoShape", - "type": "object" - }, - "Relationship": { - "additionalProperties": false, - "description": "A relationship object holds the relationship (Relationship.id) between a GoShape.domain (subject) and the Relatioship.range (object), the range of the relationship (what values can be provided in the object of a statement), whether or not the object can be multivalued, if the object is required when used with a particular domain and what context the relationship should be used for.", "properties": { "context": { "description": "used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes annotated with like this https://github.com/geneontology/go-shapes/pull/285/files will be exlcuded from the visual pathway editor but still included in the file so this file can be used in the graphical editor as well.", "type": "string" }, - "id": { - "description": "The relationship id is the predicate of the relationship between the domain and range of the GO shape expression rule.", - "type": "string" + "exclude_from_extensions": { + "description": "used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes annotated with like this", + "type": "boolean" }, "is_multivalued": { "description": "for this shape, the relationship in question supports multiple values in the object of the association.", @@ -61,21 +19,46 @@ "is_required": { "type": "boolean" }, - "range": { + "object": { "description": "The range of the relationship identified by the Relationship.id parameter (This contains the values can be provided in the object of a statement)", "items": { "type": "string" }, "type": "array" + }, + "predicate": { + "description": "The predicate is the relationship between the domain and range of the GO shape expression rule.", + "type": "string" + }, + "subject": { + "description": "The domain of the GO shape expression rule, this is the subject of the relationship.", + "type": "string" } }, "required": [ - "range", + "subject", + "object", "is_multivalued", "is_required", "context" ], - "title": "Relationship", + "title": "Association", + "type": "object" + }, + "Collection": { + "additionalProperties": false, + "description": "A collection of GO domain/range constraint shapes. This is primarily used in this schema to allow several test data objects to be submitted in a single file.", + "properties": { + "goshapes": { + "description": "A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule.", + "items": { + "$ref": "#/$defs/Association" + }, + "type": "array" + } + }, + "required": [], + "title": "Collection", "type": "object" } }, @@ -87,7 +70,7 @@ "goshapes": { "description": "A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule.", "items": { - "$ref": "#/$defs/GoShape" + "$ref": "#/$defs/Association" }, "type": "array" } diff --git a/python/target/typescript/shex_json_linkml.ts b/python/target/typescript/shex_json_linkml.ts index a729704..2860b65 100644 --- a/python/target/typescript/shex_json_linkml.ts +++ b/python/target/typescript/shex_json_linkml.ts @@ -7,40 +7,25 @@ * GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule */ -export interface GoShape { +export interface Association { /** * The domain of the GO shape expression rule, this is the subject of the relationship. */ - domain_name?: string, + subject?: string, /** - * A list of relationships that are defined for a particular domain + * The predicate is the relationship between the domain and range of the GO shape expression rule. */ - relationships?: Relationship[], - -} - - -/** - * A relationship object holds the relationship (Relationship.id) between a GoShape.domain (subject) and the Relatioship.range (object), the range of the relationship (what values can be provided in the object of a statement), whether or not the object can be multivalued, if the object is required when used with a particular domain and what context the relationship should be used for. - */ - -export interface Relationship { - - - /** - * The relationship id is the predicate of the relationship between the domain and range of the GO shape expression rule. - */ - id?: string, + predicate?: string, /** * The range of the relationship identified by the Relationship.id parameter (This contains the values can be provided in the object of a statement) */ - range?: string, + object?: string, /** @@ -60,6 +45,12 @@ export interface Relationship { */ context?: string, + + /** + * used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes annotated with like this + */ + exclude_from_extensions?: boolean, + } @@ -73,7 +64,7 @@ export interface Collection { /** * A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule. */ - goshapes?: GoShape[], + goshapes?: Association[], } From 0a2a9d155ce3da2b33c8279d3b47d21f8547f31c Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Wed, 2 Nov 2022 15:41:57 -0700 Subject: [PATCH 38/45] fix up export with correct classes --- python/json_export.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/json_export.py b/python/json_export.py index 4b25956..817cf3c 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -96,9 +96,9 @@ def parse(self): if shape_name is None: continue - goshape = GoShape() - goshape.domain_name = shape_name - goshape.relationships = [] + goshape = Association() + goshape.subject = shape_name + goshape.relationship = "" # print('Parsing Shape: ' + shape['id']) self.json_shapes[shape_name] = {} @@ -106,7 +106,7 @@ def parse(self): for expr in shexps: self.json_shapes[shape_name] = self._load_expr(expr) - goshape.relationships.append(self._load_expr(expr)) + goshapes.append(goshape) # print(goshapes) From 75cf29b713320069625fbae488220f6d5ef142e6 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Thu, 3 Nov 2022 13:05:25 -0700 Subject: [PATCH 39/45] fixing Association refernece after model change --- python/json_export.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/python/json_export.py b/python/json_export.py index 817cf3c..845c110 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -89,8 +89,6 @@ def parse(self): shapes = self.shex.shapes for shape in shapes: - print(shape) - print("") shape_name = self.get_shape_name(shape['id'], True) if shape_name is None: @@ -98,7 +96,7 @@ def parse(self): goshape = Association() goshape.subject = shape_name - goshape.relationship = "" + goshape.predicate = "" # print('Parsing Shape: ' + shape['id']) self.json_shapes[shape_name] = {} @@ -108,7 +106,6 @@ def parse(self): self.json_shapes[shape_name] = self._load_expr(expr) goshapes.append(goshape) - # print(goshapes) nfShex = NoctuaFormShex() From 901eefbce3d33a6dd0c9c3ccac003830db07ca2f Mon Sep 17 00:00:00 2001 From: tmushayahama Date: Thu, 17 Nov 2022 16:27:58 -0800 Subject: [PATCH 40/45] Added the annotations and flattened the json --- python/json_export.py | 99 ++++++++++++++++++++++++++----------------- 1 file changed, 61 insertions(+), 38 deletions(-) diff --git a/python/json_export.py b/python/json_export.py index 845c110..436cf07 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -6,7 +6,7 @@ from pyshexc.parser_impl import generate_shexj from typing import Optional, List, Union from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExpr, \ - shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf + shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf, Annotation from pyshex import PrefixLibrary from shex_json_linkml import Association from pprint import pprint @@ -22,12 +22,12 @@ def get_suffix(uri): class NoctuaFormShex: - def __init__(self): - self.json_shapes = {} - shex_url = "https://raw.githubusercontent.com/geneontology/go-shapes/master/shapes/go-cam-shapes.shex" - shex_response = requests.get(shex_url) - self.shex = generate_shexj.parse(shex_response.text) - pref = PrefixLibrary(shex_response.text) + def __init__(self, shex_text): + self.exclude_ext_pred = 'http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions' + self.json_shapes = [] + + self.shex = generate_shexj.parse(shex_text) + pref = PrefixLibrary(shex_text) self.pref_dict = { k: get_suffix(str(v)) for (k, v) in dict(pref).items() if str(v).startswith('http://purl.obolibrary.org/obo/')} @@ -46,46 +46,64 @@ def gen_lookup_table(self): } for (k, v) in self.pref_dict.items()} return table - def _load_expr(self, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=None) -> List: + def _load_expr(self, subject:str, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=None) -> List: if preds is None: preds = {} if isinstance(expr, str) and isinstance(preds, list): - # ('Adding: ' + expr + ' to ' + str(preds)) preds.append(self.get_shape_name(expr)) if isinstance(expr, (ShapeOr, ShapeAnd)): for expr2 in expr.shapeExprs: - self._load_expr(expr2, preds) + self._load_expr(subject, expr2, preds) elif isinstance(expr, ShapeNot): - self._load_expr(expr.shapeExpr, preds) + self._load_expr(subject, expr.shapeExpr, preds) elif isinstance(expr, Shape) and expr.expression is not None: - self._load_triple_expr(expr.expression, preds) + self._load_triple_expr(subject, expr.expression, preds) # throw an error here if pred list is empty return preds - def _load_triple_expr(self, expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None: + def _load_triple_expr(self, subject:str, expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None: if isinstance(expr, (OneOf, EachOf)): for expr2 in expr.expressions: - self._load_triple_expr(expr2, preds) + self._load_triple_expr(subject, expr2, preds) elif isinstance(expr, TripleConstraint) and expr.valueExpr is not None: pred = get_suffix(expr.predicate) if pred not in self.pref_dict.values(): return - preds[pred] = {} - preds[pred]['range'] = [] - + objects = [] + self._load_expr(subject, expr.valueExpr, objects) + goshape = {} #Association + goshape['subject']=subject + goshape['object']=objects + goshape['predicate']=pred + + if isinstance(expr.annotations, list): + goshape['exclude_from_extensions']=self._load_annotation(expr, self.exclude_ext_pred) + if expr.max is not None: - preds[pred]['cardinality'] = expr.max + goshape["is_multivalued"] = True if expr.max == 1 else False + + self.json_shapes.append(goshape) - self._load_expr(expr.valueExpr, preds[pred]['range']) + return preds - def parse(self): - goshapes = [] + def _load_annotation(self, expr: Union[tripleExpr, tripleExprLabel], annotation_key): + for annotation in expr.annotations: + if isinstance(annotation, Annotation) : + if annotation.predicate == annotation_key: + return True if annotation.object.value=="true" else False + + return None + + def parse_raw(self): + return json.loads(self.shex._as_json_dumps()) + + def parse(self): shapes = self.shex.shapes for shape in shapes: @@ -94,30 +112,35 @@ def parse(self): if shape_name is None: continue - goshape = Association() - goshape.subject = shape_name - goshape.predicate = "" - # print('Parsing Shape: ' + shape['id']) - self.json_shapes[shape_name] = {} - + print('Parsing Shape: ' + shape['id']) + shexps = shape.shapeExprs or [] for expr in shexps: - self.json_shapes[shape_name] = self._load_expr(expr) + self._load_expr(shape_name, expr) + - goshapes.append(goshape) +if __name__ == "__main__": + -nfShex = NoctuaFormShex() -nfShex.parse() + base_path = Path(__file__).parent + shex_fp = (base_path / "../shapes/go-cam-shapes.shex").resolve() + json_shapes_fp = (base_path / "../shapes/json/shex_dump.json").resolve() + look_table_fp = (base_path / "../shapes/json/look_table.json").resolve() + shex_full_fp = (base_path / "../shapes/json/shex_full.json").resolve() + + with open(shex_fp) as f: + shex_text = f.read() -base_path = Path(__file__).parent -json_shapes_file_path = (base_path / "../shapes/json/shex_dump.json").resolve() -look_table_file_path = (base_path / "../shapes/json/look_table.json").resolve() + nfShex = NoctuaFormShex(shex_text) + nfShex.parse() + with open(json_shapes_fp, "w") as sf: + json.dump(nfShex.json_shapes, sf, indent=2) -with open(json_shapes_file_path, "w") as sf: - json.dump(nfShex.json_shapes, sf, indent=2) + with open(look_table_fp, "w") as sf: + json.dump(nfShex.gen_lookup_table(), sf, indent=2) -with open(look_table_file_path, "w") as sf: - json.dump(nfShex.gen_lookup_table(), sf, indent=2) + with open(shex_full_fp, "w") as sf: + json.dump(nfShex.parse_raw(), sf, indent=2) From 268bb9e027cc6a0b317c9eb3a67e7eb7e47e210f Mon Sep 17 00:00:00 2001 From: tmushayahama Date: Thu, 17 Nov 2022 16:33:23 -0800 Subject: [PATCH 41/45] Added example exclude_from_extensions annotations --- shapes/go-cam-shapes.shex | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/shapes/go-cam-shapes.shex b/shapes/go-cam-shapes.shex index d925f8c..fe709ff 100644 --- a/shapes/go-cam-shapes.shex +++ b/shapes/go-cam-shapes.shex @@ -1,11 +1,10 @@ -BASE +BASE PREFIX obo: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX xsd: PREFIX skos: -PREFIX prov: #metadata PREFIX bl: PREFIX contributor: @@ -130,7 +129,6 @@ PREFIX results_in_remodeling_of: imports: . *; oboinowlid: . *; #TODO not sure if we really want this? owl:versionIRI . *; - prov:wasDerivedFrom IRI {0,1}; # for model copy } { @@ -145,13 +143,13 @@ PREFIX results_in_remodeling_of: IRI @ AND EXTRA a { a [owl:NamedIndividual] * // rdfs:comment "Every entity we care about is a named individual"; - xref: . * // rdfs:comment "mappings for the entity. Value is typically a CURIE string. Currently this is only used for Reactome-derived models." ; - rdfs:label . {0,1} // rdfs:comment "the name of the entity. Currently this is only used for Reactome-derived models." ; + xref: . *; + rdfs:label . {0,1} //rdfs:comment "the name" ; exact_match: . *; - x: . {0,1} // rdfs:comment "X coordinate for node. This is used for caching layouts in the Noctua Graph Editor."; - y: . {0,1} // rdfs:comment "Y coordinate for node. This is used for caching layouts in the Noctua Graph Editor."; - skos:narrower . * // rdfs:comment "This entity (e.g. a node representing a pathway) represents a narrower (in any sense) concept then the target node. "; - skos:broader . * // rdfs:comment "This entity (e.g. a node representing a pathway) represents a broader (in any sense) concept then the target node. "; + x: . {0,1} // rdfs:comment "X coordinate for node"; + y: . {0,1} // rdfs:comment "Y coordinate for node"; + skos:narrower . * //rdfs:comment "This entity (e.g. a node representing a pathway) represents a narrower (in any sense) concept then the target node. "; + skos:broader . * //rdfs:comment "This entity (e.g. a node representing a pathway) represents a broader (in any sense) concept then the target node. "; } // rdfs:comment "Default allowable metadata for GO-CAM entities" { @@ -379,8 +377,8 @@ PREFIX results_in_remodeling_of: @ AND EXTRA a { a ( @ OR @ ) {1}; - enabled_by: ( @ OR @ ) {0,1}; - part_of: @ *; + enabled_by: ( @ OR @ ) {0,1} // true ; + part_of: @ * // true ; has_part: @ *; occurs_in: @ {0,1}; has_output: ( @ OR @ ) *; @@ -408,8 +406,8 @@ PREFIX results_in_remodeling_of: @ AND EXTRA a { a @ {1}; transports_or_maintains_localization_of: ( @ OR @ OR @ ) *; - has_target_end_location: @ *; - has_target_start_location: @ *; + has_target_end_location: @ * // true ; + has_target_start_location: @ * // true ; } // rdfs:comment "a transporter activity GO molecular function or child" IRI @ AND EXTRA rdfs:subClassOf { @@ -554,4 +552,4 @@ PREFIX results_in_remodeling_of: # { # bl:category . {2,} -#} // rdfs:comment "has multiple type tags" +#} // rdfs:comment "has multiple type tags" \ No newline at end of file From f3a2f524acba80c45f49bae1d78c3044ecb0a6b1 Mon Sep 17 00:00:00 2001 From: tmushayahama Date: Thu, 17 Nov 2022 16:45:10 -0800 Subject: [PATCH 42/45] Added the example output. fix: multivalued --- python/json_export.py | 8 +- shapes/json/shex_dump.json | 1264 ++++++------ shapes/json/shex_full.json | 3713 ++++++++++++++++++++++++++++++++++++ 3 files changed, 4399 insertions(+), 586 deletions(-) create mode 100644 shapes/json/shex_full.json diff --git a/python/json_export.py b/python/json_export.py index 436cf07..a1eb329 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -69,9 +69,9 @@ def _load_triple_expr(self, subject:str, expr: Union[tripleExpr, tripleExprLabel for expr2 in expr.expressions: self._load_triple_expr(subject, expr2, preds) elif isinstance(expr, TripleConstraint) and expr.valueExpr is not None: - pred = get_suffix(expr.predicate) + predicate = get_suffix(expr.predicate) - if pred not in self.pref_dict.values(): + if predicate not in self.pref_dict.values(): return objects = [] @@ -79,13 +79,13 @@ def _load_triple_expr(self, subject:str, expr: Union[tripleExpr, tripleExprLabel goshape = {} #Association goshape['subject']=subject goshape['object']=objects - goshape['predicate']=pred + goshape['predicate']=predicate if isinstance(expr.annotations, list): goshape['exclude_from_extensions']=self._load_annotation(expr, self.exclude_ext_pred) if expr.max is not None: - goshape["is_multivalued"] = True if expr.max == 1 else False + goshape["is_multivalued"] = True if expr.max == -1 else False self.json_shapes.append(goshape) diff --git a/shapes/json/shex_dump.json b/shapes/json/shex_dump.json index abf9a43..3c9b2a6 100644 --- a/shapes/json/shex_dump.json +++ b/shapes/json/shex_dump.json @@ -1,582 +1,682 @@ -{ - "NCBITaxon:1": {}, - "GO:0008150": { - "BFO:0000050": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002233": { - "range": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991", - "NCBITaxon:1" - ], - "cardinality": -1 - }, - "RO:0002234": { - "range": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991" - ], - "cardinality": -1 - }, - "BFO:0000066": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002313": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002339": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002338": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002411": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002305": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002304": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002211": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002212": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002213": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0012003": { - "range": [ - "CARO:0000000", - "NCBITaxon:1" - ], - "cardinality": -1 - } - }, - "GO:0048856": { - "RO:0002296": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0048646": { - "RO:0002297": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0009653": { - "RO:0002298": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0030154": { - "RO:0002315": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0051301": { - "RO:0002233": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0045165": { - "RO:0002348": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0001709": { - "RO:0002349": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0001708": { - "RO:0002356": { - "range": [ - "CL:0000003" - ], - "cardinality": 1 - } - }, - "GO:0022607": { - "RO:0002588": { - "range": [ - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0022411": { - "RO:0002590": { - "range": [ - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0016043": { - "RO:0002592": { - "range": [ - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0021700": { - "RO:0002299": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0040007": { - "RO:0002343": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0051179": { - "RO:0002313": { - "range": [ - "CARO:0000000", - "CHEBI:24431", - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002339": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002338": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0040011": { - "RO:0002565": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0006928": { - "RO:0002565": { - "range": [ - "CL:0000003", - "GO:0005575" - ], - "cardinality": 1 - } - }, - "GO:0034367": { - "RO:0002591": { - "range": [ - "GO:0032991" - ], - "cardinality": 1 - } - }, - "GO:0007389": { - "RO:0002356": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0003674": { - "RO:0002333": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": 1 - }, - "BFO:0000050": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "BFO:0000051": { - "range": [ - "GO:0003674" - ], - "cardinality": -1 - }, - "BFO:0000066": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002234": { - "range": [ - "CHEBI:24431", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002233": { - "range": [ - "CHEBI:24431", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002413": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002211": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002212": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002213": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002578": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002630": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002629": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002418": { - "range": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0004046": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0004047": { - "range": [ - "GO:0008150" - ], - "cardinality": -1 - }, - "RO:0002411": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002305": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002304": { - "range": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "cardinality": -1 - }, - "RO:0002092": { - "range": [ - "GO:0044848", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - } - }, - "GO:0005215": { - "RO:0002313": { - "range": [ - "CHEBI:24431", - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002339": { - "range": [ - "GO:0005575" - ], - "cardinality": -1 - }, - "RO:0002338": { - "range": [ - "GO:0005575" - ], - "cardinality": -1 - } - }, - "GO:0044848": {}, - "UBERON:0000105": {}, - "PO:0009012": {}, - "CARO:0000000": { - "BFO:0000050": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0001015": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": 1 - } - }, - "CL:0000003": { - "BFO:0000050": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - } - }, - "GO:0005575": { - "BFO:0000050": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002220": { - "range": [ - "CARO:0000000" - ], - "cardinality": -1 - }, - "RO:0002131": { - "range": [ - "CARO:0000000" - ], - "cardinality": -1 - }, - "RO:0002490": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - }, - "RO:0002491": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - } - }, - "GO:0032991": { - "RO:0001025": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002432": { - "range": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "cardinality": 1 - }, - "BFO:0000051": { - "range": [ - "CHEBI:33695", - "GO:0032991" - ], - "cardinality": -1 - }, - "RO:0002490": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - }, - "RO:0002491": { - "range": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "cardinality": -1 - } - }, - "CHEBI:24431": {}, - "CHEBI:36080": { - "RO:0001025": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002432": { - "range": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "cardinality": 1 - }, - "BFO:0000050": { - "range": [ - "GO:0032991" - ], - "cardinality": 1 - }, - "RO:0002326": { - "range": [ - "GO:0003674" - ], - "cardinality": 1 - } - }, - "CHEBI:33695": { - "RO:0001025": { - "range": [ - "CARO:0000000" - ], - "cardinality": 1 - }, - "RO:0002432": { - "range": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "cardinality": 1 - }, - "BFO:0000050": { - "range": [ - "GO:0032991" - ], - "cardinality": 1 - }, - "RO:0002326": { - "range": [ - "GO:0003674" - ], - "cardinality": 1 - } - }, - "ECO:0000000": {} -} \ No newline at end of file +[ + { + "subject": "GO:0008150", + "object": [ + "GO:0008150" + ], + "predicate": "BFO:0000050", + "is_multivalued": true + }, + { + "subject": "GO:0008150", + "object": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991", + "NCBITaxon:1" + ], + "predicate": "RO:0002233", + "is_multivalued": true + }, + { + "subject": "GO:0008150", + "object": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991" + ], + "predicate": "RO:0002234", + "is_multivalued": true + }, + { + "subject": "GO:0008150", + "object": [ + "CARO:0000000" + ], + "predicate": "BFO:0000066", + "is_multivalued": false + }, + { + "subject": "GO:0008150", + "object": [ + "CHEBI:33695", + "GO:0032991" + ], + "predicate": "RO:0002313", + "is_multivalued": true + }, + { + "subject": "GO:0008150", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002339", + "is_multivalued": false + }, + { + "subject": "GO:0008150", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002338", + "is_multivalued": false + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002411", + "is_multivalued": true + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002305", + "is_multivalued": true + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002304", + "is_multivalued": true + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150" + ], + "predicate": "RO:0002211", + "is_multivalued": true + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150" + ], + "predicate": "RO:0002212", + "is_multivalued": true + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150" + ], + "predicate": "RO:0002213", + "is_multivalued": true + }, + { + "subject": "GO:0008150", + "object": [ + "CARO:0000000", + "NCBITaxon:1" + ], + "predicate": "RO:0012003", + "is_multivalued": true + }, + { + "subject": "GO:0048856", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002296", + "is_multivalued": false + }, + { + "subject": "GO:0048646", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002297", + "is_multivalued": false + }, + { + "subject": "GO:0009653", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002298", + "is_multivalued": false + }, + { + "subject": "GO:0030154", + "object": [ + "CL:0000003" + ], + "predicate": "RO:0002315", + "is_multivalued": false + }, + { + "subject": "GO:0051301", + "object": [ + "CL:0000003" + ], + "predicate": "RO:0002233", + "is_multivalued": false + }, + { + "subject": "GO:0045165", + "object": [ + "CL:0000003" + ], + "predicate": "RO:0002348", + "is_multivalued": false + }, + { + "subject": "GO:0001709", + "object": [ + "CL:0000003" + ], + "predicate": "RO:0002349", + "is_multivalued": false + }, + { + "subject": "GO:0001708", + "object": [ + "CL:0000003" + ], + "predicate": "RO:0002356", + "is_multivalued": false + }, + { + "subject": "GO:0022607", + "object": [ + "GO:0005575" + ], + "predicate": "RO:0002588", + "is_multivalued": false + }, + { + "subject": "GO:0022411", + "object": [ + "GO:0005575" + ], + "predicate": "RO:0002590", + "is_multivalued": false + }, + { + "subject": "GO:0016043", + "object": [ + "GO:0005575" + ], + "predicate": "RO:0002592", + "is_multivalued": false + }, + { + "subject": "GO:0021700", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002299", + "is_multivalued": false + }, + { + "subject": "GO:0040007", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002343", + "is_multivalued": false + }, + { + "subject": "GO:0051179", + "object": [ + "CARO:0000000", + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" + ], + "predicate": "RO:0002313", + "is_multivalued": true + }, + { + "subject": "GO:0051179", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002339", + "is_multivalued": false + }, + { + "subject": "GO:0051179", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002338", + "is_multivalued": false + }, + { + "subject": "GO:0040011", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002565", + "is_multivalued": false + }, + { + "subject": "GO:0006928", + "object": [ + "CL:0000003", + "GO:0005575" + ], + "predicate": "RO:0002565", + "is_multivalued": false + }, + { + "subject": "GO:0034367", + "object": [ + "GO:0032991" + ], + "predicate": "RO:0002591", + "is_multivalued": false + }, + { + "subject": "GO:0007389", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002356", + "is_multivalued": false + }, + { + "subject": "GO:0003674", + "object": [ + "CHEBI:33695", + "GO:0032991" + ], + "predicate": "RO:0002333", + "exclude_from_extensions": true, + "is_multivalued": false + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150" + ], + "predicate": "BFO:0000050", + "exclude_from_extensions": true, + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674" + ], + "predicate": "BFO:0000051", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "CARO:0000000" + ], + "predicate": "BFO:0000066", + "is_multivalued": false + }, + { + "subject": "GO:0003674", + "object": [ + "CHEBI:24431", + "GO:0032991" + ], + "predicate": "RO:0002234", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "CHEBI:24431", + "GO:0032991" + ], + "predicate": "RO:0002233", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002413", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002211", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002212", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002213", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002578", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002630", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002629", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", + "GO:0008150" + ], + "predicate": "RO:0002418", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150" + ], + "predicate": "RO:0004046", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150" + ], + "predicate": "RO:0004047", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002411", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002305", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "predicate": "RO:0002304", + "is_multivalued": true + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0044848", + "UBERON:0000105", + "PO:0009012" + ], + "predicate": "RO:0002092", + "is_multivalued": true + }, + { + "subject": "GO:0005215", + "object": [ + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" + ], + "predicate": "RO:0002313", + "is_multivalued": true + }, + { + "subject": "GO:0005215", + "object": [ + "GO:0005575" + ], + "predicate": "RO:0002339", + "exclude_from_extensions": true, + "is_multivalued": true + }, + { + "subject": "GO:0005215", + "object": [ + "GO:0005575" + ], + "predicate": "RO:0002338", + "exclude_from_extensions": true, + "is_multivalued": true + }, + { + "subject": "CARO:0000000", + "object": [ + "CARO:0000000" + ], + "predicate": "BFO:0000050", + "is_multivalued": false + }, + { + "subject": "CARO:0000000", + "object": [ + "CHEBI:33695", + "GO:0032991" + ], + "predicate": "RO:0001015", + "is_multivalued": false + }, + { + "subject": "CL:0000003", + "object": [ + "CARO:0000000" + ], + "predicate": "BFO:0000050", + "is_multivalued": false + }, + { + "subject": "GO:0005575", + "object": [ + "CARO:0000000" + ], + "predicate": "BFO:0000050", + "is_multivalued": false + }, + { + "subject": "GO:0005575", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002220", + "is_multivalued": true + }, + { + "subject": "GO:0005575", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0002131", + "is_multivalued": true + }, + { + "subject": "GO:0005575", + "object": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "predicate": "RO:0002490", + "is_multivalued": true + }, + { + "subject": "GO:0005575", + "object": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "predicate": "RO:0002491", + "is_multivalued": true + }, + { + "subject": "GO:0032991", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0001025", + "is_multivalued": false + }, + { + "subject": "GO:0032991", + "object": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "predicate": "RO:0002432", + "is_multivalued": false + }, + { + "subject": "GO:0032991", + "object": [ + "CHEBI:33695", + "GO:0032991" + ], + "predicate": "BFO:0000051", + "is_multivalued": true + }, + { + "subject": "GO:0032991", + "object": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "predicate": "RO:0002490", + "is_multivalued": true + }, + { + "subject": "GO:0032991", + "object": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "predicate": "RO:0002491", + "is_multivalued": true + }, + { + "subject": "CHEBI:36080", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0001025", + "is_multivalued": false + }, + { + "subject": "CHEBI:36080", + "object": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "predicate": "RO:0002432", + "is_multivalued": false + }, + { + "subject": "CHEBI:36080", + "object": [ + "GO:0032991" + ], + "predicate": "BFO:0000050", + "is_multivalued": false + }, + { + "subject": "CHEBI:36080", + "object": [ + "GO:0003674" + ], + "predicate": "RO:0002326", + "is_multivalued": false + }, + { + "subject": "CHEBI:33695", + "object": [ + "CARO:0000000" + ], + "predicate": "RO:0001025", + "is_multivalued": false + }, + { + "subject": "CHEBI:33695", + "object": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "predicate": "RO:0002432", + "is_multivalued": false + }, + { + "subject": "CHEBI:33695", + "object": [ + "GO:0032991" + ], + "predicate": "BFO:0000050", + "is_multivalued": false + }, + { + "subject": "CHEBI:33695", + "object": [ + "GO:0003674" + ], + "predicate": "RO:0002326", + "is_multivalued": false + } +] \ No newline at end of file diff --git a/shapes/json/shex_full.json b/shapes/json/shex_full.json new file mode 100644 index 0000000..93817bf --- /dev/null +++ b/shapes/json/shex_full.json @@ -0,0 +1,3713 @@ +{ + "type": "Schema", + "shapes": [ + { + "type": "Shape", + "id": "http://purl.obolibrary.org/obo/go/shapes/GoCamModel", + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://www.w3.org/2002/07/owl#Ontology" + ] + }, + "min": 1, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/dc/elements/1.1/contributor", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 1, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/dc/elements/1.1/date", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/dc/terms/created", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/dc/terms/dateAccepted", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/pav/providedBy", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 1, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://geneontology.org/lego/modelstate", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://geneontology.org/lego/templatestate", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "https://w3id.org/biolink/vocab/in_taxon", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/dc/elements/1.1/title", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#imports", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://www.geneontology.org/formats/oboInOwl#id", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#versionIRI", + "min": 0, + "max": -1 + } + ] + } + }, + { + "type": "Shape", + "id": "http://purl.obolibrary.org/obo/go/shapes/ProvenanceAnnotated", + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://purl.org/dc/elements/1.1/contributor", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/dc/elements/1.1/date", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/dc/terms/created", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/dc/terms/dateAccepted", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/pav/providedBy", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2004/02/skos/core#note", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": -1 + } + ] + } + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/ProvenanceAnnotated" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://www.w3.org/2002/07/owl#NamedIndividual" + ] + }, + "min": 0, + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "Every entity we care about is a named individual" + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://www.geneontology.org/formats/oboInOwl#hasDbXref", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#label", + "min": 0, + "max": 1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "the name" + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2004/02/skos/core#exactMatch", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://geneontology.org/lego/hint/layout/x", + "min": 0, + "max": 1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "X coordinate for node" + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://geneontology.org/lego/hint/layout/y", + "min": 0, + "max": 1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "Y coordinate for node" + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2004/02/skos/core#narrower", + "min": 0, + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "This entity (e.g. a node representing a pathway) represents a narrower (in any sense) concept then the target node. " + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2004/02/skos/core#broader", + "min": 0, + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "This entity (e.g. a node representing a pathway) represents a broader (in any sense) concept then the target node. " + } + } + ] + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "Every entity we care about is a named individual" + } + }, + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "the name" + } + }, + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "X coordinate for node" + } + }, + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "Y coordinate for node" + } + }, + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "This entity (e.g. a node representing a pathway) represents a narrower (in any sense) concept then the target node. " + } + }, + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "This entity (e.g. a node representing a pathway) represents a broader (in any sense) concept then the target node. " + } + }, + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "Default allowable metadata for GO-CAM entities" + } + } + ] + } + ] + }, + { + "type": "Shape", + "id": "http://purl.obolibrary.org/obo/go/shapes/OwlClass", + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://www.w3.org/2002/07/owl#Class" + ] + }, + "min": 1, + "max": 1 + } + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcessClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0008150" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/NegatedBiologicalProcessClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "bnode" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#complementOf", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcessClass" + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/OrganismClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/NCBITaxon_1" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/Organism", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/OrganismClass" + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "A member of a class of organisms defined in the NCBI taxonomy" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcessClass", + "http://purl.obolibrary.org/obo/go/shapes/NegatedBiologicalProcessClass" + ] + }, + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000050", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002233", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex", + "http://purl.obolibrary.org/obo/go/shapes/Organism" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002234", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000066", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002313", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/InformationBiomacromolecule", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002339", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002338", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002411", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002305", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002304", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002211", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002212", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002213", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0012003", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/Organism" + ] + }, + "min": 0, + "max": -1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "A biological process" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalStructureDevelopmentClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0048856" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalStructureDevelopment", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalStructureDevelopmentClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002296", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "an anatomical structure development class GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalStructureFormationInvolvedInMorphogenesisClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0048646" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalStructureFormationInvolvedInMorphogenesis", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalStructureFormationInvolvedInMorphogenesisClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002297", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "an anatomical structure formation involved in morphogenesis class GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalStructureMorphogenesisClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0009653" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalStructureMorphogenesis", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalStructureMorphogenesisClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002298", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "an anatomical structure morphogenesis class GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellDifferentiationClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0030154" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellDifferentiation", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellDifferentiationClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002315", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/NativeCell", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a cell differentiation GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellDivisionClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0051301" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellDivision", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellDivisionClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002233", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/NativeCell", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a cell division GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellFateCommitmentClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0045165" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellFateCommitment", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellFateCommitmentClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002348", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/NativeCell", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a cell fate commitment GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellFateDeterminationClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0001709" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellFateDetermination", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellFateDeterminationClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002349", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/NativeCell", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a cell fate determination GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellFateSpecificationClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0001708" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellFateSpecification", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellFateSpecificationClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002356", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/NativeCell", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a cell fate specification GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentAssemblyClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0022607" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentAssembly", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentAssemblyClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002588", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponent", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a cellular component assembly GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentDisassemblyClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0022411" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentDisassembly", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentDisassemblyClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002590", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponent", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a cellular component disassembly GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentOrganizationClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0016043" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentOrganization", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentOrganizationClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002592", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponent", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a cellular component organization GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/DevelopmentalMaturationClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0021700" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/DevelopmentalMaturation", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/DevelopmentalMaturationClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002299", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a developmental maturation GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/GrowthClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0040007" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/Growth", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/GrowthClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002343", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a growth GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/LocalizationClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0051179" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/Localization", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/LocalizationClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002313", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/InformationBiomacromolecule", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002339", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002338", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a localization GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/LocomotionClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0040011" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/Locomotion", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/LocomotionClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002565", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a locomotion GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/MovementOfCellOrSubcellularComponentClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0006928" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/MovementOfCellOrSubcellularComponent", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/MovementOfCellOrSubcellularComponentClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002565", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/NativeCell", + "http://purl.obolibrary.org/obo/go/shapes/CellularComponent" + ] + }, + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a movement of cell or subcellular component GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplexRemodelingClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0034367" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplexRemodeling", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplexRemodelingClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002591", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a protein containing complex remodeling GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/PatternSpecificationProcessClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0007389" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/PatternSpecificationProcess", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/PatternSpecificationProcessClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002356", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a pattern specification process GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/MolecularFunctionClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0003674" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/NegatedMolecularFunctionClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "bnode" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#complementOf", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/MolecularFunctionClass" + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/MolecularEventClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/go/extensions/reacto.owl#molecular_event" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/NegatedMolecularEventClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "bnode" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#complementOf", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/MolecularEventClass" + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularEventClass", + "http://purl.obolibrary.org/obo/go/shapes/NegatedMolecularEventClass" + ] + }, + "min": 1, + "max": 1 + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunctionClass", + "http://purl.obolibrary.org/obo/go/shapes/NegatedMolecularFunctionClass" + ] + }, + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002333", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/InformationBiomacromolecule", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": 1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000050", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "min": 0, + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000051", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000066", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002234", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002233", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002413", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002211", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002212", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002213", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002578", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002630", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002629", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002418", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0004046", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0004047", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002411", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002305", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002304", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002092", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalPhase", + "http://purl.obolibrary.org/obo/go/shapes/LifeCycleStage", + "http://purl.obolibrary.org/obo/go/shapes/PlantStructureDevelopmentStage" + ] + }, + "min": 0, + "max": -1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "A molecular function" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/TransporterActivityClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0005215" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/TransporterActivity", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/TransporterActivityClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002313", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/InformationBiomacromolecule", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002339", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponent", + "min": 0, + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002338", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponent", + "min": 0, + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a transporter activity GO molecular function or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/BiologicalPhaseClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0044848" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/BiologicalPhase", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalPhaseClass" + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a biological phase" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/LifeCycleStageClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/UBERON_0000105" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/LifeCycleStage", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/LifeCycleStageClass" + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a lifecycle stage" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/PlantStructureDevelopmentStageClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/PO_0009012" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/PlantStructureDevelopmentStage", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/PlantStructureDevelopmentStageClass" + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a plant structure developmental stage" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntityClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/CARO_0000000" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/NegatedAnatomicalEntityClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "bnode" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#complementOf", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntityClass" + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntityClass", + "http://purl.obolibrary.org/obo/go/shapes/NegatedAnatomicalEntityClass" + ] + } + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000050", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0001015", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/InformationBiomacromolecule", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "an anatomical entity" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/NativeCellClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/CL_0000003" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/NativeCell", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/NativeCellClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000050", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a native cell or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0005575" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/NegatedCellularComponentClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "bnode" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#complementOf", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponentClass" + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0005575" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/CellularComponent", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/CellularComponentClass", + "http://purl.obolibrary.org/obo/go/shapes/NegatedCellularComponentClass" + ] + }, + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000050", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002220", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002131", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002490", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "http://purl.obolibrary.org/obo/go/shapes/LifeCycleStage", + "http://purl.obolibrary.org/obo/go/shapes/PlantStructureDevelopmentStage" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002491", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "http://purl.obolibrary.org/obo/go/shapes/LifeCycleStage", + "http://purl.obolibrary.org/obo/go/shapes/PlantStructureDevelopmentStage" + ] + }, + "min": 0, + "max": -1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a cellular component" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplexClass" + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0001025", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002432", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ] + }, + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000051", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/InformationBiomacromolecule", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002490", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "http://purl.obolibrary.org/obo/go/shapes/LifeCycleStage", + "http://purl.obolibrary.org/obo/go/shapes/PlantStructureDevelopmentStage" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002491", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "http://purl.obolibrary.org/obo/go/shapes/LifeCycleStage", + "http://purl.obolibrary.org/obo/go/shapes/PlantStructureDevelopmentStage" + ] + }, + "min": 0, + "max": -1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a protein complex" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplexClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0032991" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntityClass", + "min": 1, + "max": -1 + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a molecular entity (a gene product, chemical, or complex typically)" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntityClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/CHEBI_24431" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/ProteinClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/CHEBI_36080" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/Protein", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/ProteinClass" + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0001025", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002432", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ] + }, + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000050", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002326", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a protein" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/InformationBiomacromoleculeClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/CHEBI_33695" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/InformationBiomacromolecule", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/InformationBiomacromoleculeClass", + "min": 1, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0001025", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002432", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ] + }, + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/BFO_0000050", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex", + "min": 0, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002326", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "an information biomacromolecule - e.g. a protein or RNA product" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/EvidenceClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/ECO_0000000" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/Evidence", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity", + { + "type": "Shape", + "extra": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/EvidenceClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.org/dc/elements/1.1/source", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://geneontology.org/lego/evidence-with", + "valueExpr": { + "type": "NodeConstraint", + "datatype": "http://www.w3.org/2001/XMLSchema#string" + }, + "min": 0, + "max": 1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "A kind of evidence" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/AnnotatedEdge", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "bnode" + }, + "http://purl.obolibrary.org/obo/go/shapes/ProvenanceAnnotated" + ] + }, + { + "type": "Shape", + "expression": { + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://www.w3.org/2002/07/owl#Axiom" + ] + } + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#annotatedSource", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity" + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#annotatedProperty", + "valueExpr": { + "type": "NodeConstraint", + "nodeKind": "iri" + } + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#annotatedTarget", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/GoCamEntity" + }, + { + "type": "TripleConstraint", + "predicate": "http://geneontology.org/lego/evidence", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/Evidence", + "min": 0, + "max": -1 + } + ] + } + } + ] + } + ] +} \ No newline at end of file From 82c38123e44213c24bfe11fc62e1415327b5a187 Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 18 Nov 2022 08:54:01 -0800 Subject: [PATCH 43/45] add linkml dumper and swap to python classes --- python/Makefile | 9 +- python/json_export.py | 45 +- python/poetry.lock | 1868 ++++++++++++++++++++++++++++++++++- python/pyproject.toml | 3 + python/shex_json_linkml.py | 174 +++- shapes/json/look_table.json | 15 + 6 files changed, 2013 insertions(+), 101 deletions(-) diff --git a/python/Makefile b/python/Makefile index 9a00c29..24b2fea 100644 --- a/python/Makefile +++ b/python/Makefile @@ -41,8 +41,11 @@ p-%: tests/data/p-%.ttl f-%: tests/data/f-%.ttl python ./gocam_validator.py $< && exit -1 || echo FAILED AS EXPECTED -gen-pydantic: - rm -f shex_json_linkml.py && gen-pydantic schema/shex_json_linkml.yaml > shex_json_linkml.py +gen-python: + rm -f shex_json_linkml.py && gen-python schema/shex_json_linkml.yaml > shex_json_linkml.py + +#gen-pydantic: +# rm -f shex_json_linkml.py && gen-pydantic schema/shex_json_linkml.yaml > shex_json_linkml.py gen-jsonschema: rm -f target/jsonschema/shex_json_linkml.json && gen-json-schema schema/shex_json_linkml.yaml > target/jsonschema/shex_json_linkml.json @@ -50,7 +53,7 @@ gen-jsonschema: gen-typescript: rm -f target/typescript/shex_json_linkml.ts && gen-typescript schema/shex_json_linkml.yaml > target/typescript/shex_json_linkml.ts -linkml: gen-pydantic gen-jsonschema gen-typescript +linkml: gen-python gen-jsonschema gen-typescript .PRECIOUS: tests/data/%.ttl diff --git a/python/json_export.py b/python/json_export.py index a1eb329..57169a9 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -1,6 +1,5 @@ from os import path import json -import requests from ontobio.rdfgen.assoc_rdfgen import prefix_context from prefixcommons.curie_util import contract_uri from pyshexc.parser_impl import generate_shexj @@ -8,8 +7,9 @@ from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExpr, \ shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf, Annotation from pyshex import PrefixLibrary -from shex_json_linkml import Association -from pprint import pprint +from shex_json_linkml import Association, Collection +from linkml_runtime.dumpers import JSONDumper +from linkml_runtime.loaders import JSONLoader from pathlib import Path @@ -24,7 +24,8 @@ def get_suffix(uri): class NoctuaFormShex: def __init__(self, shex_text): self.exclude_ext_pred = 'http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions' - self.json_shapes = [] + constraint_collection = Collection() + self.json_shapes = [] self.shex = generate_shexj.parse(shex_text) pref = PrefixLibrary(shex_text) @@ -76,22 +77,30 @@ def _load_triple_expr(self, subject:str, expr: Union[tripleExpr, tripleExprLabel objects = [] self._load_expr(subject, expr.valueExpr, objects) - goshape = {} #Association - goshape['subject']=subject - goshape['object']=objects - goshape['predicate']=predicate - + + exclude_from_extensions = "" if isinstance(expr.annotations, list): - goshape['exclude_from_extensions']=self._load_annotation(expr, self.exclude_ext_pred) - + exclude_from_extensions = self._load_annotation(expr, self.exclude_ext_pred) + + is_multivalued = False if expr.max is not None: - goshape["is_multivalued"] = True if expr.max == -1 else False - - self.json_shapes.append(goshape) + if expr.max == -1: + is_multivalued = True + + goshape = Association( + subject=subject, + object=objects, + predicate=predicate, + is_multivalued=is_multivalued, + is_required=False, + context="" + ) + if exclude_from_extensions != "": + goshape.exclude_from_extensions = exclude_from_extensions, + self.json_shapes.goshapes.append(goshape) return preds - def _load_annotation(self, expr: Union[tripleExpr, tripleExprLabel], annotation_key): for annotation in expr.annotations: if isinstance(annotation, Annotation) : @@ -120,9 +129,7 @@ def parse(self): self._load_expr(shape_name, expr) - if __name__ == "__main__": - base_path = Path(__file__).parent shex_fp = (base_path / "../shapes/go-cam-shapes.shex").resolve() @@ -137,7 +144,9 @@ def parse(self): nfShex.parse() with open(json_shapes_fp, "w") as sf: - json.dump(nfShex.json_shapes, sf, indent=2) + jd = JSONDumper() + Collection.goshapes = nfShex.json_shapes + jd.dumps(nfShex.json_shapes) with open(look_table_fp, "w") as sf: json.dump(nfShex.gen_lookup_table(), sf, indent=2) diff --git a/python/poetry.lock b/python/poetry.lock index bbe63ad..2d1926d 100644 --- a/python/poetry.lock +++ b/python/poetry.lock @@ -6,6 +6,44 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "attrs" +version = "22.1.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] +tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] + +[[package]] +name = "bidict" +version = "0.22.0" +description = "The bidirectional mapping library for Python." +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "bleach" +version = "5.0.1" +description = "An easy safelist-based HTML-sanitizing tool." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +six = ">=1.9.0" +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.2)"] +dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "mypy (==0.961)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)"] + [[package]] name = "cachier" version = "1.5.4" @@ -20,7 +58,7 @@ portalocker = "*" watchdog = "*" [package.extras] -test = ["pytest", "coverage", "pytest-cov", "birch", "pymongo", "dnspython", "pandas", "collective.checkdocs", "pygments"] +test = ["birch", "collective.checkdocs", "coverage", "dnspython", "pandas", "pygments", "pymongo", "pytest", "pytest-cov"] [[package]] name = "certifi" @@ -30,6 +68,17 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "cffi" +version = "1.15.1" +description = "Foreign Function Interface for Python calling C code." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pycparser = "*" + [[package]] name = "cfgraph" version = "0.2.1" @@ -58,7 +107,7 @@ optional = false python-versions = ">=3.6.0" [package.extras] -unicode_backport = ["unicodedata2"] +unicode-backport = ["unicodedata2"] [[package]] name = "click" @@ -79,6 +128,152 @@ category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +[[package]] +name = "commonmark" +version = "0.9.1" +description = "Python parser for the CommonMark Markdown spec" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] + +[[package]] +name = "contourpy" +version = "1.0.6" +description = "Python library for calculating contours of 2D quadrilateral grids" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +numpy = ">=1.16" + +[package.extras] +bokeh = ["bokeh", "selenium"] +docs = ["docutils (<0.18)", "sphinx (<=5.2.0)", "sphinx-rtd-theme"] +test = ["Pillow", "flake8", "isort", "matplotlib", "pytest"] +test-minimal = ["pytest"] +test-no-codebase = ["Pillow", "matplotlib", "pytest"] + +[[package]] +name = "cryptography" +version = "38.0.3" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.12" + +[package.extras] +docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] +docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] +sdist = ["setuptools-rust (>=0.11.4)"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] + +[[package]] +name = "cycler" +version = "0.11.0" +description = "Composable style cycles" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "dacite" +version = "1.6.0" +description = "Simple creation of data classes from dictionaries." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +dev = ["black", "coveralls", "mypy", "pylint", "pytest (>=5)", "pytest-cov"] + +[[package]] +name = "dataclasses" +version = "0.6" +description = "A backport of the dataclasses module for Python 3.6" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "deprecated" +version = "1.2.13" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest (<5)", "PyTest-Cov", "PyTest-Cov (<2.6)", "bump2version (<1)", "configparser (<5)", "importlib-metadata (<3)", "importlib-resources (<4)", "sphinx (<2)", "sphinxcontrib-websupport (<2)", "tox", "zipp (<2)"] + +[[package]] +name = "diskcache" +version = "5.4.0" +description = "Disk Cache -- Disk and file backed persistent cache." +category = "main" +optional = false +python-versions = ">=3" + +[[package]] +name = "docutils" +version = "0.19" +description = "Docutils -- Python Documentation Utilities" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "exceptiongroup" +version = "1.0.4" +description = "Backport of PEP 654 (exception groups)" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "fonttools" +version = "4.38.0" +description = "Tools to manipulate font files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=14.0.0)", "xattr", "zopfli (>=0.1.4)"] +graphite = ["lz4 (>=1.7.4.2)"] +interpolatable = ["munkres", "scipy"] +lxml = ["lxml (>=4.0,<5)"] +pathops = ["skia-pathops (>=0.5.0)"] +plot = ["matplotlib"] +repacker = ["uharfbuzz (>=0.23.0)"] +symfont = ["sympy"] +type1 = ["xattr"] +ufo = ["fs (>=2.2.0,<3)"] +unicode = ["unicodedata2 (>=14.0.0)"] +woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] + [[package]] name = "hbreader" version = "0.9.1" @@ -95,6 +290,30 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "importlib-metadata" +version = "5.0.0" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +perf = ["ipython"] +testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "isodate" version = "0.6.1" @@ -106,17 +325,303 @@ python-versions = "*" [package.dependencies] six = "*" +[[package]] +name = "jaraco-classes" +version = "3.2.3" +description = "Utility functions for Python class constructs" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +more-itertools = "*" + +[package.extras] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[[package]] +name = "jeepney" +version = "0.8.0" +description = "Low-level, pure Python DBus protocol wrapper." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["async-timeout", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "testpath", "trio"] +trio = ["async_generator", "trio"] + +[[package]] +name = "jsobject" +version = "0.10.2" +description = "Jsobject is simple implementation JavaScript-Style Objects in Python." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "json-flattener" +version = "0.1.9" +description = "Python library for denormalizing nested dicts or json objects to tables and back" +category = "main" +optional = false +python-versions = ">=3.7.0" + +[package.dependencies] +click = "*" +pyyaml = "*" + [[package]] name = "jsonasobj" -version = "2.0.1" +version = "1.3.1" description = "JSON as python objects" category = "main" optional = false +python-versions = "*" + +[[package]] +name = "jsonasobj2" +version = "1.0.4" +description = "JSON as python objects - version 2" +category = "main" +optional = false python-versions = ">=3.6" [package.dependencies] hbreader = "*" +[[package]] +name = "jsonpath-rw" +version = "1.4.0" +description = "A robust and significantly extended implementation of JSONPath for Python, with a clear AST for metaprogramming." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +decorator = "*" +ply = "*" +six = "*" + +[[package]] +name = "jsonpickle" +version = "2.2.0" +description = "Python library for serializing any arbitrary object graph into JSON" +category = "main" +optional = false +python-versions = ">=2.7" + +[package.extras] +docs = ["jaraco.packaging (>=3.2)", "rst.linker (>=1.9)", "sphinx"] +testing = ["ecdsa", "enum34", "feedparser", "jsonlib", "numpy", "pandas", "pymongo", "pytest (>=3.5,!=3.7.3)", "pytest-black-multipy", "pytest-checkdocs (>=1.2.3)", "pytest-cov", "pytest-flake8 (<1.1.0)", "pytest-flake8 (>=1.1.1)", "scikit-learn", "sqlalchemy"] +testing-libs = ["simplejson", "ujson", "yajl"] + +[[package]] +name = "jsonschema" +version = "4.17.0" +description = "An implementation of JSON Schema validation for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=17.4.0" +pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "keyring" +version = "23.11.0" +description = "Store and access your passwords safely." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +importlib-metadata = {version = ">=4.11.4", markers = "python_version < \"3.12\""} +"jaraco.classes" = "*" +jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} +pywin32-ctypes = {version = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1", markers = "sys_platform == \"win32\""} +SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[[package]] +name = "kiwisolver" +version = "1.4.4" +description = "A fast implementation of the Cassowary constraint solver" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "linkml-runtime" +version = "1.3.7" +description = "Runtime environment for LinkML, the Linked open data modeling language" +category = "main" +optional = false +python-versions = ">=3.7.1,<4.0.0" + +[package.dependencies] +click = "*" +deprecated = "*" +hbreader = "*" +json-flattener = ">=0.1.9" +jsonasobj2 = ">=1.0.4,<2.0.0" +jsonschema = ">=3.2.0" +prefixcommons = ">=0.1.12" +pyyaml = "*" +rdflib = ">=6.0.0" +requests = "*" + +[[package]] +name = "marshmallow" +version = "3.19.0" +description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +packaging = ">=17.0" + +[package.extras] +dev = ["flake8 (==5.0.4)", "flake8-bugbear (==22.10.25)", "mypy (==0.990)", "pre-commit (>=2.4,<3.0)", "pytest", "pytz", "simplejson", "tox"] +docs = ["alabaster (==0.7.12)", "autodocsumm (==0.2.9)", "sphinx (==5.3.0)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"] +lint = ["flake8 (==5.0.4)", "flake8-bugbear (==22.10.25)", "mypy (==0.990)", "pre-commit (>=2.4,<3.0)"] +tests = ["pytest", "pytz", "simplejson"] + +[[package]] +name = "matplotlib" +version = "3.6.2" +description = "Python plotting package" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +contourpy = ">=1.0.1" +cycler = ">=0.10" +fonttools = ">=4.22.0" +kiwisolver = ">=1.0.1" +numpy = ">=1.19" +packaging = ">=20.0" +pillow = ">=6.2.0" +pyparsing = ">=2.2.1" +python-dateutil = ">=2.7" +setuptools_scm = ">=7" + +[[package]] +name = "more-itertools" +version = "9.0.0" +description = "More routines for operating on iterables, beyond itertools" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "networkx" +version = "2.8.8" +description = "Python package for creating and manipulating graphs and networks" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.extras] +default = ["matplotlib (>=3.4)", "numpy (>=1.19)", "pandas (>=1.3)", "scipy (>=1.8)"] +developer = ["mypy (>=0.982)", "pre-commit (>=2.20)"] +doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.2)", "pydata-sphinx-theme (>=0.11)", "sphinx (>=5.2)", "sphinx-gallery (>=0.11)", "texext (>=0.6.6)"] +extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.9)", "sympy (>=1.10)"] +test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] + +[[package]] +name = "numpy" +version = "1.23.4" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" +optional = false +python-versions = ">=3.8" + +[[package]] +name = "ontobio" +version = "2.8.3" +description = "Library for working with OBO Library Ontologies and associations" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +bidict = ">=0.20.0" +chardet = "*" +click = "*" +dacite = ">=1.6.0" +dataclasses = "*" +diskcache = ">=4.0.0" +jsobject = ">=0.0" +jsonpath-rw = ">=0.0" +jsonpickle = ">=0.0" +marshmallow = ">=3.0.0b11,<4.0" +matplotlib = ">=2.0.0" +networkx = ">=2.3" +pandas = ">=0.0" +pip = ">=9.0.1" +plotly = ">=2.0.7" +prefixcommons = ">=0.1.9" +pydotplus = ">=0.0" +pyparsing = "2.4.7" +PyShEx = ">=0.7.11" +pysolr = ">=3.6.0" +pytest = ">=0.0" +pytest-logging = ">=0.0" +python-dateutil = "*" +pyyaml = "*" +requests = ">=0.0" +scipy = ">=1.2.0" +SPARQLWrapper = ">=1.8.0" +twine = "*" +wheel = ">0.25.0" +yamldown = ">=0.1.7" + +[package.extras] +dev = ["plotly"] +test = ["pytest"] + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pandas" +version = "1.5.1" +description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +numpy = [ + {version = ">=1.20.3", markers = "python_version < \"3.10\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, +] +python-dateutil = ">=2.8.1" +pytz = ">=2020.1" + +[package.extras] +test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] + [[package]] name = "pathtools" version = "0.1.2" @@ -125,6 +630,68 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "pillow" +version = "9.3.0" +description = "Python Imaging Library (Fork)" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "pip" +version = "22.3.1" +description = "The PyPA recommended tool for installing Python packages." +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "pkginfo" +version = "1.8.3" +description = "Query metadatdata from sdists / bdists / installed packages." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.extras] +testing = ["coverage", "nose"] + +[[package]] +name = "plotly" +version = "5.11.0" +description = "An open-source, interactive data visualization library for Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +tenacity = ">=6.2.0" + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "ply" +version = "3.11" +description = "Python Lex & Yacc" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "portalocker" version = "2.6.0" @@ -137,9 +704,68 @@ python-versions = ">=3.5" pywin32 = {version = ">=226", markers = "platform_system == \"Windows\""} [package.extras] -docs = ["sphinx (>=1.7.1)"] -redis = ["redis"] -tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-timeout (>=2.1.0)", "sphinx (>=3.0.3)", "pytest-mypy (>=0.8.0)", "redis"] +docs = ["sphinx (>=1.7.1)"] +redis = ["redis"] +tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=3.0.3)"] + +[[package]] +name = "prefixcommons" +version = "0.1.12" +description = "A python API for working with ID prefixes" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +click = ">=8.1.3,<9.0.0" +pytest-logging = ">=2015.11.4,<2016.0.0" +PyYAML = ">=6.0,<7.0" +requests = ">=2.28.1,<3.0.0" + +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pydantic" +version = "1.10.2" +description = "Data validation and settings management using python type hints" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +typing-extensions = ">=4.1.0" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + +[[package]] +name = "pydotplus" +version = "2.0.2" +description = "Python interface to Graphviz's Dot language" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pyparsing = ">=2.0.1" + +[[package]] +name = "pygments" +version = "2.13.0" +description = "Pygments is a syntax highlighting package written in Python." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +plugins = ["importlib-metadata"] [[package]] name = "pyjsg" @@ -155,14 +781,19 @@ jsonasobj = ">=1.2.1" [[package]] name = "pyparsing" -version = "3.0.9" -description = "pyparsing module - Classes and methods to define and execute parsing grammars" +version = "2.4.7" +description = "Python parsing module" category = "main" optional = false -python-versions = ">=3.6.8" +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -[package.extras] -diagrams = ["railroad-diagrams", "jinja2"] +[[package]] +name = "pyrsistent" +version = "0.19.2" +description = "Persistent/Functional/Immutable data structures" +category = "main" +optional = false +python-versions = ">=3.7" [[package]] name = "pyshex" @@ -199,14 +830,94 @@ pyjsg = ">=0.11.10" rdflib-shim = "*" shexjsg = ">=0.8.1" +[[package]] +name = "pysolr" +version = "3.9.0" +description = "Lightweight Python client for Apache Solr" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +requests = ">=2.9.1" + +[package.extras] +solrcloud = ["kazoo (>=2.5.0)"] + +[[package]] +name = "pytest" +version = "7.2.0" +description = "pytest: simple powerful testing with Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-logging" +version = "2015.11.4" +description = "Configures logging and allows tweaking the log level with a py.test flag" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pytest = ">=2.8.1" + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2022.6" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "pywin32" -version = "304" +version = "305" description = "Python for Window Extensions" category = "main" optional = false python-versions = "*" +[[package]] +name = "pywin32-ctypes" +version = "0.2.0" +description = "" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "rdflib" version = "6.2.0" @@ -218,11 +929,12 @@ python-versions = ">=3.7" [package.dependencies] isodate = "*" pyparsing = "*" +setuptools = "*" [package.extras] berkeleydb = ["berkeleydb"] -dev = ["black (==22.6.0)", "flake8", "isort", "mypy", "pep8-naming", "types-setuptools", "flakeheaven"] -docs = ["myst-parser", "sphinx (<6)", "sphinxcontrib-apidoc", "sphinxcontrib-kroki", "sphinx-autodoc-typehints"] +dev = ["black (==22.6.0)", "flake8", "flakeheaven", "isort", "mypy", "pep8-naming", "types-setuptools"] +docs = ["myst-parser", "sphinx (<6)", "sphinx-autodoc-typehints", "sphinxcontrib-apidoc", "sphinxcontrib-kroki"] html = ["html5lib"] networkx = ["networkx"] tests = ["html5lib", "pytest", "pytest-cov"] @@ -250,6 +962,22 @@ python-versions = ">=3.7" rdflib = ">=5.0.0" rdflib-jsonld = "0.6.1" +[[package]] +name = "readme-renderer" +version = "37.3" +description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +bleach = ">=2.1.0" +docutils = ">=0.13.1" +Pygments = ">=2.5.1" + +[package.extras] +md = ["cmarkgfm (>=0.8.0)"] + [[package]] name = "requests" version = "2.28.1" @@ -266,7 +994,103 @@ urllib3 = ">=1.21.1,<1.27" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "requests-toolbelt" +version = "0.10.1" +description = "A utility belt for advanced users of python-requests" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +name = "rfc3986" +version = "2.0.0" +description = "Validating URI References per RFC 3986" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +idna2008 = ["idna"] + +[[package]] +name = "rich" +version = "12.6.0" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "main" +optional = false +python-versions = ">=3.6.3,<4.0.0" + +[package.dependencies] +commonmark = ">=0.9.0,<0.10.0" +pygments = ">=2.6.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] + +[[package]] +name = "scipy" +version = "1.9.3" +description = "Fundamental algorithms for scientific computing in Python" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +numpy = ">=1.18.5,<1.26.0" + +[package.extras] +dev = ["flake8", "mypy", "pycodestyle", "typing_extensions"] +doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-panels (>=0.5.2)", "sphinx-tabs"] +test = ["asv", "gmpy2", "mpmath", "pytest", "pytest-cov", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] + +[[package]] +name = "secretstorage" +version = "3.3.3" +description = "Python bindings to FreeDesktop.org Secret Service API" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cryptography = ">=2.0" +jeepney = ">=0.6" + +[[package]] +name = "setuptools" +version = "65.5.1" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "setuptools-scm" +version = "7.0.5" +description = "the blessed package to manage your versions by scm tags" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +packaging = ">=20.0" +setuptools = "*" +tomli = ">=1.0.0" +typing-extensions = "*" + +[package.extras] +test = ["pytest (>=6.2)", "virtualenv (>20)"] +toml = ["setuptools (>=42)"] [[package]] name = "shexjsg" @@ -312,11 +1136,57 @@ python-versions = ">=3.7" rdflib = ">=6.1.1" [package.extras] -dev = ["setuptools (>=3.7.1)", "mypy (>=0.931)", "pandas (>=1.3.5)", "pandas-stubs (>=1.2.0.48)"] +dev = ["mypy (>=0.931)", "pandas (>=1.3.5)", "pandas-stubs (>=1.2.0.48)", "setuptools (>=3.7.1)"] docs = ["sphinx (<5)", "sphinx-rtd-theme"] keepalive = ["keepalive (>=0.5)"] pandas = ["pandas (>=1.3.5)"] +[[package]] +name = "tenacity" +version = "8.1.0" +description = "Retry code until it succeeds" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +doc = ["reno", "sphinx", "tornado (>=4.5)"] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "twine" +version = "4.0.1" +description = "Collection of utilities for publishing packages on PyPI" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +importlib-metadata = ">=3.6" +keyring = ">=15.1" +pkginfo = ">=1.8.1" +readme-renderer = ">=35.0" +requests = ">=2.20" +requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0" +rfc3986 = ">=1.4.0" +rich = ">=12.0.0" +urllib3 = ">=1.26.0" + +[[package]] +name = "typing-extensions" +version = "4.4.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" +optional = false +python-versions = ">=3.7" + [[package]] name = "urllib3" version = "1.26.12" @@ -326,8 +1196,8 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" [package.extras] -brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -341,17 +1211,151 @@ python-versions = ">=3.6" [package.extras] watchmedo = ["PyYAML (>=3.10)"] +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "wheel" +version = "0.38.4" +description = "A built-package format for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest (>=3.0.0)"] + +[[package]] +name = "wrapt" +version = "1.14.1" +description = "Module for decorators, wrappers and monkey patching." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "yamldown" +version = "0.1.8" +description = "Python library for loading and dumping \"yamldown\" (markdown with embedded yaml) files." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pyYaml = "*" + +[[package]] +name = "zipp" +version = "3.10.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "025b6b7707c86088fc98e6ca83e8c22eb1783e625ac21752e7ed419f01ba55cb" +content-hash = "7fc37c4f3e5c5b538ae635f51ee32ea7d13365970387ad91366c83e8fba0b4ca" [metadata.files] antlr4-python3-runtime = [ {file = "antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b"}, ] -cachier = [] -certifi = [] +attrs = [ + {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, + {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, +] +bidict = [ + {file = "bidict-0.22.0-py3-none-any.whl", hash = "sha256:415126d23a0c81e1a8c584a8fb1f6905ea090c772571803aeee0a2242e8e7ba0"}, + {file = "bidict-0.22.0.tar.gz", hash = "sha256:5c826b3e15e97cc6e615de295756847c282a79b79c5430d3bfc909b1ac9f5bd8"}, +] +bleach = [ + {file = "bleach-5.0.1-py3-none-any.whl", hash = "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a"}, + {file = "bleach-5.0.1.tar.gz", hash = "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c"}, +] +cachier = [ + {file = "cachier-1.5.4-py2.py3-none-any.whl", hash = "sha256:0465a451fd7845afb4dc31d6d4b4c1391ff78b83172a6d3057f6ba98c0f682eb"}, + {file = "cachier-1.5.4.tar.gz", hash = "sha256:368ef452605e1d96e9909f2c51816f30ca4c91ffb0cdfef38610af8da7359296"}, +] +certifi = [ + {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, + {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, +] +cffi = [ + {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, + {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, + {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, + {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, + {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, + {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, + {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, + {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, + {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, + {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, + {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, + {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, + {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, + {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, + {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, + {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, + {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, + {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, + {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, +] cfgraph = [ {file = "CFGraph-0.2.1.tar.gz", hash = "sha256:b57fe7044a10b8ff65aa3a8a8ddc7d4cd77bf511b42e57289cd52cbc29f8fe74"}, ] @@ -359,34 +1363,585 @@ chardet = [ {file = "chardet-5.0.0-py3-none-any.whl", hash = "sha256:d3e64f022d254183001eccc5db4040520c0f23b1a3f33d6413e099eb7f126557"}, {file = "chardet-5.0.0.tar.gz", hash = "sha256:0368df2bfd78b5fc20572bb4e9bb7fb53e2c094f60ae9993339e8671d0afb8aa"}, ] -charset-normalizer = [] +charset-normalizer = [ + {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, + {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, +] click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] -colorama = [] +colorama = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] +commonmark = [ + {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, + {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, +] +contourpy = [ + {file = "contourpy-1.0.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:613c665529899b5d9fade7e5d1760111a0b011231277a0d36c49f0d3d6914bd6"}, + {file = "contourpy-1.0.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78ced51807ccb2f45d4ea73aca339756d75d021069604c2fccd05390dc3c28eb"}, + {file = "contourpy-1.0.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3b1bd7577c530eaf9d2bc52d1a93fef50ac516a8b1062c3d1b9bcec9ebe329b"}, + {file = "contourpy-1.0.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8834c14b8c3dd849005e06703469db9bf96ba2d66a3f88ecc539c9a8982e0ee"}, + {file = "contourpy-1.0.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4052a8a4926d4468416fc7d4b2a7b2a3e35f25b39f4061a7e2a3a2748c4fc48"}, + {file = "contourpy-1.0.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c0e1308307a75e07d1f1b5f0f56b5af84538a5e9027109a7bcf6cb47c434e72"}, + {file = "contourpy-1.0.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fc4e7973ed0e1fe689435842a6e6b330eb7ccc696080dda9a97b1a1b78e41db"}, + {file = "contourpy-1.0.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:08e8d09d96219ace6cb596506fb9b64ea5f270b2fb9121158b976d88871fcfd1"}, + {file = "contourpy-1.0.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f33da6b5d19ad1bb5e7ad38bb8ba5c426d2178928bc2b2c44e8823ea0ecb6ff3"}, + {file = "contourpy-1.0.6-cp310-cp310-win32.whl", hash = "sha256:12a7dc8439544ed05c6553bf026d5e8fa7fad48d63958a95d61698df0e00092b"}, + {file = "contourpy-1.0.6-cp310-cp310-win_amd64.whl", hash = "sha256:eadad75bf91897f922e0fb3dca1b322a58b1726a953f98c2e5f0606bd8408621"}, + {file = "contourpy-1.0.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:913bac9d064cff033cf3719e855d4f1db9f1c179e0ecf3ba9fdef21c21c6a16a"}, + {file = "contourpy-1.0.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46deb310a276cc5c1fd27958e358cce68b1e8a515fa5a574c670a504c3a3fe30"}, + {file = "contourpy-1.0.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b64f747e92af7da3b85631a55d68c45a2d728b4036b03cdaba4bd94bcc85bd6f"}, + {file = "contourpy-1.0.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50627bf76abb6ba291ad08db583161939c2c5fab38c38181b7833423ab9c7de3"}, + {file = "contourpy-1.0.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:358f6364e4873f4d73360b35da30066f40387dd3c427a3e5432c6b28dd24a8fa"}, + {file = "contourpy-1.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c78bfbc1a7bff053baf7e508449d2765964d67735c909b583204e3240a2aca45"}, + {file = "contourpy-1.0.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e43255a83835a129ef98f75d13d643844d8c646b258bebd11e4a0975203e018f"}, + {file = "contourpy-1.0.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:375d81366afd547b8558c4720337218345148bc2fcffa3a9870cab82b29667f2"}, + {file = "contourpy-1.0.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b98c820608e2dca6442e786817f646d11057c09a23b68d2b3737e6dcb6e4a49b"}, + {file = "contourpy-1.0.6-cp311-cp311-win32.whl", hash = "sha256:0e4854cc02006ad6684ce092bdadab6f0912d131f91c2450ce6dbdea78ee3c0b"}, + {file = "contourpy-1.0.6-cp311-cp311-win_amd64.whl", hash = "sha256:d2eff2af97ea0b61381828b1ad6cd249bbd41d280e53aea5cccd7b2b31b8225c"}, + {file = "contourpy-1.0.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5b117d29433fc8393b18a696d794961464e37afb34a6eeb8b2c37b5f4128a83e"}, + {file = "contourpy-1.0.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:341330ed19074f956cb20877ad8d2ae50e458884bfa6a6df3ae28487cc76c768"}, + {file = "contourpy-1.0.6-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:371f6570a81dfdddbb837ba432293a63b4babb942a9eb7aaa699997adfb53278"}, + {file = "contourpy-1.0.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9447c45df407d3ecb717d837af3b70cfef432138530712263730783b3d016512"}, + {file = "contourpy-1.0.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:730c27978a0003b47b359935478b7d63fd8386dbb2dcd36c1e8de88cbfc1e9de"}, + {file = "contourpy-1.0.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:da1ef35fd79be2926ba80fbb36327463e3656c02526e9b5b4c2b366588b74d9a"}, + {file = "contourpy-1.0.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:cd2bc0c8f2e8de7dd89a7f1c10b8844e291bca17d359373203ef2e6100819edd"}, + {file = "contourpy-1.0.6-cp37-cp37m-win32.whl", hash = "sha256:3a1917d3941dd58732c449c810fa7ce46cc305ce9325a11261d740118b85e6f3"}, + {file = "contourpy-1.0.6-cp37-cp37m-win_amd64.whl", hash = "sha256:06ca79e1efbbe2df795822df2fa173d1a2b38b6e0f047a0ec7903fbca1d1847e"}, + {file = "contourpy-1.0.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e626cefff8491bce356221c22af5a3ea528b0b41fbabc719c00ae233819ea0bf"}, + {file = "contourpy-1.0.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dbe6fe7a1166b1ddd7b6d887ea6fa8389d3f28b5ed3f73a8f40ece1fc5a3d340"}, + {file = "contourpy-1.0.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e13b31d1b4b68db60b3b29f8e337908f328c7f05b9add4b1b5c74e0691180109"}, + {file = "contourpy-1.0.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a79d239fc22c3b8d9d3de492aa0c245533f4f4c7608e5749af866949c0f1b1b9"}, + {file = "contourpy-1.0.6-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e8e686a6db92a46111a1ee0ee6f7fbfae4048f0019de207149f43ac1812cf95"}, + {file = "contourpy-1.0.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acd2bd02f1a7adff3a1f33e431eb96ab6d7987b039d2946a9b39fe6fb16a1036"}, + {file = "contourpy-1.0.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:03d1b9c6b44a9e30d554654c72be89af94fab7510b4b9f62356c64c81cec8b7d"}, + {file = "contourpy-1.0.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b48d94386f1994db7c70c76b5808c12e23ed7a4ee13693c2fc5ab109d60243c0"}, + {file = "contourpy-1.0.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:208bc904889c910d95aafcf7be9e677726df9ef71e216780170dbb7e37d118fa"}, + {file = "contourpy-1.0.6-cp38-cp38-win32.whl", hash = "sha256:444fb776f58f4906d8d354eb6f6ce59d0a60f7b6a720da6c1ccb839db7c80eb9"}, + {file = "contourpy-1.0.6-cp38-cp38-win_amd64.whl", hash = "sha256:9bc407a6af672da20da74823443707e38ece8b93a04009dca25856c2d9adadb1"}, + {file = "contourpy-1.0.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:aa4674cf3fa2bd9c322982644967f01eed0c91bb890f624e0e0daf7a5c3383e9"}, + {file = "contourpy-1.0.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6f56515e7c6fae4529b731f6c117752247bef9cdad2b12fc5ddf8ca6a50965a5"}, + {file = "contourpy-1.0.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:344cb3badf6fc7316ad51835f56ac387bdf86c8e1b670904f18f437d70da4183"}, + {file = "contourpy-1.0.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b1e66346acfb17694d46175a0cea7d9036f12ed0c31dfe86f0f405eedde2bdd"}, + {file = "contourpy-1.0.6-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8468b40528fa1e15181cccec4198623b55dcd58306f8815a793803f51f6c474a"}, + {file = "contourpy-1.0.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dedf4c64185a216c35eb488e6f433297c660321275734401760dafaeb0ad5c2"}, + {file = "contourpy-1.0.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:494efed2c761f0f37262815f9e3c4bb9917c5c69806abdee1d1cb6611a7174a0"}, + {file = "contourpy-1.0.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:75a2e638042118118ab39d337da4c7908c1af74a8464cad59f19fbc5bbafec9b"}, + {file = "contourpy-1.0.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a628bba09ba72e472bf7b31018b6281fd4cc903f0888049a3724afba13b6e0b8"}, + {file = "contourpy-1.0.6-cp39-cp39-win32.whl", hash = "sha256:e1739496c2f0108013629aa095cc32a8c6363444361960c07493818d0dea2da4"}, + {file = "contourpy-1.0.6-cp39-cp39-win_amd64.whl", hash = "sha256:a457ee72d9032e86730f62c5eeddf402e732fdf5ca8b13b41772aa8ae13a4563"}, + {file = "contourpy-1.0.6-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d912f0154a20a80ea449daada904a7eb6941c83281a9fab95de50529bfc3a1da"}, + {file = "contourpy-1.0.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4081918147fc4c29fad328d5066cfc751da100a1098398742f9f364be63803fc"}, + {file = "contourpy-1.0.6-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0537cc1195245bbe24f2913d1f9211b8f04eb203de9044630abd3664c6cc339c"}, + {file = "contourpy-1.0.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcd556c8fc37a342dd636d7eef150b1399f823a4462f8c968e11e1ebeabee769"}, + {file = "contourpy-1.0.6-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f6ca38dd8d988eca8f07305125dec6f54ac1c518f1aaddcc14d08c01aebb6efc"}, + {file = "contourpy-1.0.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c1baa49ab9fedbf19d40d93163b7d3e735d9cd8d5efe4cce9907902a6dad391f"}, + {file = "contourpy-1.0.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:211dfe2bd43bf5791d23afbe23a7952e8ac8b67591d24be3638cabb648b3a6eb"}, + {file = "contourpy-1.0.6-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c38c6536c2d71ca2f7e418acaf5bca30a3af7f2a2fa106083c7d738337848dbe"}, + {file = "contourpy-1.0.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b1ee48a130da4dd0eb8055bbab34abf3f6262957832fd575e0cab4979a15a41"}, + {file = "contourpy-1.0.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5641927cc5ae66155d0c80195dc35726eae060e7defc18b7ab27600f39dd1fe7"}, + {file = "contourpy-1.0.6-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7ee394502026d68652c2824348a40bf50f31351a668977b51437131a90d777ea"}, + {file = "contourpy-1.0.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b97454ed5b1368b66ed414c754cba15b9750ce69938fc6153679787402e4cdf"}, + {file = "contourpy-1.0.6-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0236875c5a0784215b49d00ebbe80c5b6b5d5244b3655a36dda88105334dea17"}, + {file = "contourpy-1.0.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c593aeff7a0171f639da92cb86d24954bbb61f8a1b530f74eb750a14685832"}, + {file = "contourpy-1.0.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9b0e7fe7f949fb719b206548e5cde2518ffb29936afa4303d8a1c4db43dcb675"}, + {file = "contourpy-1.0.6.tar.gz", hash = "sha256:6e459ebb8bb5ee4c22c19cc000174f8059981971a33ce11e17dddf6aca97a142"}, +] +cryptography = [ + {file = "cryptography-38.0.3-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320"}, + {file = "cryptography-38.0.3-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722"}, + {file = "cryptography-38.0.3-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f"}, + {file = "cryptography-38.0.3-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828"}, + {file = "cryptography-38.0.3-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959"}, + {file = "cryptography-38.0.3-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2"}, + {file = "cryptography-38.0.3-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c"}, + {file = "cryptography-38.0.3-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0"}, + {file = "cryptography-38.0.3-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748"}, + {file = "cryptography-38.0.3-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146"}, + {file = "cryptography-38.0.3-cp36-abi3-win32.whl", hash = "sha256:7f836217000342d448e1c9a342e9163149e45d5b5eca76a30e84503a5a96cab0"}, + {file = "cryptography-38.0.3-cp36-abi3-win_amd64.whl", hash = "sha256:c46837ea467ed1efea562bbeb543994c2d1f6e800785bd5a2c98bc096f5cb220"}, + {file = "cryptography-38.0.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06fc3cc7b6f6cca87bd56ec80a580c88f1da5306f505876a71c8cfa7050257dd"}, + {file = "cryptography-38.0.3-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:65535bc550b70bd6271984d9863a37741352b4aad6fb1b3344a54e6950249b55"}, + {file = "cryptography-38.0.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5e89468fbd2fcd733b5899333bc54d0d06c80e04cd23d8c6f3e0542358c6060b"}, + {file = "cryptography-38.0.3-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36"}, + {file = "cryptography-38.0.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d"}, + {file = "cryptography-38.0.3-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7"}, + {file = "cryptography-38.0.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249"}, + {file = "cryptography-38.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6addc3b6d593cd980989261dc1cce38263c76954d758c3c94de51f1e010c9a50"}, + {file = "cryptography-38.0.3-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0"}, + {file = "cryptography-38.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8"}, + {file = "cryptography-38.0.3-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436"}, + {file = "cryptography-38.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548"}, + {file = "cryptography-38.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:785e4056b5a8b28f05a533fab69febf5004458e20dad7e2e13a3120d8ecec75a"}, + {file = "cryptography-38.0.3.tar.gz", hash = "sha256:bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd"}, +] +cycler = [ + {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, + {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, +] +dacite = [ + {file = "dacite-1.6.0-py3-none-any.whl", hash = "sha256:4331535f7aabb505c732fa4c3c094313fc0a1d5ea19907bf4726a7819a68b93f"}, + {file = "dacite-1.6.0.tar.gz", hash = "sha256:d48125ed0a0352d3de9f493bf980038088f45f3f9d7498f090b50a847daaa6df"}, +] +dataclasses = [ + {file = "dataclasses-0.6-py3-none-any.whl", hash = "sha256:454a69d788c7fda44efd71e259be79577822f5e3f53f029a22d08004e951dc9f"}, + {file = "dataclasses-0.6.tar.gz", hash = "sha256:6988bd2b895eef432d562370bb707d540f32f7360ab13da45340101bc2307d84"}, +] +decorator = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] +deprecated = [ + {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, + {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, +] +diskcache = [ + {file = "diskcache-5.4.0-py3-none-any.whl", hash = "sha256:af3ec6d7f167bbef7b6c33d9ee22f86d3e8f2dd7131eb7c4703d8d91ccdc0cc4"}, + {file = "diskcache-5.4.0.tar.gz", hash = "sha256:8879eb8c9b4a2509a5e633d2008634fb2b0b35c2b36192d89655dbde02419644"}, +] +docutils = [ + {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, + {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, +] +exceptiongroup = [ + {file = "exceptiongroup-1.0.4-py3-none-any.whl", hash = "sha256:542adf9dea4055530d6e1279602fa5cb11dab2395fa650b8674eaec35fc4a828"}, + {file = "exceptiongroup-1.0.4.tar.gz", hash = "sha256:bd14967b79cd9bdb54d97323216f8fdf533e278df937aa2a90089e7d6e06e5ec"}, +] +fonttools = [ + {file = "fonttools-4.38.0-py3-none-any.whl", hash = "sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb"}, + {file = "fonttools-4.38.0.zip", hash = "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1"}, +] hbreader = [ {file = "hbreader-0.9.1-py3-none-any.whl", hash = "sha256:9a6e76c9d1afc1b977374a5dc430a1ebb0ea0488205546d4678d6e31cc5f6801"}, {file = "hbreader-0.9.1.tar.gz", hash = "sha256:d2c132f8ba6276d794c66224c3297cec25c8079d0a4cf019c061611e0a3b94fa"}, ] -idna = [] +idna = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] +importlib-metadata = [ + {file = "importlib_metadata-5.0.0-py3-none-any.whl", hash = "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43"}, + {file = "importlib_metadata-5.0.0.tar.gz", hash = "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab"}, +] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] isodate = [ {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, ] +jaraco-classes = [ + {file = "jaraco.classes-3.2.3-py3-none-any.whl", hash = "sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158"}, + {file = "jaraco.classes-3.2.3.tar.gz", hash = "sha256:89559fa5c1d3c34eff6f631ad80bb21f378dbcbb35dd161fd2c6b93f5be2f98a"}, +] +jeepney = [ + {file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"}, + {file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"}, +] +jsobject = [ + {file = "jsobject-0.10.2.tar.gz", hash = "sha256:405053613c8dee281af42424ace8a6f56de0b44f014b1e08dc4738aa3dba07e9"}, +] +json-flattener = [ + {file = "json_flattener-0.1.9-py3-none-any.whl", hash = "sha256:6b027746f08bf37a75270f30c6690c7149d5f704d8af1740c346a3a1236bc941"}, + {file = "json_flattener-0.1.9.tar.gz", hash = "sha256:84cf8523045ffb124301a602602201665fcb003a171ece87e6f46ed02f7f0c15"}, +] jsonasobj = [ - {file = "jsonasobj-2.0.1-py3-none-any.whl", hash = "sha256:221af946bbe4171505e81ea1f0c31d652e69c68e02fff742e37543abe08ff7d9"}, - {file = "jsonasobj-2.0.1.tar.gz", hash = "sha256:e87c47ec5ec3db65a212e15236fdefc38dd01bdcf563b0d53021095066cd5963"}, + {file = "jsonasobj-1.3.1-py3-none-any.whl", hash = "sha256:b9e329dc1ceaae7cf5d5b214684a0b100e0dad0be6d5bbabac281ec35ddeca65"}, + {file = "jsonasobj-1.3.1.tar.gz", hash = "sha256:d52e0544a54a08f6ea3f77fa3387271e3648655e0eace2f21e825c26370e44a2"}, +] +jsonasobj2 = [ + {file = "jsonasobj2-1.0.4-py3-none-any.whl", hash = "sha256:12e86f86324d54fcf60632db94ea74488d5314e3da554c994fe1e2c6f29acb79"}, + {file = "jsonasobj2-1.0.4.tar.gz", hash = "sha256:f50b1668ef478004aa487b2d2d094c304e5cb6b79337809f4a1f2975cc7fbb4e"}, +] +jsonpath-rw = [ + {file = "jsonpath-rw-1.4.0.tar.gz", hash = "sha256:05c471281c45ae113f6103d1268ec7a4831a2e96aa80de45edc89b11fac4fbec"}, +] +jsonpickle = [ + {file = "jsonpickle-2.2.0-py2.py3-none-any.whl", hash = "sha256:de7f2613818aa4f234138ca11243d6359ff83ae528b2185efdd474f62bcf9ae1"}, + {file = "jsonpickle-2.2.0.tar.gz", hash = "sha256:7b272918b0554182e53dc340ddd62d9b7f902fec7e7b05620c04f3ccef479a0e"}, +] +jsonschema = [ + {file = "jsonschema-4.17.0-py3-none-any.whl", hash = "sha256:f660066c3966db7d6daeaea8a75e0b68237a48e51cf49882087757bb59916248"}, + {file = "jsonschema-4.17.0.tar.gz", hash = "sha256:5bfcf2bca16a087ade17e02b282d34af7ccd749ef76241e7f9bd7c0cb8a9424d"}, +] +keyring = [ + {file = "keyring-23.11.0-py3-none-any.whl", hash = "sha256:3dd30011d555f1345dec2c262f0153f2f0ca6bca041fb1dc4588349bb4c0ac1e"}, + {file = "keyring-23.11.0.tar.gz", hash = "sha256:ad192263e2cdd5f12875dedc2da13534359a7e760e77f8d04b50968a821c2361"}, +] +kiwisolver = [ + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6"}, + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c"}, + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32"}, + {file = "kiwisolver-1.4.4-cp310-cp310-win32.whl", hash = "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408"}, + {file = "kiwisolver-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4"}, + {file = "kiwisolver-1.4.4-cp311-cp311-win32.whl", hash = "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e"}, + {file = "kiwisolver-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-win32.whl", hash = "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c"}, + {file = "kiwisolver-1.4.4-cp38-cp38-win32.whl", hash = "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191"}, + {file = "kiwisolver-1.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9"}, + {file = "kiwisolver-1.4.4-cp39-cp39-win32.whl", hash = "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea"}, + {file = "kiwisolver-1.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b"}, + {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"}, +] +linkml-runtime = [ + {file = "linkml-runtime-1.3.7.tar.gz", hash = "sha256:0ad5f6a16222e057280cb9049b789ffef60f128a01e228fb02b17df0cfb7df14"}, + {file = "linkml_runtime-1.3.7-py3-none-any.whl", hash = "sha256:d5c2b879d08de46678efcb2d3d54d7b83c910e34c652520ef02db51b1486260a"}, +] +marshmallow = [ + {file = "marshmallow-3.19.0-py3-none-any.whl", hash = "sha256:93f0958568da045b0021ec6aeb7ac37c81bfcccbb9a0e7ed8559885070b3a19b"}, + {file = "marshmallow-3.19.0.tar.gz", hash = "sha256:90032c0fd650ce94b6ec6dc8dfeb0e3ff50c144586462c389b81a07205bedb78"}, +] +matplotlib = [ + {file = "matplotlib-3.6.2-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:8d0068e40837c1d0df6e3abf1cdc9a34a6d2611d90e29610fa1d2455aeb4e2e5"}, + {file = "matplotlib-3.6.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:252957e208c23db72ca9918cb33e160c7833faebf295aaedb43f5b083832a267"}, + {file = "matplotlib-3.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d50e8c1e571ee39b5dfbc295c11ad65988879f68009dd281a6e1edbc2ff6c18c"}, + {file = "matplotlib-3.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d840adcad7354be6f2ec28d0706528b0026e4c3934cc6566b84eac18633eab1b"}, + {file = "matplotlib-3.6.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78ec3c3412cf277e6252764ee4acbdbec6920cc87ad65862272aaa0e24381eee"}, + {file = "matplotlib-3.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9347cc6822f38db2b1d1ce992f375289670e595a2d1c15961aacbe0977407dfc"}, + {file = "matplotlib-3.6.2-cp310-cp310-win32.whl", hash = "sha256:e0bbee6c2a5bf2a0017a9b5e397babb88f230e6f07c3cdff4a4c4bc75ed7c617"}, + {file = "matplotlib-3.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:8a0ae37576ed444fe853709bdceb2be4c7df6f7acae17b8378765bd28e61b3ae"}, + {file = "matplotlib-3.6.2-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:5ecfc6559132116dedfc482d0ad9df8a89dc5909eebffd22f3deb684132d002f"}, + {file = "matplotlib-3.6.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9f335e5625feb90e323d7e3868ec337f7b9ad88b5d633f876e3b778813021dab"}, + {file = "matplotlib-3.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2604c6450f9dd2c42e223b1f5dca9643a23cfecc9fde4a94bb38e0d2693b136"}, + {file = "matplotlib-3.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5afe0a7ea0e3a7a257907060bee6724a6002b7eec55d0db16fd32409795f3e1"}, + {file = "matplotlib-3.6.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca0e7a658fbafcddcaefaa07ba8dae9384be2343468a8e011061791588d839fa"}, + {file = "matplotlib-3.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32d29c8c26362169c80c5718ce367e8c64f4dd068a424e7110df1dd2ed7bd428"}, + {file = "matplotlib-3.6.2-cp311-cp311-win32.whl", hash = "sha256:5024b8ed83d7f8809982d095d8ab0b179bebc07616a9713f86d30cf4944acb73"}, + {file = "matplotlib-3.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:52c2bdd7cd0bf9d5ccdf9c1816568fd4ccd51a4d82419cc5480f548981b47dd0"}, + {file = "matplotlib-3.6.2-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:8a8dbe2cb7f33ff54b16bb5c500673502a35f18ac1ed48625e997d40c922f9cc"}, + {file = "matplotlib-3.6.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:380d48c15ec41102a2b70858ab1dedfa33eb77b2c0982cb65a200ae67a48e9cb"}, + {file = "matplotlib-3.6.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0844523dfaaff566e39dbfa74e6f6dc42e92f7a365ce80929c5030b84caa563a"}, + {file = "matplotlib-3.6.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7f716b6af94dc1b6b97c46401774472f0867e44595990fe80a8ba390f7a0a028"}, + {file = "matplotlib-3.6.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74153008bd24366cf099d1f1e83808d179d618c4e32edb0d489d526523a94d9f"}, + {file = "matplotlib-3.6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec"}, + {file = "matplotlib-3.6.2-cp38-cp38-win32.whl", hash = "sha256:d0e9ac04065a814d4cf2c6791a2ad563f739ae3ae830d716d54245c2b96fead6"}, + {file = "matplotlib-3.6.2-cp38-cp38-win_amd64.whl", hash = "sha256:8a9d899953c722b9afd7e88dbefd8fb276c686c3116a43c577cfabf636180558"}, + {file = "matplotlib-3.6.2-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0"}, + {file = "matplotlib-3.6.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3964934731fd7a289a91d315919cf757f293969a4244941ab10513d2351b4e83"}, + {file = "matplotlib-3.6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:168093410b99f647ba61361b208f7b0d64dde1172b5b1796d765cd243cadb501"}, + {file = "matplotlib-3.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e16dcaecffd55b955aa5e2b8a804379789c15987e8ebd2f32f01398a81e975b"}, + {file = "matplotlib-3.6.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83dc89c5fd728fdb03b76f122f43b4dcee8c61f1489e232d9ad0f58020523e1c"}, + {file = "matplotlib-3.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:795ad83940732b45d39b82571f87af0081c120feff2b12e748d96bb191169e33"}, + {file = "matplotlib-3.6.2-cp39-cp39-win32.whl", hash = "sha256:19d61ee6414c44a04addbe33005ab1f87539d9f395e25afcbe9a3c50ce77c65c"}, + {file = "matplotlib-3.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:5ba73aa3aca35d2981e0b31230d58abb7b5d7ca104e543ae49709208d8ce706a"}, + {file = "matplotlib-3.6.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1836f366272b1557a613f8265db220eb8dd883202bbbabe01bad5a4eadfd0c95"}, + {file = "matplotlib-3.6.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eda9d1b43f265da91fb9ae10d6922b5a986e2234470a524e6b18f14095b20d2"}, + {file = "matplotlib-3.6.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4"}, + {file = "matplotlib-3.6.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3cef89888a466228fc4e4b2954e740ce8e9afde7c4315fdd18caa1b8de58ca17"}, + {file = "matplotlib-3.6.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:54fa9fe27f5466b86126ff38123261188bed568c1019e4716af01f97a12fe812"}, + {file = "matplotlib-3.6.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e68be81cd8c22b029924b6d0ee814c337c0e706b8d88495a617319e5dd5441c3"}, + {file = "matplotlib-3.6.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0ca2c60d3966dfd6608f5f8c49b8a0fcf76de6654f2eda55fc6ef038d5a6f27"}, + {file = "matplotlib-3.6.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4426c74761790bff46e3d906c14c7aab727543293eed5a924300a952e1a3a3c1"}, + {file = "matplotlib-3.6.2.tar.gz", hash = "sha256:b03fd10a1709d0101c054883b550f7c4c5e974f751e2680318759af005964990"}, +] +more-itertools = [ + {file = "more-itertools-9.0.0.tar.gz", hash = "sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab"}, + {file = "more_itertools-9.0.0-py3-none-any.whl", hash = "sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41"}, +] +networkx = [ + {file = "networkx-2.8.8-py3-none-any.whl", hash = "sha256:e435dfa75b1d7195c7b8378c3859f0445cd88c6b0375c181ed66823a9ceb7524"}, + {file = "networkx-2.8.8.tar.gz", hash = "sha256:230d388117af870fce5647a3c52401fcf753e94720e6ea6b4197a5355648885e"}, +] +numpy = [ + {file = "numpy-1.23.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:95d79ada05005f6f4f337d3bb9de8a7774f259341c70bc88047a1f7b96a4bcb2"}, + {file = "numpy-1.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:926db372bc4ac1edf81cfb6c59e2a881606b409ddc0d0920b988174b2e2a767f"}, + {file = "numpy-1.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c237129f0e732885c9a6076a537e974160482eab8f10db6292e92154d4c67d71"}, + {file = "numpy-1.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8365b942f9c1a7d0f0dc974747d99dd0a0cdfc5949a33119caf05cb314682d3"}, + {file = "numpy-1.23.4-cp310-cp310-win32.whl", hash = "sha256:2341f4ab6dba0834b685cce16dad5f9b6606ea8a00e6da154f5dbded70fdc4dd"}, + {file = "numpy-1.23.4-cp310-cp310-win_amd64.whl", hash = "sha256:d331afac87c92373826af83d2b2b435f57b17a5c74e6268b79355b970626e329"}, + {file = "numpy-1.23.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:488a66cb667359534bc70028d653ba1cf307bae88eab5929cd707c761ff037db"}, + {file = "numpy-1.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce03305dd694c4873b9429274fd41fc7eb4e0e4dea07e0af97a933b079a5814f"}, + {file = "numpy-1.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8981d9b5619569899666170c7c9748920f4a5005bf79c72c07d08c8a035757b0"}, + {file = "numpy-1.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a70a7d3ce4c0e9284e92285cba91a4a3f5214d87ee0e95928f3614a256a1488"}, + {file = "numpy-1.23.4-cp311-cp311-win32.whl", hash = "sha256:5e13030f8793e9ee42f9c7d5777465a560eb78fa7e11b1c053427f2ccab90c79"}, + {file = "numpy-1.23.4-cp311-cp311-win_amd64.whl", hash = "sha256:7607b598217745cc40f751da38ffd03512d33ec06f3523fb0b5f82e09f6f676d"}, + {file = "numpy-1.23.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7ab46e4e7ec63c8a5e6dbf5c1b9e1c92ba23a7ebecc86c336cb7bf3bd2fb10e5"}, + {file = "numpy-1.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8aae2fb3180940011b4862b2dd3756616841c53db9734b27bb93813cd79fce6"}, + {file = "numpy-1.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c053d7557a8f022ec823196d242464b6955a7e7e5015b719e76003f63f82d0f"}, + {file = "numpy-1.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0882323e0ca4245eb0a3d0a74f88ce581cc33aedcfa396e415e5bba7bf05f68"}, + {file = "numpy-1.23.4-cp38-cp38-win32.whl", hash = "sha256:dada341ebb79619fe00a291185bba370c9803b1e1d7051610e01ed809ef3a4ba"}, + {file = "numpy-1.23.4-cp38-cp38-win_amd64.whl", hash = "sha256:0fe563fc8ed9dc4474cbf70742673fc4391d70f4363f917599a7fa99f042d5a8"}, + {file = "numpy-1.23.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c67b833dbccefe97cdd3f52798d430b9d3430396af7cdb2a0c32954c3ef73894"}, + {file = "numpy-1.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f76025acc8e2114bb664294a07ede0727aa75d63a06d2fae96bf29a81747e4a7"}, + {file = "numpy-1.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12ac457b63ec8ded85d85c1e17d85efd3c2b0967ca39560b307a35a6703a4735"}, + {file = "numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95de7dc7dc47a312f6feddd3da2500826defdccbc41608d0031276a24181a2c0"}, + {file = "numpy-1.23.4-cp39-cp39-win32.whl", hash = "sha256:f2f390aa4da44454db40a1f0201401f9036e8d578a25f01a6e237cea238337ef"}, + {file = "numpy-1.23.4-cp39-cp39-win_amd64.whl", hash = "sha256:f260da502d7441a45695199b4e7fd8ca87db659ba1c78f2bbf31f934fe76ae0e"}, + {file = "numpy-1.23.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:61be02e3bf810b60ab74e81d6d0d36246dbfb644a462458bb53b595791251911"}, + {file = "numpy-1.23.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:296d17aed51161dbad3c67ed6d164e51fcd18dbcd5dd4f9d0a9c6055dce30810"}, + {file = "numpy-1.23.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4d52914c88b4930dafb6c48ba5115a96cbab40f45740239d9f4159c4ba779962"}, + {file = "numpy-1.23.4.tar.gz", hash = "sha256:ed2cc92af0efad20198638c69bb0fc2870a58dabfba6eb722c933b48556c686c"}, +] +ontobio = [ + {file = "ontobio-2.8.3-py3-none-any.whl", hash = "sha256:30f2af5658b39564251d3ebead53e541079e9ed30a8f43ae740018ca4525ca2e"}, + {file = "ontobio-2.8.3.tar.gz", hash = "sha256:d449c357fad76074c85b24ec1494b8702f29880158a721e5967bdac5093fa9bb"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pandas = [ + {file = "pandas-1.5.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0a78e05ec09731c5b3bd7a9805927ea631fe6f6cb06f0e7c63191a9a778d52b4"}, + {file = "pandas-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5b0c970e2215572197b42f1cff58a908d734503ea54b326412c70d4692256391"}, + {file = "pandas-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f340331a3f411910adfb4bbe46c2ed5872d9e473a783d7f14ecf49bc0869c594"}, + {file = "pandas-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c709f4700573deb2036d240d140934df7e852520f4a584b2a8d5443b71f54d"}, + {file = "pandas-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32e3d9f65606b3f6e76555bfd1d0b68d94aff0929d82010b791b6254bf5a4b96"}, + {file = "pandas-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a52419d9ba5906db516109660b114faf791136c94c1a636ed6b29cbfff9187ee"}, + {file = "pandas-1.5.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:66a1ad667b56e679e06ba73bb88c7309b3f48a4c279bd3afea29f65a766e9036"}, + {file = "pandas-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:36aa1f8f680d7584e9b572c3203b20d22d697c31b71189322f16811d4ecfecd3"}, + {file = "pandas-1.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bcf1a82b770b8f8c1e495b19a20d8296f875a796c4fe6e91da5ef107f18c5ecb"}, + {file = "pandas-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c25e5c16ee5c0feb6cf9d982b869eec94a22ddfda9aa2fbed00842cbb697624"}, + {file = "pandas-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:932d2d7d3cab44cfa275601c982f30c2d874722ef6396bb539e41e4dc4618ed4"}, + {file = "pandas-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:eb7e8cf2cf11a2580088009b43de84cabbf6f5dae94ceb489f28dba01a17cb77"}, + {file = "pandas-1.5.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:cb2a9cf1150302d69bb99861c5cddc9c25aceacb0a4ef5299785d0f5389a3209"}, + {file = "pandas-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:81f0674fa50b38b6793cd84fae5d67f58f74c2d974d2cb4e476d26eee33343d0"}, + {file = "pandas-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:17da7035d9e6f9ea9cdc3a513161f8739b8f8489d31dc932bc5a29a27243f93d"}, + {file = "pandas-1.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:669c8605dba6c798c1863157aefde959c1796671ffb342b80fcb80a4c0bc4c26"}, + {file = "pandas-1.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:683779e5728ac9138406c59a11e09cd98c7d2c12f0a5fc2b9c5eecdbb4a00075"}, + {file = "pandas-1.5.1-cp38-cp38-win32.whl", hash = "sha256:ddf46b940ef815af4e542697eaf071f0531449407a7607dd731bf23d156e20a7"}, + {file = "pandas-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:db45b94885000981522fb92349e6b76f5aee0924cc5315881239c7859883117d"}, + {file = "pandas-1.5.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:927e59c694e039c75d7023465d311277a1fc29ed7236b5746e9dddf180393113"}, + {file = "pandas-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e675f8fe9aa6c418dc8d3aac0087b5294c1a4527f1eacf9fe5ea671685285454"}, + {file = "pandas-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04e51b01d5192499390c0015630975f57836cc95c7411415b499b599b05c0c96"}, + {file = "pandas-1.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cee0c74e93ed4f9d39007e439debcaadc519d7ea5c0afc3d590a3a7b2edf060"}, + {file = "pandas-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b156a971bc451c68c9e1f97567c94fd44155f073e3bceb1b0d195fd98ed12048"}, + {file = "pandas-1.5.1-cp39-cp39-win32.whl", hash = "sha256:05c527c64ee02a47a24031c880ee0ded05af0623163494173204c5b72ddce658"}, + {file = "pandas-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:6bb391659a747cf4f181a227c3e64b6d197100d53da98dcd766cc158bdd9ec68"}, + {file = "pandas-1.5.1.tar.gz", hash = "sha256:249cec5f2a5b22096440bd85c33106b6102e0672204abd2d5c014106459804ee"}, +] +pathtools = [ + {file = "pathtools-0.1.2.tar.gz", hash = "sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0"}, +] +pillow = [ + {file = "Pillow-9.3.0-1-cp37-cp37m-win32.whl", hash = "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74"}, + {file = "Pillow-9.3.0-1-cp37-cp37m-win_amd64.whl", hash = "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa"}, + {file = "Pillow-9.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2"}, + {file = "Pillow-9.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3"}, + {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe"}, + {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8"}, + {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c"}, + {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c"}, + {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de"}, + {file = "Pillow-9.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7"}, + {file = "Pillow-9.3.0-cp310-cp310-win32.whl", hash = "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91"}, + {file = "Pillow-9.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b"}, + {file = "Pillow-9.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20"}, + {file = "Pillow-9.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4"}, + {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1"}, + {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c"}, + {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193"}, + {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812"}, + {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c"}, + {file = "Pillow-9.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11"}, + {file = "Pillow-9.3.0-cp311-cp311-win32.whl", hash = "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c"}, + {file = "Pillow-9.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef"}, + {file = "Pillow-9.3.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9"}, + {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2"}, + {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f"}, + {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72"}, + {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b"}, + {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee"}, + {file = "Pillow-9.3.0-cp37-cp37m-win32.whl", hash = "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29"}, + {file = "Pillow-9.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4"}, + {file = "Pillow-9.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4"}, + {file = "Pillow-9.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f"}, + {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502"}, + {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20"}, + {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040"}, + {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07"}, + {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636"}, + {file = "Pillow-9.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32"}, + {file = "Pillow-9.3.0-cp38-cp38-win32.whl", hash = "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0"}, + {file = "Pillow-9.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc"}, + {file = "Pillow-9.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad"}, + {file = "Pillow-9.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535"}, + {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3"}, + {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c"}, + {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b"}, + {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd"}, + {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c"}, + {file = "Pillow-9.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448"}, + {file = "Pillow-9.3.0-cp39-cp39-win32.whl", hash = "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48"}, + {file = "Pillow-9.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2"}, + {file = "Pillow-9.3.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228"}, + {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b"}, + {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02"}, + {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e"}, + {file = "Pillow-9.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb"}, + {file = "Pillow-9.3.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c"}, + {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627"}, + {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699"}, + {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65"}, + {file = "Pillow-9.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8"}, + {file = "Pillow-9.3.0.tar.gz", hash = "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f"}, +] +pip = [ + {file = "pip-22.3.1-py3-none-any.whl", hash = "sha256:908c78e6bc29b676ede1c4d57981d490cb892eb45cd8c214ab6298125119e077"}, + {file = "pip-22.3.1.tar.gz", hash = "sha256:65fd48317359f3af8e593943e6ae1506b66325085ea64b706a998c6e83eeaf38"}, +] +pkginfo = [ + {file = "pkginfo-1.8.3-py2.py3-none-any.whl", hash = "sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594"}, + {file = "pkginfo-1.8.3.tar.gz", hash = "sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c"}, +] +plotly = [ + {file = "plotly-5.11.0-py2.py3-none-any.whl", hash = "sha256:52fd74b08aa4fd5a55b9d3034a30dbb746e572d7ed84897422f927fdf687ea5f"}, + {file = "plotly-5.11.0.tar.gz", hash = "sha256:4efef479c2ec1d86dcdac8405b6ca70ca65649a77408e39a7e84a1ea2db6c787"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +ply = [ + {file = "ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce"}, + {file = "ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"}, +] +portalocker = [ + {file = "portalocker-2.6.0-py2.py3-none-any.whl", hash = "sha256:102ed1f2badd8dec9af3d732ef70e94b215b85ba45a8d7ff3c0003f19b442f4e"}, + {file = "portalocker-2.6.0.tar.gz", hash = "sha256:964f6830fb42a74b5d32bce99ed37d8308c1d7d44ddf18f3dd89f4680de97b39"}, +] +prefixcommons = [ + {file = "prefixcommons-0.1.12-py3-none-any.whl", hash = "sha256:16dbc0a1f775e003c724f19a694fcfa3174608f5c8b0e893d494cf8098ac7f8b"}, + {file = "prefixcommons-0.1.12.tar.gz", hash = "sha256:22c4e2d37b63487b3ab48f0495b70f14564cb346a15220f23919eb0c1851f69f"}, +] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] +pydantic = [ + {file = "pydantic-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb6ad4489af1bac6955d38ebcb95079a836af31e4c4f74aba1ca05bb9f6027bd"}, + {file = "pydantic-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1f5a63a6dfe19d719b1b6e6106561869d2efaca6167f84f5ab9347887d78b98"}, + {file = "pydantic-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352aedb1d71b8b0736c6d56ad2bd34c6982720644b0624462059ab29bd6e5912"}, + {file = "pydantic-1.10.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19b3b9ccf97af2b7519c42032441a891a5e05c68368f40865a90eb88833c2559"}, + {file = "pydantic-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e9069e1b01525a96e6ff49e25876d90d5a563bc31c658289a8772ae186552236"}, + {file = "pydantic-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:355639d9afc76bcb9b0c3000ddcd08472ae75318a6eb67a15866b87e2efa168c"}, + {file = "pydantic-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:ae544c47bec47a86bc7d350f965d8b15540e27e5aa4f55170ac6a75e5f73b644"}, + {file = "pydantic-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a4c805731c33a8db4b6ace45ce440c4ef5336e712508b4d9e1aafa617dc9907f"}, + {file = "pydantic-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d49f3db871575e0426b12e2f32fdb25e579dea16486a26e5a0474af87cb1ab0a"}, + {file = "pydantic-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37c90345ec7dd2f1bcef82ce49b6235b40f282b94d3eec47e801baf864d15525"}, + {file = "pydantic-1.10.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b5ba54d026c2bd2cb769d3468885f23f43710f651688e91f5fb1edcf0ee9283"}, + {file = "pydantic-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05e00dbebbe810b33c7a7362f231893183bcc4251f3f2ff991c31d5c08240c42"}, + {file = "pydantic-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2d0567e60eb01bccda3a4df01df677adf6b437958d35c12a3ac3e0f078b0ee52"}, + {file = "pydantic-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:c6f981882aea41e021f72779ce2a4e87267458cc4d39ea990729e21ef18f0f8c"}, + {file = "pydantic-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4aac8e7103bf598373208f6299fa9a5cfd1fc571f2d40bf1dd1955a63d6eeb5"}, + {file = "pydantic-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a7b66c3f499108b448f3f004801fcd7d7165fb4200acb03f1c2402da73ce4c"}, + {file = "pydantic-1.10.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bedf309630209e78582ffacda64a21f96f3ed2e51fbf3962d4d488e503420254"}, + {file = "pydantic-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9300fcbebf85f6339a02c6994b2eb3ff1b9c8c14f502058b5bf349d42447dcf5"}, + {file = "pydantic-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:216f3bcbf19c726b1cc22b099dd409aa371f55c08800bcea4c44c8f74b73478d"}, + {file = "pydantic-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:dd3f9a40c16daf323cf913593083698caee97df2804aa36c4b3175d5ac1b92a2"}, + {file = "pydantic-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b97890e56a694486f772d36efd2ba31612739bc6f3caeee50e9e7e3ebd2fdd13"}, + {file = "pydantic-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9cabf4a7f05a776e7793e72793cd92cc865ea0e83a819f9ae4ecccb1b8aa6116"}, + {file = "pydantic-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06094d18dd5e6f2bbf93efa54991c3240964bb663b87729ac340eb5014310624"}, + {file = "pydantic-1.10.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc78cc83110d2f275ec1970e7a831f4e371ee92405332ebfe9860a715f8336e1"}, + {file = "pydantic-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ee433e274268a4b0c8fde7ad9d58ecba12b069a033ecc4645bb6303c062d2e9"}, + {file = "pydantic-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7c2abc4393dea97a4ccbb4ec7d8658d4e22c4765b7b9b9445588f16c71ad9965"}, + {file = "pydantic-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:0b959f4d8211fc964772b595ebb25f7652da3f22322c007b6fed26846a40685e"}, + {file = "pydantic-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c33602f93bfb67779f9c507e4d69451664524389546bacfe1bee13cae6dc7488"}, + {file = "pydantic-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5760e164b807a48a8f25f8aa1a6d857e6ce62e7ec83ea5d5c5a802eac81bad41"}, + {file = "pydantic-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6eb843dcc411b6a2237a694f5e1d649fc66c6064d02b204a7e9d194dff81eb4b"}, + {file = "pydantic-1.10.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b8795290deaae348c4eba0cebb196e1c6b98bdbe7f50b2d0d9a4a99716342fe"}, + {file = "pydantic-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e0bedafe4bc165ad0a56ac0bd7695df25c50f76961da29c050712596cf092d6d"}, + {file = "pydantic-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e05aed07fa02231dbf03d0adb1be1d79cabb09025dd45aa094aa8b4e7b9dcda"}, + {file = "pydantic-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:c1ba1afb396148bbc70e9eaa8c06c1716fdddabaf86e7027c5988bae2a829ab6"}, + {file = "pydantic-1.10.2-py3-none-any.whl", hash = "sha256:1b6ee725bd6e83ec78b1aa32c5b1fa67a3a65badddde3976bca5fe4568f27709"}, + {file = "pydantic-1.10.2.tar.gz", hash = "sha256:91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410"}, +] +pydotplus = [ + {file = "pydotplus-2.0.2.tar.gz", hash = "sha256:91e85e9ee9b85d2391ead7d635e3d9c7f5f44fd60a60e59b13e2403fa66505c4"}, +] +pygments = [ + {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, + {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, ] -pathtools = [] -portalocker = [] pyjsg = [ {file = "PyJSG-0.11.10-py3-none-any.whl", hash = "sha256:10af60ff42219be7e85bf7f11c19b648715b0b29eb2ddbd269e87069a7c3f26d"}, {file = "PyJSG-0.11.10.tar.gz", hash = "sha256:4bd6e3ff2833fa2b395bbe803a2d72a5f0bab5b7285bccd0da1a1bc0aee88bfa"}, ] pyparsing = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, + {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, + {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, +] +pyrsistent = [ + {file = "pyrsistent-0.19.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a"}, + {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a"}, + {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed"}, + {file = "pyrsistent-0.19.2-cp310-cp310-win32.whl", hash = "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41"}, + {file = "pyrsistent-0.19.2-cp310-cp310-win_amd64.whl", hash = "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425"}, + {file = "pyrsistent-0.19.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712"}, + {file = "pyrsistent-0.19.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78"}, + {file = "pyrsistent-0.19.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6"}, + {file = "pyrsistent-0.19.2-cp37-cp37m-win32.whl", hash = "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2"}, + {file = "pyrsistent-0.19.2-cp37-cp37m-win_amd64.whl", hash = "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73"}, + {file = "pyrsistent-0.19.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308"}, + {file = "pyrsistent-0.19.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584"}, + {file = "pyrsistent-0.19.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb"}, + {file = "pyrsistent-0.19.2-cp38-cp38-win32.whl", hash = "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a"}, + {file = "pyrsistent-0.19.2-cp38-cp38-win_amd64.whl", hash = "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab"}, + {file = "pyrsistent-0.19.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770"}, + {file = "pyrsistent-0.19.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95"}, + {file = "pyrsistent-0.19.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e"}, + {file = "pyrsistent-0.19.2-cp39-cp39-win32.whl", hash = "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b"}, + {file = "pyrsistent-0.19.2-cp39-cp39-win_amd64.whl", hash = "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291"}, + {file = "pyrsistent-0.19.2-py3-none-any.whl", hash = "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0"}, + {file = "pyrsistent-0.19.2.tar.gz", hash = "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2"}, ] pyshex = [ {file = "PyShEx-0.8.1-py3-none-any.whl", hash = "sha256:6da1b10123e191abf8dcb6bf3e54aa3e1fcf771df5d1a0ed453217c8900c8e6a"}, @@ -396,23 +1951,90 @@ pyshexc = [ {file = "PyShExC-0.9.1-py2.py3-none-any.whl", hash = "sha256:efc55ed5cb2453e9df569b03e282505e96bb06597934288f3b23dd980ef10028"}, {file = "PyShExC-0.9.1.tar.gz", hash = "sha256:35a9975d4b9afeb20ef710fb6680871756381d0c39fbb5470b3b506581a304d3"}, ] +pysolr = [ + {file = "pysolr-3.9.0.tar.gz", hash = "sha256:6ef05feb87c614894243eddc62e9b0a6134a889c159ae868655cf6cd749545e6"}, +] +pytest = [ + {file = "pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71"}, + {file = "pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59"}, +] +pytest-logging = [ + {file = "pytest-logging-2015.11.4.tar.gz", hash = "sha256:cec5c85ecf18aab7b2ead5498a31b9f758680ef5a902b9054ab3f2bdbb77c896"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] +pytz = [ + {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"}, + {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"}, +] pywin32 = [ - {file = "pywin32-304-cp310-cp310-win32.whl", hash = "sha256:3c7bacf5e24298c86314f03fa20e16558a4e4138fc34615d7de4070c23e65af3"}, - {file = "pywin32-304-cp310-cp310-win_amd64.whl", hash = "sha256:4f32145913a2447736dad62495199a8e280a77a0ca662daa2332acf849f0be48"}, - {file = "pywin32-304-cp310-cp310-win_arm64.whl", hash = "sha256:d3ee45adff48e0551d1aa60d2ec066fec006083b791f5c3527c40cd8aefac71f"}, - {file = "pywin32-304-cp311-cp311-win32.whl", hash = "sha256:30c53d6ce44c12a316a06c153ea74152d3b1342610f1b99d40ba2795e5af0269"}, - {file = "pywin32-304-cp311-cp311-win_amd64.whl", hash = "sha256:7ffa0c0fa4ae4077e8b8aa73800540ef8c24530057768c3ac57c609f99a14fd4"}, - {file = "pywin32-304-cp311-cp311-win_arm64.whl", hash = "sha256:cbbe34dad39bdbaa2889a424d28752f1b4971939b14b1bb48cbf0182a3bcfc43"}, - {file = "pywin32-304-cp36-cp36m-win32.whl", hash = "sha256:be253e7b14bc601718f014d2832e4c18a5b023cbe72db826da63df76b77507a1"}, - {file = "pywin32-304-cp36-cp36m-win_amd64.whl", hash = "sha256:de9827c23321dcf43d2f288f09f3b6d772fee11e809015bdae9e69fe13213988"}, - {file = "pywin32-304-cp37-cp37m-win32.whl", hash = "sha256:f64c0377cf01b61bd5e76c25e1480ca8ab3b73f0c4add50538d332afdf8f69c5"}, - {file = "pywin32-304-cp37-cp37m-win_amd64.whl", hash = "sha256:bb2ea2aa81e96eee6a6b79d87e1d1648d3f8b87f9a64499e0b92b30d141e76df"}, - {file = "pywin32-304-cp38-cp38-win32.whl", hash = "sha256:94037b5259701988954931333aafd39cf897e990852115656b014ce72e052e96"}, - {file = "pywin32-304-cp38-cp38-win_amd64.whl", hash = "sha256:ead865a2e179b30fb717831f73cf4373401fc62fbc3455a0889a7ddac848f83e"}, - {file = "pywin32-304-cp39-cp39-win32.whl", hash = "sha256:25746d841201fd9f96b648a248f731c1dec851c9a08b8e33da8b56148e4c65cc"}, - {file = "pywin32-304-cp39-cp39-win_amd64.whl", hash = "sha256:d24a3382f013b21aa24a5cfbfad5a2cd9926610c0affde3e8ab5b3d7dbcf4ac9"}, -] -rdflib = [] + {file = "pywin32-305-cp310-cp310-win32.whl", hash = "sha256:421f6cd86e84bbb696d54563c48014b12a23ef95a14e0bdba526be756d89f116"}, + {file = "pywin32-305-cp310-cp310-win_amd64.whl", hash = "sha256:73e819c6bed89f44ff1d690498c0a811948f73777e5f97c494c152b850fad478"}, + {file = "pywin32-305-cp310-cp310-win_arm64.whl", hash = "sha256:742eb905ce2187133a29365b428e6c3b9001d79accdc30aa8969afba1d8470f4"}, + {file = "pywin32-305-cp311-cp311-win32.whl", hash = "sha256:19ca459cd2e66c0e2cc9a09d589f71d827f26d47fe4a9d09175f6aa0256b51c2"}, + {file = "pywin32-305-cp311-cp311-win_amd64.whl", hash = "sha256:326f42ab4cfff56e77e3e595aeaf6c216712bbdd91e464d167c6434b28d65990"}, + {file = "pywin32-305-cp311-cp311-win_arm64.whl", hash = "sha256:4ecd404b2c6eceaca52f8b2e3e91b2187850a1ad3f8b746d0796a98b4cea04db"}, + {file = "pywin32-305-cp36-cp36m-win32.whl", hash = "sha256:48d8b1659284f3c17b68587af047d110d8c44837736b8932c034091683e05863"}, + {file = "pywin32-305-cp36-cp36m-win_amd64.whl", hash = "sha256:13362cc5aa93c2beaf489c9c9017c793722aeb56d3e5166dadd5ef82da021fe1"}, + {file = "pywin32-305-cp37-cp37m-win32.whl", hash = "sha256:a55db448124d1c1484df22fa8bbcbc45c64da5e6eae74ab095b9ea62e6d00496"}, + {file = "pywin32-305-cp37-cp37m-win_amd64.whl", hash = "sha256:109f98980bfb27e78f4df8a51a8198e10b0f347257d1e265bb1a32993d0c973d"}, + {file = "pywin32-305-cp38-cp38-win32.whl", hash = "sha256:9dd98384da775afa009bc04863426cb30596fd78c6f8e4e2e5bbf4edf8029504"}, + {file = "pywin32-305-cp38-cp38-win_amd64.whl", hash = "sha256:56d7a9c6e1a6835f521788f53b5af7912090674bb84ef5611663ee1595860fc7"}, + {file = "pywin32-305-cp39-cp39-win32.whl", hash = "sha256:9d968c677ac4d5cbdaa62fd3014ab241718e619d8e36ef8e11fb930515a1e918"}, + {file = "pywin32-305-cp39-cp39-win_amd64.whl", hash = "sha256:50768c6b7c3f0b38b7fb14dd4104da93ebced5f1a50dc0e834594bff6fbe1271"}, +] +pywin32-ctypes = [ + {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, + {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, +] +pyyaml = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] +rdflib = [ + {file = "rdflib-6.2.0-py3-none-any.whl", hash = "sha256:85c34a86dfc517a41e5f2425a41a0aceacc23983462b32e68610b9fad1383bca"}, + {file = "rdflib-6.2.0.tar.gz", hash = "sha256:62dc3c86d1712db0f55785baf8047f63731fa59b2682be03219cb89262065942"}, +] rdflib-jsonld = [ {file = "rdflib-jsonld-0.6.1.tar.gz", hash = "sha256:eda5a42a2e09f80d4da78e32b5c684bccdf275368f1541e6b7bcddfb1382a0e0"}, {file = "rdflib_jsonld-0.6.1-py2.py3-none-any.whl", hash = "sha256:bcf84317e947a661bae0a3f2aee1eced697075fc4ac4db6065a3340ea0f10fc2"}, @@ -421,10 +2043,61 @@ rdflib-shim = [ {file = "rdflib_shim-1.0.3-py3-none-any.whl", hash = "sha256:7a853e7750ef1e9bf4e35dea27d54e02d4ed087de5a9e0c329c4a6d82d647081"}, {file = "rdflib_shim-1.0.3.tar.gz", hash = "sha256:d955d11e2986aab42b6830ca56ac6bc9c893abd1d049a161c6de2f1b99d4fc0d"}, ] +readme-renderer = [ + {file = "readme_renderer-37.3-py3-none-any.whl", hash = "sha256:f67a16caedfa71eef48a31b39708637a6f4664c4394801a7b0d6432d13907343"}, + {file = "readme_renderer-37.3.tar.gz", hash = "sha256:cd653186dfc73055656f090f227f5cb22a046d7f71a841dfa305f55c9a513273"}, +] requests = [ {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, ] +requests-toolbelt = [ + {file = "requests-toolbelt-0.10.1.tar.gz", hash = "sha256:62e09f7ff5ccbda92772a29f394a49c3ad6cb181d568b1337626b2abb628a63d"}, + {file = "requests_toolbelt-0.10.1-py2.py3-none-any.whl", hash = "sha256:18565aa58116d9951ac39baa288d3adb5b3ff975c4f25eee78555d89e8f247f7"}, +] +rfc3986 = [ + {file = "rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd"}, + {file = "rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c"}, +] +rich = [ + {file = "rich-12.6.0-py3-none-any.whl", hash = "sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e"}, + {file = "rich-12.6.0.tar.gz", hash = "sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0"}, +] +scipy = [ + {file = "scipy-1.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1884b66a54887e21addf9c16fb588720a8309a57b2e258ae1c7986d4444d3bc0"}, + {file = "scipy-1.9.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:83b89e9586c62e787f5012e8475fbb12185bafb996a03257e9675cd73d3736dd"}, + {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a72d885fa44247f92743fc20732ae55564ff2a519e8302fb7e18717c5355a8b"}, + {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d01e1dd7b15bd2449c8bfc6b7cc67d630700ed655654f0dfcf121600bad205c9"}, + {file = "scipy-1.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:68239b6aa6f9c593da8be1509a05cb7f9efe98b80f43a5861cd24c7557e98523"}, + {file = "scipy-1.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b41bc822679ad1c9a5f023bc93f6d0543129ca0f37c1ce294dd9d386f0a21096"}, + {file = "scipy-1.9.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:90453d2b93ea82a9f434e4e1cba043e779ff67b92f7a0e85d05d286a3625df3c"}, + {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c06e62a390a9167da60bedd4575a14c1f58ca9dfde59830fc42e5197283dab"}, + {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abaf921531b5aeaafced90157db505e10345e45038c39e5d9b6c7922d68085cb"}, + {file = "scipy-1.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:06d2e1b4c491dc7d8eacea139a1b0b295f74e1a1a0f704c375028f8320d16e31"}, + {file = "scipy-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a04cd7d0d3eff6ea4719371cbc44df31411862b9646db617c99718ff68d4840"}, + {file = "scipy-1.9.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:545c83ffb518094d8c9d83cce216c0c32f8c04aaf28b92cc8283eda0685162d5"}, + {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d54222d7a3ba6022fdf5773931b5d7c56efe41ede7f7128c7b1637700409108"}, + {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cff3a5295234037e39500d35316a4c5794739433528310e117b8a9a0c76d20fc"}, + {file = "scipy-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:2318bef588acc7a574f5bfdff9c172d0b1bf2c8143d9582e05f878e580a3781e"}, + {file = "scipy-1.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d644a64e174c16cb4b2e41dfea6af722053e83d066da7343f333a54dae9bc31c"}, + {file = "scipy-1.9.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:da8245491d73ed0a994ed9c2e380fd058ce2fa8a18da204681f2fe1f57f98f95"}, + {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4db5b30849606a95dcf519763dd3ab6fe9bd91df49eba517359e450a7d80ce2e"}, + {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c68db6b290cbd4049012990d7fe71a2abd9ffbe82c0056ebe0f01df8be5436b0"}, + {file = "scipy-1.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:5b88e6d91ad9d59478fafe92a7c757d00c59e3bdc3331be8ada76a4f8d683f58"}, + {file = "scipy-1.9.3.tar.gz", hash = "sha256:fbc5c05c85c1a02be77b1ff591087c83bc44579c6d2bd9fb798bb64ea5e1a027"}, +] +secretstorage = [ + {file = "SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99"}, + {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"}, +] +setuptools = [ + {file = "setuptools-65.5.1-py3-none-any.whl", hash = "sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31"}, + {file = "setuptools-65.5.1.tar.gz", hash = "sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f"}, +] +setuptools-scm = [ + {file = "setuptools_scm-7.0.5-py3-none-any.whl", hash = "sha256:7930f720905e03ccd1e1d821db521bff7ec2ac9cf0ceb6552dd73d24a45d3b02"}, + {file = "setuptools_scm-7.0.5.tar.gz", hash = "sha256:031e13af771d6f892b941adb6ea04545bbf91ebc5ce68c78aaf3fff6e1fb4844"}, +] shexjsg = [ {file = "ShExJSG-0.8.2-py2.py3-none-any.whl", hash = "sha256:3b0d8432dd313bee9e1343382c5e02e9908dd941a7dd7342bf8c0200fe523766"}, {file = "ShExJSG-0.8.2.tar.gz", hash = "sha256:f17a629fc577fa344382bdee143cd9ff86588537f9f811f66cea6f63cdbcd0b6"}, @@ -441,7 +2114,26 @@ sparqlwrapper = [ {file = "SPARQLWrapper-2.0.0-py3-none-any.whl", hash = "sha256:c99a7204fff676ee28e6acef327dc1ff8451c6f7217dcd8d49e8872f324a8a20"}, {file = "SPARQLWrapper-2.0.0.tar.gz", hash = "sha256:3fed3ebcc77617a4a74d2644b86fd88e0f32e7f7003ac7b2b334c026201731f1"}, ] -urllib3 = [] +tenacity = [ + {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"}, + {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"}, +] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +twine = [ + {file = "twine-4.0.1-py3-none-any.whl", hash = "sha256:42026c18e394eac3e06693ee52010baa5313e4811d5a11050e7d48436cf41b9e"}, + {file = "twine-4.0.1.tar.gz", hash = "sha256:96b1cf12f7ae611a4a40b6ae8e9570215daff0611828f5fe1f37a16255ab24a0"}, +] +typing-extensions = [ + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, +] +urllib3 = [ + {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, + {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, +] watchdog = [ {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"}, {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d"}, @@ -469,3 +2161,85 @@ watchdog = [ {file = "watchdog-2.1.9-py3-none-win_ia64.whl", hash = "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428"}, {file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"}, ] +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] +wheel = [ + {file = "wheel-0.38.4-py3-none-any.whl", hash = "sha256:b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8"}, + {file = "wheel-0.38.4.tar.gz", hash = "sha256:965f5259b566725405b05e7cf774052044b1ed30119b5d586b2703aafe8719ac"}, +] +wrapt = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] +yamldown = [ + {file = "yamldown-0.1.8-py3-none-any.whl", hash = "sha256:936ad7bdbde725d0bd3adb77236aae4eb75388619f31232595f7dd45f7006598"}, + {file = "yamldown-0.1.8.tar.gz", hash = "sha256:ec1056e5ec3c47a7c14f69d343b73256ad12751361f1a833805a8ee722cf883c"}, +] +zipp = [ + {file = "zipp-3.10.0-py3-none-any.whl", hash = "sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1"}, + {file = "zipp-3.10.0.tar.gz", hash = "sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8"}, +] diff --git a/python/pyproject.toml b/python/pyproject.toml index 31b24e0..9222f05 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -11,6 +11,9 @@ rdflib = "^6.2.0" SPARQLWrapper = "^2.0.0" click = "^8.1.3" cachier = "^1.5.4" +ontobio = "^2.8.3" +pydantic = "^1.10.2" +linkml-runtime = "^1.3.7" [tool.poetry.dev-dependencies] diff --git a/python/shex_json_linkml.py b/python/shex_json_linkml.py index 134718c..1ef5ca7 100644 --- a/python/shex_json_linkml.py +++ b/python/shex_json_linkml.py @@ -1,49 +1,157 @@ -from __future__ import annotations -from datetime import datetime, date -from enum import Enum -from typing import List, Dict, Optional, Any -from pydantic import BaseModel as BaseModel, Field +# Auto generated from shex_json_linkml.yaml by pythongen.py version: 0.9.0 +# Generation date: 2022-11-18T08:24:39 +# Schema: GODomainRangeConstraintsModel +# +# id: go-shex-domain-range-constraints +# description: a schema for the domain and range exchange format for the GO shape expressions +# license: https://creativecommons.org/publicdomain/zero/1.0/ -metamodel_version = "None" +import dataclasses +import sys +import re +from jsonasobj2 import JsonObj, as_dict +from typing import Optional, List, Union, Dict, ClassVar, Any +from dataclasses import dataclass +from linkml_runtime.linkml_model.meta import EnumDefinition, PermissibleValue, PvFormulaOptions + +from linkml_runtime.utils.slot import Slot +from linkml_runtime.utils.metamodelcore import empty_list, empty_dict, bnode +from linkml_runtime.utils.yamlutils import YAMLRoot, extended_str, extended_float, extended_int +from linkml_runtime.utils.dataclass_extensions_376 import dataclasses_init_fn_with_kwargs +from linkml_runtime.utils.formatutils import camelcase, underscore, sfx +from linkml_runtime.utils.enumerations import EnumDefinitionImpl +from rdflib import Namespace, URIRef +from linkml_runtime.utils.curienamespace import CurieNamespace +from linkml_runtime.linkml_model.types import Boolean, String, Uriorcurie +from linkml_runtime.utils.metamodelcore import Bool, URIorCURIE + +metamodel_version = "1.7.0" version = "0.1.0" -class WeakRefShimBaseModel(BaseModel): - __slots__ = '__weakref__' - -class ConfiguredBaseModel(WeakRefShimBaseModel, - validate_assignment = True, - validate_all = True, - underscore_attrs_are_private = True, - extra = 'forbid', - arbitrary_types_allowed = True): - pass +# Overwrite dataclasses _init_fn to add **kwargs in __init__ +dataclasses._init_fn = dataclasses_init_fn_with_kwargs + +# Namespaces +GO = CurieNamespace('GO', 'http://purl.obolibrary.org/obo/GO_') +BIOLINK = CurieNamespace('biolink', 'https://w3id.org/biolink/vocab/') +LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/') +SCHEMA = CurieNamespace('schema', 'http://example.org/UNKNOWN/schema/') +DEFAULT_ = GO + +# Types -class Association(ConfiguredBaseModel): +# Class references + + + +@dataclass +class Association(YAMLRoot): """ GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule """ - subject: str = Field(None, description="""The domain of the GO shape expression rule, this is the subject of the relationship.""") - predicate: Optional[str] = Field(None, description="""The predicate is the relationship between the domain and range of the GO shape expression rule.""") - object: List[str] = Field(default_factory=list, description="""The range of the relationship identified by the Relationship.id parameter (This contains the values can be provided in the object of a statement)""") - is_multivalued: bool = Field(None, description="""for this shape, the relationship in question supports multiple values in the object of the association.""") - is_required: bool = Field(None) - context: str = Field(None, description="""used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes annotated with like this https://github.com/geneontology/go-shapes/pull/285/files will be exlcuded from the visual pathway editor but still included in the file so this file can be used in the graphical editor as well.""") - exclude_from_extensions: Optional[bool] = Field(None, description="""used to determine if this shape is used in the the visual pathway editor or the graphical editor. Those shapes annotated with like this""") - + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = GO.Association + class_class_curie: ClassVar[str] = "GO:Association" + class_name: ClassVar[str] = "Association" + class_model_uri: ClassVar[URIRef] = GO.Association + + subject: Union[str, URIorCURIE] = None + object: Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]] = None + is_multivalued: Union[bool, Bool] = None + is_required: Union[bool, Bool] = None + context: str = None + predicate: Optional[str] = None + exclude_from_extensions: Optional[Union[bool, Bool]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.subject): + self.MissingRequiredField("subject") + if not isinstance(self.subject, URIorCURIE): + self.subject = URIorCURIE(self.subject) + + if self._is_empty(self.object): + self.MissingRequiredField("object") + if not isinstance(self.object, list): + self.object = [self.object] if self.object is not None else [] + self.object = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.object] + + if self._is_empty(self.is_multivalued): + self.MissingRequiredField("is_multivalued") + if not isinstance(self.is_multivalued, Bool): + self.is_multivalued = Bool(self.is_multivalued) + + if self._is_empty(self.is_required): + self.MissingRequiredField("is_required") + if not isinstance(self.is_required, Bool): + self.is_required = Bool(self.is_required) + + if self._is_empty(self.context): + self.MissingRequiredField("context") + if not isinstance(self.context, str): + self.context = str(self.context) + + if self.predicate is not None and not isinstance(self.predicate, str): + self.predicate = str(self.predicate) + if self.exclude_from_extensions is not None and not isinstance(self.exclude_from_extensions, Bool): + self.exclude_from_extensions = Bool(self.exclude_from_extensions) -class Collection(ConfiguredBaseModel): + super().__post_init__(**kwargs) + + +@dataclass +class Collection(YAMLRoot): """ - A collection of GO domain/range constraint shapes. This is primarily used in this schema to allow several test data objects to be submitted in a single file. + A collection of GO domain/range constraint shapes. This is primarily used in this schema to allow several test + data objects to be submitted in a single file. """ - goshapes: Optional[List[Association]] = Field(default_factory=list, description="""A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule.""") - + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = GO.Collection + class_class_curie: ClassVar[str] = "GO:Collection" + class_name: ClassVar[str] = "Collection" + class_model_uri: ClassVar[URIRef] = GO.Collection + + goshapes: Optional[Union[Union[dict, Association], List[Union[dict, Association]]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + self._normalize_inlined_as_dict(slot_name="goshapes", slot_type=Association, key_name="subject", keyed=False) + + super().__post_init__(**kwargs) + + +# Enumerations + + +# Slots +class slots: + pass + +slots.object = Slot(uri=GO.object, name="object", curie=GO.curie('object'), + model_uri=GO.object, domain=None, range=Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]) + +slots.id = Slot(uri=GO.id, name="id", curie=GO.curie('id'), + model_uri=GO.id, domain=None, range=Optional[str]) + +slots.predicate = Slot(uri=GO.predicate, name="predicate", curie=GO.curie('predicate'), + model_uri=GO.predicate, domain=None, range=Optional[str]) + +slots.subject = Slot(uri=GO.subject, name="subject", curie=GO.curie('subject'), + model_uri=GO.subject, domain=None, range=Union[str, URIorCURIE]) + +slots.is_multivalued = Slot(uri=GO.is_multivalued, name="is_multivalued", curie=GO.curie('is_multivalued'), + model_uri=GO.is_multivalued, domain=None, range=Union[bool, Bool]) +slots.goshapes = Slot(uri=GO.goshapes, name="goshapes", curie=GO.curie('goshapes'), + model_uri=GO.goshapes, domain=None, range=Optional[Union[Union[dict, Association], List[Union[dict, Association]]]]) +slots.is_required = Slot(uri=GO.is_required, name="is_required", curie=GO.curie('is_required'), + model_uri=GO.is_required, domain=None, range=Union[bool, Bool]) -# Update forward refs -# see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ -Association.update_forward_refs() -Collection.update_forward_refs() +slots.context = Slot(uri=GO.context, name="context", curie=GO.curie('context'), + model_uri=GO.context, domain=None, range=str) +slots.exclude_from_extensions = Slot(uri=GO.exclude_from_extensions, name="exclude_from_extensions", curie=GO.curie('exclude_from_extensions'), + model_uri=GO.exclude_from_extensions, domain=None, range=Optional[Union[bool, Bool]]) diff --git a/shapes/json/look_table.json b/shapes/json/look_table.json index b04b696..1f13b7c 100644 --- a/shapes/json/look_table.json +++ b/shapes/json/look_table.json @@ -176,6 +176,21 @@ "RO:0002406": { "label": "DIRECTLY_ACTIVATES" }, + "RO:0012012": { + "label": "INDIRECTLY_REGULATES" + }, + "RO:0002407": { + "label": "INDIRECTLY_POSITIVELY_REGULATES" + }, + "RO:0002409": { + "label": "INDIRECTLY_NEGATIVELY_REGULATES" + }, + "RO:0012009": { + "label": "CONSTITUTIVELY_UPSTREAM_OF" + }, + "RO:0012010": { + "label": "REMOVES_INPUT_FOR" + }, "RO:0002418": { "label": "CAUSALLY_UPSTREAM_OF_OR_WITHIN" }, From bd97aa7434f856aa16452dc6c91e897d2420c5fc Mon Sep 17 00:00:00 2001 From: Sierra Taylor Moxon Date: Fri, 18 Nov 2022 12:45:48 -0800 Subject: [PATCH 44/45] adding in python classes from linkml --- python/json_export.py | 11 +- python/schema/shex_json_linkml.yaml | 4 +- python/shex_json_linkml.py | 16 +- shapes/json/look_table.json | 15 - shapes/json/shex_dump.json | 682 ---------------------------- 5 files changed, 18 insertions(+), 710 deletions(-) diff --git a/python/json_export.py b/python/json_export.py index 57169a9..ddb42e1 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -7,11 +7,13 @@ from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExpr, \ shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf, Annotation from pyshex import PrefixLibrary -from shex_json_linkml import Association, Collection +from shex_json_linkml import Association, AssociationCollection from linkml_runtime.dumpers import JSONDumper from linkml_runtime.loaders import JSONLoader from pathlib import Path +import os +OUT_JSON = os.path.join('../shapes/json/shex_dump.json') def get_suffix(uri): suffix = contract_uri(uri, cmaps=[prefix_context]) @@ -24,7 +26,6 @@ def get_suffix(uri): class NoctuaFormShex: def __init__(self, shex_text): self.exclude_ext_pred = 'http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions' - constraint_collection = Collection() self.json_shapes = [] self.shex = generate_shexj.parse(shex_text) @@ -97,7 +98,7 @@ def _load_triple_expr(self, subject:str, expr: Union[tripleExpr, tripleExprLabel ) if exclude_from_extensions != "": goshape.exclude_from_extensions = exclude_from_extensions, - self.json_shapes.goshapes.append(goshape) + self.json_shapes.append(goshape) return preds @@ -145,8 +146,8 @@ def parse(self): with open(json_shapes_fp, "w") as sf: jd = JSONDumper() - Collection.goshapes = nfShex.json_shapes - jd.dumps(nfShex.json_shapes) + coll = AssociationCollection(goshapes=nfShex.json_shapes) + jd.dump(coll, to_file=OUT_JSON) with open(look_table_fp, "w") as sf: json.dump(nfShex.gen_lookup_table(), sf, indent=2) diff --git a/python/schema/shex_json_linkml.yaml b/python/schema/shex_json_linkml.yaml index 9e52ee4..0858375 100644 --- a/python/schema/shex_json_linkml.yaml +++ b/python/schema/shex_json_linkml.yaml @@ -36,7 +36,7 @@ classes: close_mappings: - schema:Thing - Collection: + AssociationCollection: tree_root: true slots: - goshapes @@ -81,6 +81,8 @@ slots: goshapes: multivalued: true range: Association + inlined: true + inlined_as_list: true description: >- A collectionm of GO domain/range constraint shapes where a GO domain/range constraint shape is defined as the domain, relationship, and range of a GO shape expression rule. diff --git a/python/shex_json_linkml.py b/python/shex_json_linkml.py index 1ef5ca7..e740c57 100644 --- a/python/shex_json_linkml.py +++ b/python/shex_json_linkml.py @@ -1,5 +1,5 @@ # Auto generated from shex_json_linkml.yaml by pythongen.py version: 0.9.0 -# Generation date: 2022-11-18T08:24:39 +# Generation date: 2022-11-18T12:44:53 # Schema: GODomainRangeConstraintsModel # # id: go-shex-domain-range-constraints @@ -102,22 +102,24 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class Collection(YAMLRoot): +class AssociationCollection(YAMLRoot): """ A collection of GO domain/range constraint shapes. This is primarily used in this schema to allow several test data objects to be submitted in a single file. """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = GO.Collection - class_class_curie: ClassVar[str] = "GO:Collection" - class_name: ClassVar[str] = "Collection" - class_model_uri: ClassVar[URIRef] = GO.Collection + class_class_uri: ClassVar[URIRef] = GO.AssociationCollection + class_class_curie: ClassVar[str] = "GO:AssociationCollection" + class_name: ClassVar[str] = "AssociationCollection" + class_model_uri: ClassVar[URIRef] = GO.AssociationCollection goshapes: Optional[Union[Union[dict, Association], List[Union[dict, Association]]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - self._normalize_inlined_as_dict(slot_name="goshapes", slot_type=Association, key_name="subject", keyed=False) + if not isinstance(self.goshapes, list): + self.goshapes = [self.goshapes] if self.goshapes is not None else [] + self.goshapes = [v if isinstance(v, Association) else Association(**as_dict(v)) for v in self.goshapes] super().__post_init__(**kwargs) diff --git a/shapes/json/look_table.json b/shapes/json/look_table.json index 1f13b7c..b04b696 100644 --- a/shapes/json/look_table.json +++ b/shapes/json/look_table.json @@ -176,21 +176,6 @@ "RO:0002406": { "label": "DIRECTLY_ACTIVATES" }, - "RO:0012012": { - "label": "INDIRECTLY_REGULATES" - }, - "RO:0002407": { - "label": "INDIRECTLY_POSITIVELY_REGULATES" - }, - "RO:0002409": { - "label": "INDIRECTLY_NEGATIVELY_REGULATES" - }, - "RO:0012009": { - "label": "CONSTITUTIVELY_UPSTREAM_OF" - }, - "RO:0012010": { - "label": "REMOVES_INPUT_FOR" - }, "RO:0002418": { "label": "CAUSALLY_UPSTREAM_OF_OR_WITHIN" }, diff --git a/shapes/json/shex_dump.json b/shapes/json/shex_dump.json index 3c9b2a6..e69de29 100644 --- a/shapes/json/shex_dump.json +++ b/shapes/json/shex_dump.json @@ -1,682 +0,0 @@ -[ - { - "subject": "GO:0008150", - "object": [ - "GO:0008150" - ], - "predicate": "BFO:0000050", - "is_multivalued": true - }, - { - "subject": "GO:0008150", - "object": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991", - "NCBITaxon:1" - ], - "predicate": "RO:0002233", - "is_multivalued": true - }, - { - "subject": "GO:0008150", - "object": [ - "CHEBI:24431", - "CARO:0000000", - "GO:0032991" - ], - "predicate": "RO:0002234", - "is_multivalued": true - }, - { - "subject": "GO:0008150", - "object": [ - "CARO:0000000" - ], - "predicate": "BFO:0000066", - "is_multivalued": false - }, - { - "subject": "GO:0008150", - "object": [ - "CHEBI:33695", - "GO:0032991" - ], - "predicate": "RO:0002313", - "is_multivalued": true - }, - { - "subject": "GO:0008150", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002339", - "is_multivalued": false - }, - { - "subject": "GO:0008150", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002338", - "is_multivalued": false - }, - { - "subject": "GO:0008150", - "object": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002411", - "is_multivalued": true - }, - { - "subject": "GO:0008150", - "object": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002305", - "is_multivalued": true - }, - { - "subject": "GO:0008150", - "object": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002304", - "is_multivalued": true - }, - { - "subject": "GO:0008150", - "object": [ - "GO:0008150" - ], - "predicate": "RO:0002211", - "is_multivalued": true - }, - { - "subject": "GO:0008150", - "object": [ - "GO:0008150" - ], - "predicate": "RO:0002212", - "is_multivalued": true - }, - { - "subject": "GO:0008150", - "object": [ - "GO:0008150" - ], - "predicate": "RO:0002213", - "is_multivalued": true - }, - { - "subject": "GO:0008150", - "object": [ - "CARO:0000000", - "NCBITaxon:1" - ], - "predicate": "RO:0012003", - "is_multivalued": true - }, - { - "subject": "GO:0048856", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002296", - "is_multivalued": false - }, - { - "subject": "GO:0048646", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002297", - "is_multivalued": false - }, - { - "subject": "GO:0009653", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002298", - "is_multivalued": false - }, - { - "subject": "GO:0030154", - "object": [ - "CL:0000003" - ], - "predicate": "RO:0002315", - "is_multivalued": false - }, - { - "subject": "GO:0051301", - "object": [ - "CL:0000003" - ], - "predicate": "RO:0002233", - "is_multivalued": false - }, - { - "subject": "GO:0045165", - "object": [ - "CL:0000003" - ], - "predicate": "RO:0002348", - "is_multivalued": false - }, - { - "subject": "GO:0001709", - "object": [ - "CL:0000003" - ], - "predicate": "RO:0002349", - "is_multivalued": false - }, - { - "subject": "GO:0001708", - "object": [ - "CL:0000003" - ], - "predicate": "RO:0002356", - "is_multivalued": false - }, - { - "subject": "GO:0022607", - "object": [ - "GO:0005575" - ], - "predicate": "RO:0002588", - "is_multivalued": false - }, - { - "subject": "GO:0022411", - "object": [ - "GO:0005575" - ], - "predicate": "RO:0002590", - "is_multivalued": false - }, - { - "subject": "GO:0016043", - "object": [ - "GO:0005575" - ], - "predicate": "RO:0002592", - "is_multivalued": false - }, - { - "subject": "GO:0021700", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002299", - "is_multivalued": false - }, - { - "subject": "GO:0040007", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002343", - "is_multivalued": false - }, - { - "subject": "GO:0051179", - "object": [ - "CARO:0000000", - "CHEBI:24431", - "CHEBI:33695", - "GO:0032991" - ], - "predicate": "RO:0002313", - "is_multivalued": true - }, - { - "subject": "GO:0051179", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002339", - "is_multivalued": false - }, - { - "subject": "GO:0051179", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002338", - "is_multivalued": false - }, - { - "subject": "GO:0040011", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002565", - "is_multivalued": false - }, - { - "subject": "GO:0006928", - "object": [ - "CL:0000003", - "GO:0005575" - ], - "predicate": "RO:0002565", - "is_multivalued": false - }, - { - "subject": "GO:0034367", - "object": [ - "GO:0032991" - ], - "predicate": "RO:0002591", - "is_multivalued": false - }, - { - "subject": "GO:0007389", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002356", - "is_multivalued": false - }, - { - "subject": "GO:0003674", - "object": [ - "CHEBI:33695", - "GO:0032991" - ], - "predicate": "RO:0002333", - "exclude_from_extensions": true, - "is_multivalued": false - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0008150" - ], - "predicate": "BFO:0000050", - "exclude_from_extensions": true, - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0003674" - ], - "predicate": "BFO:0000051", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "CARO:0000000" - ], - "predicate": "BFO:0000066", - "is_multivalued": false - }, - { - "subject": "GO:0003674", - "object": [ - "CHEBI:24431", - "GO:0032991" - ], - "predicate": "RO:0002234", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "CHEBI:24431", - "GO:0032991" - ], - "predicate": "RO:0002233", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002413", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002211", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002212", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002213", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002578", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002630", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002629", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", - "GO:0008150" - ], - "predicate": "RO:0002418", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0008150" - ], - "predicate": "RO:0004046", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0008150" - ], - "predicate": "RO:0004047", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002411", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002305", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0008150", - "GO:0003674", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" - ], - "predicate": "RO:0002304", - "is_multivalued": true - }, - { - "subject": "GO:0003674", - "object": [ - "GO:0044848", - "UBERON:0000105", - "PO:0009012" - ], - "predicate": "RO:0002092", - "is_multivalued": true - }, - { - "subject": "GO:0005215", - "object": [ - "CHEBI:24431", - "CHEBI:33695", - "GO:0032991" - ], - "predicate": "RO:0002313", - "is_multivalued": true - }, - { - "subject": "GO:0005215", - "object": [ - "GO:0005575" - ], - "predicate": "RO:0002339", - "exclude_from_extensions": true, - "is_multivalued": true - }, - { - "subject": "GO:0005215", - "object": [ - "GO:0005575" - ], - "predicate": "RO:0002338", - "exclude_from_extensions": true, - "is_multivalued": true - }, - { - "subject": "CARO:0000000", - "object": [ - "CARO:0000000" - ], - "predicate": "BFO:0000050", - "is_multivalued": false - }, - { - "subject": "CARO:0000000", - "object": [ - "CHEBI:33695", - "GO:0032991" - ], - "predicate": "RO:0001015", - "is_multivalued": false - }, - { - "subject": "CL:0000003", - "object": [ - "CARO:0000000" - ], - "predicate": "BFO:0000050", - "is_multivalued": false - }, - { - "subject": "GO:0005575", - "object": [ - "CARO:0000000" - ], - "predicate": "BFO:0000050", - "is_multivalued": false - }, - { - "subject": "GO:0005575", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002220", - "is_multivalued": true - }, - { - "subject": "GO:0005575", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0002131", - "is_multivalued": true - }, - { - "subject": "GO:0005575", - "object": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "predicate": "RO:0002490", - "is_multivalued": true - }, - { - "subject": "GO:0005575", - "object": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "predicate": "RO:0002491", - "is_multivalued": true - }, - { - "subject": "GO:0032991", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0001025", - "is_multivalued": false - }, - { - "subject": "GO:0032991", - "object": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "predicate": "RO:0002432", - "is_multivalued": false - }, - { - "subject": "GO:0032991", - "object": [ - "CHEBI:33695", - "GO:0032991" - ], - "predicate": "BFO:0000051", - "is_multivalued": true - }, - { - "subject": "GO:0032991", - "object": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "predicate": "RO:0002490", - "is_multivalued": true - }, - { - "subject": "GO:0032991", - "object": [ - "GO:0008150", - "UBERON:0000105", - "PO:0009012" - ], - "predicate": "RO:0002491", - "is_multivalued": true - }, - { - "subject": "CHEBI:36080", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0001025", - "is_multivalued": false - }, - { - "subject": "CHEBI:36080", - "object": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "predicate": "RO:0002432", - "is_multivalued": false - }, - { - "subject": "CHEBI:36080", - "object": [ - "GO:0032991" - ], - "predicate": "BFO:0000050", - "is_multivalued": false - }, - { - "subject": "CHEBI:36080", - "object": [ - "GO:0003674" - ], - "predicate": "RO:0002326", - "is_multivalued": false - }, - { - "subject": "CHEBI:33695", - "object": [ - "CARO:0000000" - ], - "predicate": "RO:0001025", - "is_multivalued": false - }, - { - "subject": "CHEBI:33695", - "object": [ - "CARO:0000000", - "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" - ], - "predicate": "RO:0002432", - "is_multivalued": false - }, - { - "subject": "CHEBI:33695", - "object": [ - "GO:0032991" - ], - "predicate": "BFO:0000050", - "is_multivalued": false - }, - { - "subject": "CHEBI:33695", - "object": [ - "GO:0003674" - ], - "predicate": "RO:0002326", - "is_multivalued": false - } -] \ No newline at end of file From c473d0c93a3b07fbd512d1feb8b82b0edc9891a8 Mon Sep 17 00:00:00 2001 From: tmushayahama Date: Wed, 30 Nov 2022 07:37:30 -0800 Subject: [PATCH 45/45] Added some excludes from in shapes, added lookup to goapi --- python/json_export.py | 323 +++++----- shapes/go-cam-shapes.shex | 1134 ++++++++++++++++++----------------- shapes/json/look_table.json | 979 ++++++++++++++++++++++-------- shapes/json/shex_dump.json | 1000 ++++++++++++++++++++++++++++++ shapes/json/shex_full.json | 870 ++++++++++++++++++++++----- 5 files changed, 3201 insertions(+), 1105 deletions(-) diff --git a/python/json_export.py b/python/json_export.py index ddb42e1..c725562 100644 --- a/python/json_export.py +++ b/python/json_export.py @@ -1,156 +1,167 @@ -from os import path -import json -from ontobio.rdfgen.assoc_rdfgen import prefix_context -from prefixcommons.curie_util import contract_uri -from pyshexc.parser_impl import generate_shexj -from typing import Optional, List, Union -from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExpr, \ - shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf, Annotation -from pyshex import PrefixLibrary -from shex_json_linkml import Association, AssociationCollection -from linkml_runtime.dumpers import JSONDumper -from linkml_runtime.loaders import JSONLoader -from pathlib import Path -import os - -OUT_JSON = os.path.join('../shapes/json/shex_dump.json') - -def get_suffix(uri): - suffix = contract_uri(uri, cmaps=[prefix_context]) - if len(suffix) > 0: - return suffix[0] - - return path.basename(uri) - - -class NoctuaFormShex: - def __init__(self, shex_text): - self.exclude_ext_pred = 'http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions' - self.json_shapes = [] - - self.shex = generate_shexj.parse(shex_text) - pref = PrefixLibrary(shex_text) - self.pref_dict = { - k: get_suffix(str(v)) for (k, v) in dict(pref).items() - if str(v).startswith('http://purl.obolibrary.org/obo/')} - del self.pref_dict['OBO'] # remove this filter and make sure that it works because it needs to be - # working for every shape. - - def get_shape_name(self, uri, clean=False): - name = path.basename(uri).upper() - if '/go/' in uri: - name = 'GO' + name - return self.pref_dict.get(name, None if clean else uri) - - def gen_lookup_table(self): - table = {v: { - 'label': k - } for (k, v) in self.pref_dict.items()} - return table - - def _load_expr(self, subject:str, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=None) -> List: - - if preds is None: - preds = {} - if isinstance(expr, str) and isinstance(preds, list): - preds.append(self.get_shape_name(expr)) - if isinstance(expr, (ShapeOr, ShapeAnd)): - for expr2 in expr.shapeExprs: - self._load_expr(subject, expr2, preds) - elif isinstance(expr, ShapeNot): - self._load_expr(subject, expr.shapeExpr, preds) - elif isinstance(expr, Shape) and expr.expression is not None: - self._load_triple_expr(subject, expr.expression, preds) - - # throw an error here if pred list is empty - return preds - - def _load_triple_expr(self, subject:str, expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None: - - if isinstance(expr, (OneOf, EachOf)): - for expr2 in expr.expressions: - self._load_triple_expr(subject, expr2, preds) - elif isinstance(expr, TripleConstraint) and expr.valueExpr is not None: - predicate = get_suffix(expr.predicate) - - if predicate not in self.pref_dict.values(): - return - - objects = [] - self._load_expr(subject, expr.valueExpr, objects) - - exclude_from_extensions = "" - if isinstance(expr.annotations, list): - exclude_from_extensions = self._load_annotation(expr, self.exclude_ext_pred) - - is_multivalued = False - if expr.max is not None: - if expr.max == -1: - is_multivalued = True - - goshape = Association( - subject=subject, - object=objects, - predicate=predicate, - is_multivalued=is_multivalued, - is_required=False, - context="" - ) - if exclude_from_extensions != "": - goshape.exclude_from_extensions = exclude_from_extensions, - self.json_shapes.append(goshape) - - return preds - - def _load_annotation(self, expr: Union[tripleExpr, tripleExprLabel], annotation_key): - for annotation in expr.annotations: - if isinstance(annotation, Annotation) : - if annotation.predicate == annotation_key: - return True if annotation.object.value=="true" else False - - return None - - def parse_raw(self): - return json.loads(self.shex._as_json_dumps()) - - def parse(self): - shapes = self.shex.shapes - - for shape in shapes: - shape_name = self.get_shape_name(shape['id'], True) - - if shape_name is None: - continue - - print('Parsing Shape: ' + shape['id']) - - shexps = shape.shapeExprs or [] - - for expr in shexps: - self._load_expr(shape_name, expr) - - -if __name__ == "__main__": - - base_path = Path(__file__).parent - shex_fp = (base_path / "../shapes/go-cam-shapes.shex").resolve() - json_shapes_fp = (base_path / "../shapes/json/shex_dump.json").resolve() - look_table_fp = (base_path / "../shapes/json/look_table.json").resolve() - shex_full_fp = (base_path / "../shapes/json/shex_full.json").resolve() - - with open(shex_fp) as f: - shex_text = f.read() - - nfShex = NoctuaFormShex(shex_text) - nfShex.parse() - - with open(json_shapes_fp, "w") as sf: - jd = JSONDumper() - coll = AssociationCollection(goshapes=nfShex.json_shapes) - jd.dump(coll, to_file=OUT_JSON) - - with open(look_table_fp, "w") as sf: - json.dump(nfShex.gen_lookup_table(), sf, indent=2) - - with open(shex_full_fp, "w") as sf: - json.dump(nfShex.parse_raw(), sf, indent=2) +from os import path +import json +from ontobio.rdfgen.assoc_rdfgen import prefix_context +from prefixcommons.curie_util import contract_uri +from pyshexc.parser_impl import generate_shexj +from typing import Optional, List, Union +from ShExJSG.ShExJ import Shape, ShapeAnd, ShapeOr, ShapeNot, TripleConstraint, shapeExpr, \ + shapeExprLabel, tripleExpr, tripleExprLabel, OneOf, EachOf, Annotation +from pyshex import PrefixLibrary +import requests +from shex_json_linkml import Association, AssociationCollection +from linkml_runtime.dumpers import JSONDumper +from linkml_runtime.loaders import JSONLoader +from pathlib import Path +import os + +OUT_JSON = os.path.join('../shapes/json/shex_dump.json') + + +def get_suffix(uri): + suffix = contract_uri(uri, cmaps=[prefix_context]) + if len(suffix) > 0: + return suffix[0] + + return path.basename(uri) + + +class NoctuaFormShex: + def __init__(self, shex_text): + self.exclude_ext_pred = 'http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions' + self.json_shapes = [] + + self.shex = generate_shexj.parse(shex_text) + pref = PrefixLibrary(shex_text) + self.pref_dict = { + k: get_suffix(str(v)) for (k, v) in dict(pref).items() + if str(v).startswith('http://purl.obolibrary.org/obo/')} + # remove this filter and make sure that it works because it needs to be + del self.pref_dict['OBO'] + # working for every shape. + + def get_shape_name(self, uri, clean=False): + name = path.basename(uri).upper() + if '/go/' in uri: + name = 'GO' + name + return self.pref_dict.get(name, None if clean else uri) + + def gen_lookup_table(self): + goApi = 'http://api.geneontology.org/api/ontology/term/' + table = list() + for k, v in self.pref_dict.items(): + resp = requests.get(goApi+v) + term = resp.json() + table.append({ + 'id': term['goid'], + 'label': term['label'], + 'definition': term.get('definition', ""), + 'comment': term.get('comment', ""), + 'synonyms': term.get('synonyms', "") + }) + return table + + def _load_expr(self, subject: str, expr: Optional[Union[shapeExprLabel, shapeExpr]], preds=None) -> List: + + if preds is None: + preds = {} + if isinstance(expr, str) and isinstance(preds, list): + preds.append(self.get_shape_name(expr)) + if isinstance(expr, (ShapeOr, ShapeAnd)): + for expr2 in expr.shapeExprs: + self._load_expr(subject, expr2, preds) + elif isinstance(expr, ShapeNot): + self._load_expr(subject, expr.shapeExpr, preds) + elif isinstance(expr, Shape) and expr.expression is not None: + self._load_triple_expr(subject, expr.expression, preds) + + # throw an error here if pred list is empty + return preds + + def _load_triple_expr(self, subject: str, expr: Union[tripleExpr, tripleExprLabel], preds=None) -> None: + + if isinstance(expr, (OneOf, EachOf)): + for expr2 in expr.expressions: + self._load_triple_expr(subject, expr2, preds) + elif isinstance(expr, TripleConstraint) and expr.valueExpr is not None: + predicate = get_suffix(expr.predicate) + + if predicate not in self.pref_dict.values(): + return preds + + objects = [] + self._load_expr(subject, expr.valueExpr, objects) + + exclude_from_extensions = "" + if isinstance(expr.annotations, list): + exclude_from_extensions = self._load_annotation( + expr, self.exclude_ext_pred) + + is_multivalued = False + if expr.max is not None and expr.max == -1: + is_multivalued = True + + goshape = Association( + subject=subject, + object=objects, + predicate=predicate, + is_multivalued=is_multivalued, + is_required=False, + context="" + ) + if exclude_from_extensions != "": + goshape.exclude_from_extensions = exclude_from_extensions, + self.json_shapes.append(goshape) + + return preds + + def _load_annotation(self, expr: Union[tripleExpr, tripleExprLabel], annotation_key): + for annotation in expr.annotations: + if isinstance(annotation, Annotation) and annotation.predicate == annotation_key: + return True if annotation.object.value == "true" else False + + return False + + def parse_raw(self): + return json.loads(self.shex._as_json_dumps()) + + def parse(self): + shapes = self.shex.shapes + + for shape in shapes: + shape_name = self.get_shape_name(shape['id'], True) + + if shape_name is None: + continue + + print('Parsing Shape: ' + shape['id']) + + shexps = shape.shapeExprs or [] + + for expr in shexps: + self._load_expr(shape_name, expr) + + +if __name__ == "__main__": + + base_path = Path(__file__).parent + shex_fp = (base_path / "../shapes/go-cam-shapes.shex").resolve() + json_shapes_fp = (base_path / "../shapes/json/shex_dump.json").resolve() + look_table_fp = (base_path / "../shapes/json/look_table.json").resolve() + shex_full_fp = (base_path / "../shapes/json/shex_full.json").resolve() + + with open(shex_fp) as f: + shex_text = f.read() + + nfShex = NoctuaFormShex(shex_text) + nfShex.parse() + + with open(json_shapes_fp, "w") as sf: + jd = JSONDumper() + coll = AssociationCollection(goshapes=nfShex.json_shapes) + jd.dump(coll, to_file=OUT_JSON) + + """ with open(look_table_fp, "w") as sf: + json.dump(nfShex.gen_lookup_table(), sf, indent=2) """ + + with open(shex_full_fp, "w") as sf: + json.dump(nfShex.parse_raw(), sf, indent=2) diff --git a/shapes/go-cam-shapes.shex b/shapes/go-cam-shapes.shex index fe709ff..35ed12b 100644 --- a/shapes/go-cam-shapes.shex +++ b/shapes/go-cam-shapes.shex @@ -1,555 +1,581 @@ -BASE -PREFIX obo: -PREFIX rdf: -PREFIX rdfs: -PREFIX owl: -PREFIX xsd: -PREFIX skos: -#metadata -PREFIX bl: -PREFIX contributor: -PREFIX provided_by: -PREFIX modification_date: -PREFIX creation_date: -PREFIX import_date: -PREFIX xref: -PREFIX exact_match: -PREFIX source: -PREFIX evidence: -PREFIX with: -PREFIX x: -PREFIX y: -#model level annotations -PREFIX ontology: -PREFIX taxon: -PREFIX modelstate: -PREFIX templatestate: -PREFIX oboinowlid: -###contributor, date, providedBy reused -PREFIX title: -PREFIX imports: -# always limit imports to? ; -PREFIX in_taxon: -#semantic: classes -PREFIX GoInformationBiomacromolecule: -PREFIX GoProtein: -PREFIX GoProteinContainingComplex: -PREFIX GoCellularComponent: -PREFIX GoBiologicalProcess: -PREFIX GoAnatomicalStructureDevelopment: -PREFIX GoAnatomicalStructureFormationInvolvedInMorphogenesis: -PREFIX GoAnatomicalStructureMorphogenesis: -PREFIX GoCellDifferentiation: -PREFIX GoCellDivision: -PREFIX GoCellFateCommitment: -PREFIX GoCellFateDetermination: -PREFIX GoCellFateSpecification: -PREFIX GoCellularComponentAssembly: -PREFIX GoCellularComponentDisassembly: -PREFIX GoCellularComponentOrganization: -PREFIX GoDevelopmentalMaturation: -PREFIX GoGrowth: -PREFIX GoLocalization: -PREFIX GoLocomotion: -PREFIX GoMovementOfCellOrSubcellularComponent: -PREFIX GoProteinContainingComplexRemodeling: -PREFIX GoPatternSpecificationProcess: -PREFIX GoMolecularFunction: -prefix GoMolecularEvent: -PREFIX GoTransporterActivity: -PREFIX GoChemicalEntity: -PREFIX GoEvidence: -PREFIX GoAnatomicalEntity: -PREFIX GoNativeCell: -PREFIX GoOrganism: -PREFIX GoBiologicalPhase: -PREFIX GoLifeCycleStage: -PREFIX GoPlantStructureDevelopmentStage: -#semantic: relations -PREFIX part_of: -PREFIX has_part: -PREFIX occurs_in: -PREFIX adjacent_to: -PREFIX overlaps: -PREFIX existence_overlaps: -PREFIX existence_starts_and_ends_during: -PREFIX enabled_by: -PREFIX contributes_to: -PREFIX has_input: -PREFIX has_output: -PREFIX has_target_end_location: -PREFIX has_target_start_location: -PREFIX transports_or_maintains_localization_of: -PREFIX directly_provides_input_for: -PREFIX directly_positively_regulates: -PREFIX located_in: -PREFIX location_of: -PREFIX is_active_in: -PREFIX happens_during: -PREFIX regulates: -PREFIX negatively_regulates: -PREFIX positively_regulates: -PREFIX directly_regulates: -PREFIX directly_negatively_regulates: -PREFIX directly_activates: -PREFIX causally_upstream_of_or_within: -PREFIX causally_upstream_of_or_within_negative_effect: -PREFIX causally_upstream_of_or_within_positive_effect: -PREFIX causally_upstream_of: -PREFIX causally_upstream_of_negative_effect: -PREFIX causally_upstream_of_positive_effect: -PREFIX acts_on_population_of: -PREFIX results_in_development_of: -PREFIX results_in_formation_of: -PREFIX results_in_morphogenesis_of: -PREFIX results_in_acquisition_of_features_of: -PREFIX results_in_commitment_to: -PREFIX results_in_determination_of: -PREFIX results_in_specification_of: -PREFIX results_in_assembly_of: -PREFIX results_in_disassembly_of: -PREFIX results_in_organization_of: -PREFIX results_in_maturation_of: -PREFIX results_in_growth_of: -PREFIX results_in_movement_of: -PREFIX results_in_remodeling_of: - - { - a [owl:Ontology] + ; - contributor: xsd:string +; #TODO would be better as an IRI - modification_date: xsd:string {1}; #Use ISO 8601 as a standard. - creation_date: xsd:string {0,1}; #Use ISO 8601 as a standard. - import_date: xsd:string {0,1}; #Use ISO 8601 as a standard. - provided_by: xsd:string +; #TODO would be better as an IRI - rdfs:comment xsd:string *; - modelstate: xsd:string {1}; #TODO would be better as an IRI - templatestate: xsd:string {0,1}; #TODO should be modeled as xsd:boolean but currently a string. No value means false. - in_taxon: . *; - title: xsd:string {1}; - imports: . *; - oboinowlid: . *; #TODO not sure if we really want this? - owl:versionIRI . *; -} - - { - contributor: xsd:string *; #TODO would be better as an IRI - modification_date: xsd:string {1}; #Use ISO 8601 as a standard. - creation_date: xsd:string {0,1}; #Use ISO 8601 as a standard. - import_date: xsd:string {0,1}; #Use ISO 8601 as a standard. - provided_by: xsd:string *; #TODO would be better as an IRI - rdfs:comment xsd:string *; - skos:note xsd:string *; -} - - IRI @ AND EXTRA a { - a [owl:NamedIndividual] * // rdfs:comment "Every entity we care about is a named individual"; - xref: . *; - rdfs:label . {0,1} //rdfs:comment "the name" ; - exact_match: . *; - x: . {0,1} // rdfs:comment "X coordinate for node"; - y: . {0,1} // rdfs:comment "Y coordinate for node"; - skos:narrower . * //rdfs:comment "This entity (e.g. a node representing a pathway) represents a narrower (in any sense) concept then the target node. "; - skos:broader . * //rdfs:comment "This entity (e.g. a node representing a pathway) represents a broader (in any sense) concept then the target node. "; -} // rdfs:comment "Default allowable metadata for GO-CAM entities" - - { - rdf:type [ owl:Class ] {1}; -} - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoBiologicalProcess: ] ; -} - - BNode @ AND { - owl:complementOf @ -} - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoOrganism: ] ; -} - - @ AND EXTRA a { - a @ ; -} // rdfs:comment "A member of a class of organisms defined in the NCBI taxonomy" - - @ AND EXTRA a { - a ( @ OR @ ) {1}; - part_of: @ *; - has_input: ( @ OR @ OR @ OR @ ) *; - has_output: ( @ OR @ OR @ ) *; - occurs_in: @ {0,1}; - transports_or_maintains_localization_of: ( @ OR @ ) *; - has_target_end_location: @ {0,1}; - has_target_start_location: @ {0,1}; - causally_upstream_of: ( @ OR @ OR @ ) *; - causally_upstream_of_negative_effect: ( @ OR @ OR @ ) *; - causally_upstream_of_positive_effect: ( @ OR @ OR @ ) *; - regulates: @ *; - negatively_regulates: @ *; - positively_regulates: @ *; - acts_on_population_of: ( @ OR @ ) *; -} // rdfs:comment "A biological process" - - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoAnatomicalStructureDevelopment: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_development_of: @ {0,1}; -} // rdfs:comment "an anatomical structure development class GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoAnatomicalStructureFormationInvolvedInMorphogenesis: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_formation_of: @ {0,1}; -} // rdfs:comment "an anatomical structure formation involved in morphogenesis class GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoAnatomicalStructureMorphogenesis: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_morphogenesis_of: @ {0,1}; -} // rdfs:comment "an anatomical structure morphogenesis class GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoCellDifferentiation: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_acquisition_of_features_of: @ {0,1}; -} // rdfs:comment "a cell differentiation GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoCellDivision: ] ; -} - - @ AND EXTRA a { - a @ {1}; - has_input: @ {0,1}; -} // rdfs:comment "a cell division GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoCellFateCommitment: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_commitment_to: @ {0,1}; -} // rdfs:comment "a cell fate commitment GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoCellFateDetermination: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_determination_of: @ {0,1}; -} // rdfs:comment "a cell fate determination GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoCellFateSpecification: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_specification_of: @ {0,1}; -} // rdfs:comment "a cell fate specification GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoCellularComponentAssembly: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_assembly_of: @ {0,1}; -} // rdfs:comment "a cellular component assembly GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoCellularComponentDisassembly: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_disassembly_of: @ {0,1}; -} // rdfs:comment "a cellular component disassembly GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoCellularComponentOrganization: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_organization_of: @ {0,1}; -} // rdfs:comment "a cellular component organization GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoDevelopmentalMaturation: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_maturation_of: @ {0,1}; -} // rdfs:comment "a developmental maturation GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoGrowth: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_growth_of: @ {0,1}; -} // rdfs:comment "a growth GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoLocalization: ] ; -} - - @ AND EXTRA a { - a @ {1}; - transports_or_maintains_localization_of: ( @ OR @ OR @ OR @ ) *; - has_target_end_location: @ {0,1}; - has_target_start_location: @ {0,1}; -} // rdfs:comment "a localization GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoLocomotion: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_movement_of: @ {0,1}; -} // rdfs:comment "a locomotion GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoMovementOfCellOrSubcellularComponent: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_movement_of: ( @ OR @ ) {0,1}; -} // rdfs:comment "a movement of cell or subcellular component GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoProteinContainingComplexRemodeling: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_remodeling_of: @ {0,1}; -} // rdfs:comment "a protein containing complex remodeling GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoPatternSpecificationProcess: ] ; -} - - @ AND EXTRA a { - a @ {1}; - results_in_specification_of: @ {0,1}; -} // rdfs:comment "a pattern specification process GO biological process or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoMolecularFunction: ] ; -} - - BNode @ AND { - owl:complementOf @ -} - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoMolecularEvent: ] ; -} - - BNode @ AND { - owl:complementOf @ -} - - @ AND EXTRA a { - a ( @ OR @ ) {1}; -} - - @ AND EXTRA a { - a ( @ OR @ ) {1}; - enabled_by: ( @ OR @ ) {0,1} // true ; - part_of: @ * // true ; - has_part: @ *; - occurs_in: @ {0,1}; - has_output: ( @ OR @ ) *; - has_input: ( @ OR @ ) *; - directly_provides_input_for: ( @ OR @ ) *; - regulates: ( @ OR @ ) *; - negatively_regulates: ( @ OR @ ) *; - positively_regulates: ( @ OR @ ) *; - directly_regulates: ( @ OR @ ) *; - directly_negatively_regulates: ( @ OR @ ) *; - directly_positively_regulates: ( @ OR @ ) *; - causally_upstream_of_or_within: ( @ OR @ OR @ ) *; - causally_upstream_of_or_within_negative_effect: @ *; - causally_upstream_of_or_within_positive_effect: @ *; - causally_upstream_of: ( @ OR @ OR @ ) *; - causally_upstream_of_negative_effect: ( @ OR @ OR @ ) *; - causally_upstream_of_positive_effect: ( @ OR @ OR @ ) *; - happens_during: ( @ OR @ OR @ ) *; -} // rdfs:comment "A molecular function" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoTransporterActivity: ]; -} - - @ AND EXTRA a { - a @ {1}; - transports_or_maintains_localization_of: ( @ OR @ OR @ ) *; - has_target_end_location: @ * // true ; - has_target_start_location: @ * // true ; -} // rdfs:comment "a transporter activity GO molecular function or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoBiologicalPhase: ]; -} - - @ AND EXTRA a { - a @; -} // rdfs:comment "a biological phase" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoLifeCycleStage: ]; -} - - @ AND EXTRA a { - a @; -} // rdfs:comment "a lifecycle stage" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoPlantStructureDevelopmentStage: ]; -} - - @ AND EXTRA a { - a @; -} // rdfs:comment "a plant structure developmental stage" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoAnatomicalEntity: ]; -} - - BNode @ AND { - owl:complementOf @ -} - - @ AND EXTRA a { - a ( @ OR @ ); - part_of: @ {0,1}; - location_of: ( @ OR @ ) {0,1}; -} // rdfs:comment "an anatomical entity" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoNativeCell: ]; -} - - @ AND EXTRA a { - a @ {1}; - part_of: @ {0,1}; -} // rdfs:comment "a native cell or child" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoCellularComponent: ]; -} - - BNode @ AND { - owl:complementOf @ -} - - IRI @ AND EXTRA a { - a [ GoCellularComponent: ]; -} - -# @ AND EXTRA a { # If we want to intersect with anatomical entity, then GO cellular_component needs to subclass anatomical entity in go-lego - @ AND EXTRA a { - a ( @ OR @ ) {1}; - part_of: @ {0,1}; - adjacent_to: @ *; - overlaps: @ *; - existence_overlaps: ( @ OR @ OR @ ) *; - existence_starts_and_ends_during: ( @ OR @ OR @ ) *; -} // rdfs:comment "a cellular component" - - @ AND EXTRA a { - a @; - located_in: @ {0,1}; - is_active_in: @ OR @ {0,1}; - has_part: ( @ OR @) *; - existence_overlaps: ( @ OR @ OR @ ) *; - existence_starts_and_ends_during: ( @ OR @ OR @ ) *; -} // rdfs:comment "a protein complex" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoProteinContainingComplex: ]; -} - - @ AND EXTRA a { - a @ +; -}// rdfs:comment "a molecular entity (a gene product, chemical, or complex typically)" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoChemicalEntity: ]; -} - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoProtein: ]; -} - @ AND EXTRA a { - a @ ; - located_in: @ {0,1}; - is_active_in: @ OR @ {0,1}; - part_of: @ {0,1}; - contributes_to: @ {0,1}; -}// rdfs:comment "a protein" - - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoInformationBiomacromolecule: ]; -} - @ AND EXTRA a { - a @ +; - located_in: @ {0,1}; - is_active_in: @ OR @ {0,1}; - part_of: @ {0,1}; - contributes_to: @ {0,1}; -}// rdfs:comment "an information biomacromolecule - e.g. a protein or RNA product" - - IRI @ AND EXTRA rdfs:subClassOf { - rdfs:subClassOf [ GoEvidence: ] ; -} - - @ AND EXTRA a { - a @ {1}; - source: xsd:string {1}; - with: xsd:string {0,1} -}// rdfs:comment "A kind of evidence" - - BNode @ AND { - a [ owl:Axiom ] ; - owl:annotatedSource @ ; - owl:annotatedProperty IRI ; - owl:annotatedTarget @ ; - evidence: @ * -} - -# { -# bl:category . {0} -# // rdfs:comment "has no type tag inside" ; -#} // rdfs:comment "has no type tag full rule" - -# { -# bl:category . {1} -#} // rdfs:comment "has exactly one type tag" - -# { -# bl:category . {2,} +BASE +PREFIX obo: +PREFIX rdf: +PREFIX rdfs: +PREFIX owl: +PREFIX xsd: +PREFIX skos: +PREFIX prov: +#metadata +PREFIX bl: +PREFIX contributor: +PREFIX provided_by: +PREFIX modification_date: +PREFIX creation_date: +PREFIX import_date: +PREFIX xref: +PREFIX exact_match: +PREFIX source: +PREFIX evidence: +PREFIX with: +PREFIX x: +PREFIX y: +#model level annotations +PREFIX ontology: +PREFIX taxon: +PREFIX modelstate: +PREFIX templatestate: +PREFIX oboinowlid: +###contributor, date, providedBy reused +PREFIX title: +PREFIX imports: +# always limit imports to? ; +PREFIX in_taxon: +#semantic: classes +PREFIX GoInformationBiomacromolecule: +PREFIX GoProtein: +PREFIX GoProteinContainingComplex: +PREFIX GoCellularComponent: +PREFIX GoBiologicalProcess: +PREFIX GoAnatomicalStructureDevelopment: +PREFIX GoAnatomicalStructureFormationInvolvedInMorphogenesis: +PREFIX GoAnatomicalStructureMorphogenesis: +PREFIX GoCellDifferentiation: +PREFIX GoCellDivision: +PREFIX GoCellFateCommitment: +PREFIX GoCellFateDetermination: +PREFIX GoCellFateSpecification: +PREFIX GoCellularComponentAssembly: +PREFIX GoCellularComponentDisassembly: +PREFIX GoCellularComponentOrganization: +PREFIX GoDevelopmentalMaturation: +PREFIX GoGrowth: +PREFIX GoLocalization: +PREFIX GoLocomotion: +PREFIX GoProteinContainingComplexRemodeling: +PREFIX GoPatternSpecificationProcess: +PREFIX GoMetabolicProcess: +PREFIX GoTransport: +PREFIX GoMolecularFunction: +prefix GoMolecularEvent: +PREFIX GoTransporterActivity: +PREFIX GoChemicalEntity: +PREFIX GoEvidence: +PREFIX GoAnatomicalEntity: +PREFIX GoNativeCell: +PREFIX GoOrganism: +PREFIX GoBiologicalPhase: +PREFIX GoLifeCycleStage: +PREFIX GoPlantStructureDevelopmentStage: +#semantic: relations +PREFIX part_of: +PREFIX has_part: +PREFIX occurs_in: +PREFIX adjacent_to: +PREFIX overlaps: +PREFIX existence_overlaps: +PREFIX existence_starts_and_ends_during: +PREFIX enabled_by: +PREFIX contributes_to: +PREFIX has_input: +PREFIX has_output: +PREFIX has_primary_input: +PREFIX has_primary_output: +PREFIX has_target_end_location: +PREFIX has_target_start_location: +PREFIX transports_or_maintains_localization_of: +PREFIX directly_provides_input_for: +PREFIX directly_positively_regulates: +PREFIX located_in: +PREFIX location_of: +PREFIX is_active_in: +PREFIX happens_during: +PREFIX regulates: +PREFIX negatively_regulates: +PREFIX positively_regulates: +PREFIX directly_regulates: +PREFIX directly_negatively_regulates: +PREFIX directly_activates: +PREFIX indirectly_regulates: +PREFIX indirectly_positively_regulates: +PREFIX indirectly_negatively_regulates: +PREFIX constitutively_upstream_of: +PREFIX removes_input_for: +PREFIX causally_upstream_of_or_within: +PREFIX causally_upstream_of_or_within_negative_effect: +PREFIX causally_upstream_of_or_within_positive_effect: +PREFIX causally_upstream_of: +PREFIX causally_upstream_of_negative_effect: +PREFIX causally_upstream_of_positive_effect: +PREFIX acts_on_population_of: +PREFIX results_in_development_of: +PREFIX results_in_formation_of: +PREFIX results_in_morphogenesis_of: +PREFIX results_in_acquisition_of_features_of: +PREFIX results_in_commitment_to: +PREFIX results_in_determination_of: +PREFIX results_in_specification_of: +PREFIX results_in_assembly_of: +PREFIX results_in_disassembly_of: +PREFIX results_in_organization_of: +PREFIX results_in_maturation_of: +PREFIX results_in_growth_of: +PREFIX results_in_movement_of: +PREFIX results_in_remodeling_of: + + { + a [owl:Ontology] + ; + contributor: xsd:string +; #TODO would be better as an IRI + modification_date: xsd:string {1}; #Use ISO 8601 as a standard. + creation_date: xsd:string {0,1}; #Use ISO 8601 as a standard. + import_date: xsd:string {0,1}; #Use ISO 8601 as a standard. + provided_by: xsd:string +; #TODO would be better as an IRI + rdfs:comment xsd:string *; + modelstate: xsd:string {1}; #TODO would be better as an IRI + templatestate: xsd:string {0,1}; #TODO should be modeled as xsd:boolean but currently a string. No value means false. + in_taxon: . *; + title: xsd:string {1}; + imports: . *; + oboinowlid: . *; #TODO not sure if we really want this? + owl:versionIRI . *; + prov:wasDerivedFrom IRI {0,1}; # for model copy +} + + { + contributor: xsd:string +; #TODO would be better as an IRI + modification_date: xsd:string {1}; #Use ISO 8601 as a standard. + creation_date: xsd:string {0,1}; #Use ISO 8601 as a standard. + import_date: xsd:string {0,1}; #Use ISO 8601 as a standard. + provided_by: xsd:string *; #TODO would be better as an IRI + rdfs:comment xsd:string *; + skos:note xsd:string *; +} + + IRI @ AND EXTRA a { + a [owl:NamedIndividual] * // rdfs:comment "Every entity we care about is a named individual"; + xref: . * // rdfs:comment "mappings for the entity. Value is typically a CURIE string. Currently this is only used for Reactome-derived models." ; + rdfs:label . {0,1} // rdfs:comment "the name of the entity. Currently this is only used for Reactome-derived models." ; + exact_match: . *; + x: . {0,1} // rdfs:comment "X coordinate for node. This is used for caching layouts in the Noctua Graph Editor."; + y: . {0,1} // rdfs:comment "Y coordinate for node. This is used for caching layouts in the Noctua Graph Editor."; + skos:narrower . * // rdfs:comment "This entity (e.g. a node representing a pathway) represents a narrower (in any sense) concept then the target node. "; + skos:broader . * // rdfs:comment "This entity (e.g. a node representing a pathway) represents a broader (in any sense) concept then the target node. "; +} // rdfs:comment "Default allowable metadata for GO-CAM entities" + + { + rdf:type [ owl:Class ] {1}; +} + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoBiologicalProcess: ] ; +} + + BNode @ AND { + owl:complementOf @ +} + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoOrganism: ] ; +} + + @ AND EXTRA a { + a @ ; +} // rdfs:comment "A member of a class of organisms defined in the NCBI taxonomy" + + @ AND EXTRA a { + a ( @ OR @ ) {1}; + part_of: @ * // true; + has_input: ( @ OR @ OR @ OR @ ) *; + has_output: ( @ OR @ OR @ ) *; + occurs_in: @ {0,1} // true; + transports_or_maintains_localization_of: ( @ OR @ ) *; + has_target_end_location: @ {0,1}; + has_target_start_location: @ {0,1}; + causally_upstream_of: ( @ OR @ OR @ ) * // true; + causally_upstream_of_negative_effect: ( @ OR @ OR @ ) * // true; + causally_upstream_of_positive_effect: ( @ OR @ OR @ ) * // true; + regulates: @ * // true; + negatively_regulates: @ * // true; + positively_regulates: @ * // true; + acts_on_population_of: ( @ OR @ ) *; +} // rdfs:comment "A biological process" + + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoAnatomicalStructureDevelopment: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_development_of: @ {0,1}; +} // rdfs:comment "an anatomical structure development class GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoAnatomicalStructureFormationInvolvedInMorphogenesis: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_formation_of: @ {0,1}; +} // rdfs:comment "an anatomical structure formation involved in morphogenesis class GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoAnatomicalStructureMorphogenesis: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_morphogenesis_of: @ {0,1}; +} // rdfs:comment "an anatomical structure morphogenesis class GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoCellDifferentiation: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_acquisition_of_features_of: @ {0,1}; +} // rdfs:comment "a cell differentiation GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoCellDivision: ] ; +} + + @ AND EXTRA a { + a @ {1}; + has_input: @ {0,1}; +} // rdfs:comment "a cell division GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoCellFateCommitment: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_commitment_to: @ {0,1}; +} // rdfs:comment "a cell fate commitment GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoCellFateDetermination: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_determination_of: @ {0,1}; +} // rdfs:comment "a cell fate determination GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoCellFateSpecification: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_specification_of: @ {0,1}; +} // rdfs:comment "a cell fate specification GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoCellularComponentAssembly: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_assembly_of: @ {0,1}; +} // rdfs:comment "a cellular component assembly GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoCellularComponentDisassembly: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_disassembly_of: @ {0,1}; +} // rdfs:comment "a cellular component disassembly GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoCellularComponentOrganization: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_organization_of: @ {0,1}; +} // rdfs:comment "a cellular component organization GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoDevelopmentalMaturation: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_maturation_of: @ {0,1}; +} // rdfs:comment "a developmental maturation GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoGrowth: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_growth_of: @ {0,1}; +} // rdfs:comment "a growth GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoLocalization: ] ; +} + + @ AND EXTRA a { + a @ {1}; + transports_or_maintains_localization_of: ( @ OR @ OR @ OR @ ) *; + has_target_end_location: @ {0,1}; + has_target_start_location: @ {0,1}; +} // rdfs:comment "a localization GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoLocomotion: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_movement_of: @ {0,1}; +} // rdfs:comment "a locomotion GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoMetabolicProcess: ] ; +} + + @ AND EXTRA a { + a @ {1}; + has_primary_input: @ *; + has_primary_output: @ *; +} // rdfs:comment "a metabolic process GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoProteinContainingComplexRemodeling: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_remodeling_of: @ {0,1}; +} // rdfs:comment "a protein containing complex remodeling GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoPatternSpecificationProcess: ] ; +} + + @ AND EXTRA a { + a @ {1}; + results_in_specification_of: @ {0,1}; +} // rdfs:comment "a pattern specification process GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoTransport: ] ; +} + + @ AND EXTRA a { + a @ {1}; + has_primary_input: ( @ OR @ OR @ ) *; + has_primary_output: ( @ OR @ OR @ ) *; +} // rdfs:comment "a transport GO biological process or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoMolecularFunction: ] ; +} + + BNode @ AND { + owl:complementOf @ +} + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoMolecularEvent: ] ; +} + + BNode @ AND { + owl:complementOf @ +} + + @ AND EXTRA a { + a ( @ OR @ ) {1}; +} + + @ AND EXTRA a { + a ( @ OR @ ) {1}; + enabled_by: ( @ OR @ ) {0,1}; + part_of: @ * // true; + has_part: @ *; + occurs_in: @ {0,1} // true; + has_output: ( @ OR @ ) *; + has_input: ( @ OR @ ) *; + directly_provides_input_for: ( @ OR @ ) * // true; + regulates: ( @ OR @ ) * // true; + negatively_regulates: ( @ OR @ ) * // true; + positively_regulates: ( @ OR @ ) * // true; + directly_regulates: ( @ OR @ ) * // true; + directly_negatively_regulates: ( @ OR @ ) * // true; + directly_positively_regulates: ( @ OR @ ) * // true; + indirectly_regulates: ( @ OR @) *; + indirectly_positively_regulates: ( @ OR @ ) * // true; + indirectly_negatively_regulates: ( @ OR @ ) * // true; + constitutively_upstream_of: ( @ OR @ ) *; + removes_input_for: ( @ OR @ ) *; + causally_upstream_of_or_within: ( @ OR @ OR @ ) * // true; + causally_upstream_of_or_within_negative_effect: @ * // true; + causally_upstream_of_or_within_positive_effect: @ * // true; + causally_upstream_of: ( @ OR @ OR @ ) * // true; + causally_upstream_of_negative_effect: ( @ OR @ OR @ ) * // true; + causally_upstream_of_positive_effect: ( @ OR @ OR @ ) * // true; + happens_during: ( @ OR @ OR @ ) *; +} // rdfs:comment "A molecular function" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoTransporterActivity: ]; +} + + @ AND EXTRA a { + a @ {1}; + transports_or_maintains_localization_of: ( @ OR @ OR @ ) *; + has_target_end_location: @ *; + has_target_start_location: @ *; +} // rdfs:comment "a transporter activity GO molecular function or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoBiologicalPhase: ]; +} + + @ AND EXTRA a { + a @; +} // rdfs:comment "a biological phase" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoLifeCycleStage: ]; +} + + @ AND EXTRA a { + a @; +} // rdfs:comment "a lifecycle stage" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoPlantStructureDevelopmentStage: ]; +} + + @ AND EXTRA a { + a @; +} // rdfs:comment "a plant structure developmental stage" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoAnatomicalEntity: ]; +} + + BNode @ AND { + owl:complementOf @ +} + + @ AND EXTRA a { + a ( @ OR @ ); + part_of: @ {0,1}; + location_of: ( @ OR @ ) {0,1}; +} // rdfs:comment "an anatomical entity" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoNativeCell: ]; +} + + @ AND EXTRA a { + a @ {1}; + part_of: @ {0,1}; +} // rdfs:comment "a native cell or child" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoCellularComponent: ]; +} + + BNode @ AND { + owl:complementOf @ +} + + IRI @ AND EXTRA a { + a [ GoCellularComponent: ]; +} + +# @ AND EXTRA a { # If we want to intersect with anatomical entity, then GO cellular_component needs to subclass anatomical entity in go-lego + @ AND EXTRA a { + a ( @ OR @ ) {1}; + part_of: @ {0,1}; + adjacent_to: @ *; + overlaps: @ *; + existence_overlaps: ( @ OR @ OR @ ) *; + existence_starts_and_ends_during: ( @ OR @ OR @ ) *; +} // rdfs:comment "a cellular component" + + @ AND EXTRA a { + a @; + located_in: @ {0,1}; + is_active_in: @ OR @ {0,1}; + has_part: ( @ OR @) *; + existence_overlaps: ( @ OR @ OR @ ) *; + existence_starts_and_ends_during: ( @ OR @ OR @ ) *; +} // rdfs:comment "a protein complex" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoProteinContainingComplex: ]; +} + + @ AND EXTRA a { + a @ +; +}// rdfs:comment "a molecular entity (a gene product, chemical, or complex typically)" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoChemicalEntity: ]; +} + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoProtein: ]; +} + @ AND EXTRA a { + a @ ; + located_in: @ {0,1}; + is_active_in: @ OR @ {0,1}; + part_of: @ {0,1}; + contributes_to: @ {0,1}; +}// rdfs:comment "a protein" + + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoInformationBiomacromolecule: ]; +} + @ AND EXTRA a { + a @ +; + located_in: @ {0,1}; + is_active_in: @ OR @ {0,1}; + part_of: @ {0,1}; + contributes_to: @ {0,1}; +}// rdfs:comment "an information biomacromolecule - e.g. a protein or RNA product" + + IRI @ AND EXTRA rdfs:subClassOf { + rdfs:subClassOf [ GoEvidence: ] ; +} + + @ AND EXTRA a { + a @ {1}; + source: xsd:string {1}; + with: xsd:string {0,1} +}// rdfs:comment "A kind of evidence" + + BNode @ AND { + a [ owl:Axiom ] ; + owl:annotatedSource @ ; + owl:annotatedProperty IRI ; + owl:annotatedTarget @ ; + evidence: @ * +} + +# { +# bl:category . {0} +# // rdfs:comment "has no type tag inside" ; +#} // rdfs:comment "has no type tag full rule" + +# { +# bl:category . {1} +#} // rdfs:comment "has exactly one type tag" + +# { +# bl:category . {2,} #} // rdfs:comment "has multiple type tags" \ No newline at end of file diff --git a/shapes/json/look_table.json b/shapes/json/look_table.json index b04b696..c4ed2a7 100644 --- a/shapes/json/look_table.json +++ b/shapes/json/look_table.json @@ -1,242 +1,737 @@ -{ - "CHEBI:33695": { - "label": "GOINFORMATIONBIOMACROMOLECULE" - }, - "CHEBI:36080": { - "label": "GOPROTEIN" - }, - "GO:0032991": { - "label": "GOPROTEINCONTAININGCOMPLEX" - }, - "GO:0005575": { - "label": "GOCELLULARCOMPONENT" - }, - "GO:0008150": { - "label": "GOBIOLOGICALPROCESS" - }, - "GO:0048856": { - "label": "GOANATOMICALSTRUCTUREDEVELOPMENT" - }, - "GO:0048646": { - "label": "GOANATOMICALSTRUCTUREFORMATIONINVOLVEDINMORPHOGENESIS" - }, - "GO:0009653": { - "label": "GOANATOMICALSTRUCTUREMORPHOGENESIS" - }, - "GO:0030154": { - "label": "GOCELLDIFFERENTIATION" - }, - "GO:0051301": { - "label": "GOCELLDIVISION" - }, - "GO:0045165": { - "label": "GOCELLFATECOMMITMENT" - }, - "GO:0001709": { - "label": "GOCELLFATEDETERMINATION" - }, - "GO:0001708": { - "label": "GOCELLFATESPECIFICATION" - }, - "GO:0022607": { - "label": "GOCELLULARCOMPONENTASSEMBLY" - }, - "GO:0022411": { - "label": "GOCELLULARCOMPONENTDISASSEMBLY" - }, - "GO:0016043": { - "label": "GOCELLULARCOMPONENTORGANIZATION" - }, - "GO:0021700": { - "label": "GODEVELOPMENTALMATURATION" - }, - "GO:0040007": { - "label": "GOGROWTH" - }, - "GO:0051179": { - "label": "GOLOCALIZATION" - }, - "GO:0040011": { - "label": "GOLOCOMOTION" - }, - "GO:0006928": { - "label": "GOMOVEMENTOFCELLORSUBCELLULARCOMPONENT" - }, - "GO:0034367": { - "label": "GOPROTEINCONTAININGCOMPLEXREMODELING" - }, - "GO:0007389": { - "label": "GOPATTERNSPECIFICATIONPROCESS" - }, - "GO:0003674": { - "label": "GOMOLECULARFUNCTION" - }, - "GO:0005215": { - "label": "GOTRANSPORTERACTIVITY" - }, - "CHEBI:24431": { - "label": "GOCHEMICALENTITY" - }, - "ECO:0000000": { - "label": "GOEVIDENCE" - }, - "CARO:0000000": { - "label": "GOANATOMICALENTITY" - }, - "CL:0000003": { - "label": "GONATIVECELL" - }, - "NCBITaxon:1": { - "label": "GOORGANISM" - }, - "GO:0044848": { - "label": "GOBIOLOGICALPHASE" - }, - "UBERON:0000105": { - "label": "GOLIFECYCLESTAGE" - }, - "PO:0009012": { - "label": "GOPLANTSTRUCTUREDEVELOPMENTSTAGE" - }, - "BFO:0000050": { - "label": "PART_OF" - }, - "BFO:0000051": { - "label": "HAS_PART" - }, - "BFO:0000066": { - "label": "OCCURS_IN" - }, - "RO:0002220": { - "label": "ADJACENT_TO" - }, - "RO:0002131": { - "label": "OVERLAPS" - }, - "RO:0002490": { - "label": "EXISTENCE_OVERLAPS" - }, - "RO:0002491": { - "label": "EXISTENCE_STARTS_AND_ENDS_DURING" - }, - "RO:0002333": { - "label": "ENABLED_BY" - }, - "RO:0002326": { - "label": "CONTRIBUTES_TO" - }, - "RO:0002233": { - "label": "HAS_INPUT" - }, - "RO:0002234": { - "label": "HAS_OUTPUT" - }, - "RO:0002339": { - "label": "HAS_TARGET_END_LOCATION" - }, - "RO:0002338": { - "label": "HAS_TARGET_START_LOCATION" - }, - "RO:0002313": { - "label": "TRANSPORTS_OR_MAINTAINS_LOCALIZATION_OF" - }, - "RO:0002413": { - "label": "DIRECTLY_PROVIDES_INPUT_FOR" - }, - "RO:0002629": { - "label": "DIRECTLY_POSITIVELY_REGULATES" - }, - "RO:0001025": { - "label": "LOCATED_IN" - }, - "RO:0001015": { - "label": "LOCATION_OF" - }, - "RO:0002432": { - "label": "IS_ACTIVE_IN" - }, - "RO:0002092": { - "label": "HAPPENS_DURING" - }, - "RO:0002211": { - "label": "REGULATES" - }, - "RO:0002212": { - "label": "NEGATIVELY_REGULATES" - }, - "RO:0002213": { - "label": "POSITIVELY_REGULATES" - }, - "RO:0002578": { - "label": "DIRECTLY_REGULATES" - }, - "RO:0002630": { - "label": "DIRECTLY_NEGATIVELY_REGULATES" - }, - "RO:0002406": { - "label": "DIRECTLY_ACTIVATES" - }, - "RO:0002418": { - "label": "CAUSALLY_UPSTREAM_OF_OR_WITHIN" - }, - "RO:0004046": { - "label": "CAUSALLY_UPSTREAM_OF_OR_WITHIN_NEGATIVE_EFFECT" - }, - "RO:0004047": { - "label": "CAUSALLY_UPSTREAM_OF_OR_WITHIN_POSITIVE_EFFECT" - }, - "RO:0002411": { - "label": "CAUSALLY_UPSTREAM_OF" - }, - "RO:0002305": { - "label": "CAUSALLY_UPSTREAM_OF_NEGATIVE_EFFECT" - }, - "RO:0002304": { - "label": "CAUSALLY_UPSTREAM_OF_POSITIVE_EFFECT" - }, - "RO:0012003": { - "label": "ACTS_ON_POPULATION_OF" - }, - "RO:0002296": { - "label": "RESULTS_IN_DEVELOPMENT_OF" - }, - "RO:0002297": { - "label": "RESULTS_IN_FORMATION_OF" - }, - "RO:0002298": { - "label": "RESULTS_IN_MORPHOGENESIS_OF" - }, - "RO:0002315": { - "label": "RESULTS_IN_ACQUISITION_OF_FEATURES_OF" - }, - "RO:0002348": { - "label": "RESULTS_IN_COMMITMENT_TO" - }, - "RO:0002349": { - "label": "RESULTS_IN_DETERMINATION_OF" - }, - "RO:0002356": { - "label": "RESULTS_IN_SPECIFICATION_OF" - }, - "RO:0002588": { - "label": "RESULTS_IN_ASSEMBLY_OF" - }, - "RO:0002590": { - "label": "RESULTS_IN_DISASSEMBLY_OF" - }, - "RO:0002592": { - "label": "RESULTS_IN_ORGANIZATION_OF" - }, - "RO:0002299": { - "label": "RESULTS_IN_MATURATION_OF" - }, - "RO:0002343": { - "label": "RESULTS_IN_GROWTH_OF" - }, - "RO:0002565": { - "label": "RESULTS_IN_MOVEMENT_OF" - }, - "RO:0002591": { - "label": "RESULTS_IN_REMODELING_OF" - } -} \ No newline at end of file +[ + { + "id": "CHEBI:33695", + "label": "information biomacromolecule", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "CHEBI:36080", + "label": "protein", + "definition": "A biological macromolecule minimally consisting of one polypeptide chain synthesized at the ribosome.", + "comment": "", + "synonyms": [ + "proteins" + ] + }, + { + "id": "GO:0032991", + "label": "protein-containing complex", + "definition": "A stable assembly of two or more macromolecules, i.e. proteins, nucleic acids, carbohydrates or lipids, in which at least one component is a protein and the constituent parts function together.", + "comment": "A protein complex in this context is meant as a stable set of interacting proteins which can be co-purified by an acceptable method, and where the complex has been shown to exist as an isolated, functional unit in vivo. Acceptable experimental methods include stringent protein purification followed by detection of protein interaction. The following methods should be considered non-acceptable: simple immunoprecipitation, pull-down experiments from cell extracts without further purification, colocalization and 2-hybrid screening. Interactions that should not be captured as protein complexes include: 1) enzyme/substrate, receptor/ligand or any similar transient interactions, unless these are a critical part of the complex assembly or are required e.g. for the receptor to be functional; 2) proteins associated in a pull-down/co-immunoprecipitation assay with no functional link or any evidence that this is a defined biological entity rather than a loose-affinity complex; 3) any complex where the only evidence is based on genetic interaction data; 4) partial complexes, where some subunits (e.g. transmembrane ones) cannot be expressed as recombinant proteins and are excluded from experiments (in this case, independent evidence is necessary to find out the composition of the full complex, if known). Interactions that may be captured as protein complexes include: 1) enzyme/substrate or receptor/ligand if the complex can only assemble and become functional in the presence of both classes of subunits; 2) complexes where one of the members has not been shown to be physically linked to the other(s), but is a homologue of, and has the same functionality as, a protein that has been experimentally demonstrated to form a complex with the other member(s); 3) complexes whose existence is accepted based on localization and pharmacological studies, but for which experimental evidence is not yet available for the complex as a whole.", + "synonyms": [ + "macromolecular complex", + "macromolecule complex", + "protein containing complex" + ] + }, + { + "id": "GO:0005575", + "label": "cellular_component", + "definition": "A location, relative to cellular compartments and structures, occupied by a macromolecular machine when it carries out a molecular function. There are two ways in which the gene ontology describes locations of gene products: (1) relative to cellular structures (e.g., cytoplasmic side of plasma membrane) or compartments (e.g., mitochondrion), and (2) the stable macromolecular complexes of which they are parts (e.g., the ribosome).", + "comment": "Note that, in addition to forming the root of the cellular component ontology, this term is recommended for use for the annotation of gene products whose cellular component is unknown. When this term is used for annotation, it indicates that no information was available about the cellular component of the gene product annotated as of the date the annotation was made; the evidence code 'no data' (ND), is used to indicate this.", + "synonyms": [ + "cell or subcellular entity", + "cellular component" + ] + }, + { + "id": "GO:0008150", + "label": "biological_process", + "definition": "A biological process represents a specific objective that the organism is genetically programmed to achieve. Biological processes are often described by their outcome or ending state, e.g., the biological process of cell division results in the creation of two daughter cells (a divided cell) from a single parent cell. A biological process is accomplished by a particular set of molecular functions carried out by specific gene products (or macromolecular complexes), often in a highly regulated manner and in a particular temporal sequence.", + "comment": "Note that, in addition to forming the root of the biological process ontology, this term is recommended for use for the annotation of gene products whose biological process is unknown. When this term is used for annotation, it indicates that no information was available about the biological process of the gene product annotated as of the date the annotation was made; the evidence code 'no data' (ND), is used to indicate this.", + "synonyms": [ + "biological process", + "physiological process" + ] + }, + { + "id": "GO:0048856", + "label": "anatomical structure development", + "definition": "The biological process whose specific outcome is the progression of an anatomical structure from an initial condition to its mature state. This process begins with the formation of the structure and ends with the mature structure, whatever form that may be including its natural destruction. An anatomical structure is any biological entity that occupies space and is distinguished from its surroundings. Anatomical structures can be macroscopic such as a carpel, or microscopic such as an acrosome.", + "comment": "", + "synonyms": [ + "development of an anatomical structure" + ] + }, + { + "id": "GO:0048646", + "label": "anatomical structure formation involved in morphogenesis", + "definition": "The developmental process pertaining to the initial formation of an anatomical structure from unspecified parts. This process begins with the specific processes that contribute to the appearance of the discrete structure and ends when the structural rudiment is recognizable. An anatomical structure is any biological entity that occupies space and is distinguished from its surroundings. Anatomical structures can be macroscopic such as a carpel, or microscopic such as an acrosome.", + "comment": "Note that, for example, the formation of a pseudopod in an amoeba would not be considered formation involved in morphogenesis because it would not be thought of as the formation of an anatomical structure that was part of the shaping of the amoeba during its development. The formation of an axon from a neuron would be considered the formation of an anatomical structure involved in morphogenesis because it contributes to the creation of the form of the neuron in a developmental sense.", + "synonyms": [ + "formation of an anatomical structure involved in morphogenesis" + ] + }, + { + "id": "GO:0009653", + "label": "anatomical structure morphogenesis", + "definition": "The process in which anatomical structures are generated and organized. Morphogenesis pertains to the creation of form.", + "comment": "", + "synonyms": [ + "anatomical structure organization", + "morphogenesis" + ] + }, + { + "id": "GO:0030154", + "label": "cell differentiation", + "definition": "The process in which relatively unspecialized cells, e.g. embryonic or regenerative cells, acquire specialized structural and/or functional features that characterize the cells, tissues, or organs of the mature organism or some other relatively stable phase of the organism's life history. Differentiation includes the processes involved in commitment of a cell to a specific fate and its subsequent development to the mature state.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0051301", + "label": "cell division", + "definition": "The process resulting in division and partitioning of components of a cell to form more cells; may or may not be accompanied by the physical separation of a cell into distinct, individually membrane-bounded daughter cells.", + "comment": "Note that this term differs from 'cytokinesis ; GO:0000910' in that cytokinesis does not include nuclear division.", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0045165", + "label": "cell fate commitment", + "definition": "The commitment of cells to specific cell fates and their capacity to differentiate into particular kinds of cells. Positional information is established through protein signals that emanate from a localized source within a cell (the initial one-cell zygote) or within a developmental field.", + "comment": "Note that this term was 'cell fate determination' but the term name was changed to better match its existing definition and the child term 'cell fate determination; GO:0001709' was also created.", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0001709", + "label": "cell fate determination", + "definition": "A process involved in cell fate commitment. Once determination has taken place, a cell becomes committed to differentiate down a particular pathway regardless of its environment.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0001708", + "label": "cell fate specification", + "definition": "The process involved in the specification of cell identity. Once specification has taken place, a cell will be committed to differentiate down a specific pathway if left in its normal environment.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0022607", + "label": "cellular component assembly", + "definition": "The aggregation, arrangement and bonding together of a cellular component.", + "comment": "", + "synonyms": [ + "cell structure assembly", + "cellular component assembly at cellular level" + ] + }, + { + "id": "GO:0022411", + "label": "cellular component disassembly", + "definition": "A cellular process that results in the breakdown of a cellular component.", + "comment": "", + "synonyms": [ + "cell structure disassembly", + "cellular component disassembly at cellular level" + ] + }, + { + "id": "GO:0016043", + "label": "cellular component organization", + "definition": "A process that results in the assembly, arrangement of constituent parts, or disassembly of a cellular component.", + "comment": "", + "synonyms": [ + "cell organisation", + "cellular component organisation at cellular level", + "cellular component organisation in other organism", + "cellular component organization at cellular level", + "cellular component organization in other organism" + ] + }, + { + "id": "GO:0021700", + "label": "developmental maturation", + "definition": "A developmental process, independent of morphogenetic (shape) change, that is required for an anatomical structure, cell or cellular component to attain its fully functional state.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0040007", + "label": "growth", + "definition": "The increase in size or mass of an entire organism, a part of an organism or a cell.", + "comment": "See also the biological process term 'cell growth ; GO:0016049'.", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0051179", + "label": "localization", + "definition": "Any process in which a cell, a substance, or a cellular entity, such as a protein complex or organelle, is transported, tethered to or otherwise maintained in a specific location. In the case of substances, localization may also be achieved via selective degradation.", + "comment": "", + "synonyms": [ + "establishment and maintenance of localization", + "establishment and maintenance of position", + "localisation" + ] + }, + { + "id": "GO:0040011", + "label": "locomotion", + "definition": "Self-propelled movement of a cell or organism from one location to another.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0006928", + "label": "obsolete movement of cell or subcellular component", + "definition": "OBSOLETE. The directed, self-propelled movement of a cell or subcellular component without the involvement of an external agent such as a transporter or a pore.", + "comment": "This term was obsoleted because it mixes cellular and subcellular processes.", + "synonyms": [ + "cellular component motion", + "cellular component movement" + ] + }, + { + "id": "GO:0034367", + "label": "protein-containing complex remodeling", + "definition": "The acquisition, loss, or modification of macromolecules within a complex, resulting in the alteration of an existing complex.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0007389", + "label": "pattern specification process", + "definition": "Any developmental process that results in the creation of defined areas or spaces within an organism to which cells respond and eventually are instructed to differentiate.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0003674", + "label": "molecular_function", + "definition": "A molecular process that can be carried out by the action of a single macromolecular machine, usually via direct physical interactions with other molecular entities. Function in this sense denotes an action, or activity, that a gene product (or a complex) performs. These actions are described from two distinct but related perspectives: (1) biochemical activity, and (2) role as a component in a larger system/process.", + "comment": "Note that, in addition to forming the root of the molecular function ontology, this term is recommended for use for the annotation of gene products whose molecular function is unknown. When this term is used for annotation, it indicates that no information was available about the molecular function of the gene product annotated as of the date the annotation was made; the evidence code 'no data' (ND), is used to indicate this. Despite its name, this is not a type of 'function' in the sense typically defined by upper ontologies such as Basic Formal Ontology (BFO). It is instead a BFO:process carried out by a single gene product or complex.", + "synonyms": [ + "molecular function" + ] + }, + { + "id": "GO:0005215", + "label": "transporter activity", + "definition": "Enables the directed movement of substances (such as macromolecules, small molecules, ions) into, out of or within a cell, or between cells.", + "comment": "Some transporters, such as certain members of the SLC family, are referred to as 'carriers'; however GO uses carrier with a different meaning: a carrier binds to and transports the substance (see GO:0140104 molecular carrier activity), whereas a transporter forms some pore that allows the passing of molecules.", + "synonyms": [ + "" + ] + }, + { + "id": "CHEBI:24431", + "label": "chemical entity", + "definition": "A chemical entity is a physical entity of interest in chemistry including molecular entities, parts thereof, and chemical substances.", + "comment": "", + "synonyms": [ + "chemical entity" + ] + }, + { + "id": "ECO:0000000", + "label": "evidence", + "definition": "A type of information that is used to support an assertion.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "CARO:0000000", + "label": "anatomical entity", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "CL:0000003", + "label": "native cell", + "definition": "A cell that is found in a natural setting, which includes multicellular organism cells 'in vivo' (i.e. part of an organism), and unicellular organisms 'in environment' (i.e. part of a natural environment).", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "NCBITaxon:1", + "label": "root", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "GO:0044848", + "label": "biological phase", + "definition": "A distinct period or stage in a biological process or cycle.", + "comment": "Note that phases are is_a disjoint from other biological processes. happens_during relationships can operate between phases and other biological processes e.g. DNA replication happens_during S phase.", + "synonyms": [ + "" + ] + }, + { + "id": "UBERON:0000105", + "label": "life cycle stage", + "definition": "A spatiotemporal region encompassing some part of the life cycle of an organism.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "PO:0009012", + "label": "plant structure development stage", + "definition": "A stage in the life of a plant structure (PO:0009011) during which the plant structure undergoes developmental processes.", + "comment": "", + "synonyms": [ + "etapa de desarrollo de estructura vegetal (Spanish, exact)", + "plant growth and development stage (exact)" + ] + }, + { + "id": "BFO:0000050", + "label": "part of", + "definition": "a core relation that holds between a part and its whole", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "BFO:0000051", + "label": "has part", + "definition": "a core relation that holds between a whole and its part", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "BFO:0000066", + "label": "occurs in", + "definition": "b occurs_in c =def b is a process and c is a material entity or immaterial entity& there exists a spatiotemporal region r and b occupies_spatiotemporal_region r.& forall(t) if b exists_at t then c exists_at t & there exist spatial regions s and s\u2019 where & b spatially_projects_onto s at t& c is occupies_spatial_region s\u2019 at t& s is a proper_continuant_part_of s\u2019 at t", + "comment": "Paraphrase of definition: a relation between a process and an independent continuant, in which the process takes place entirely within the independent continuant", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002220", + "label": "adjacent to", + "definition": "x adjacent to y if and only if x and y share a boundary.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002131", + "label": "overlaps", + "definition": "x overlaps y if and only if there exists some z such that x has part z and z part of y", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002490", + "label": "existence overlaps", + "definition": "x existence overlaps y if and only if either (a) the start of x is part of y or (b) the end of x is part of y. Formally: x existence starts and ends during y iff (\u03b1(x) >= \u03b1(y) & \u03b1(x) <= \u03c9(y)) OR (\u03c9(x) <= \u03c9(y) & \u03c9(x) >= \u03b1(y))", + "comment": "The relations here were created based on work originally by Fabian Neuhaus and David Osumi-Sutherland. The work has not yet been vetted and errors in definitions may have occurred during transcription.", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002491", + "label": "existence starts and ends during", + "definition": "x exists during y if and only if: 1) the time point at which x begins to exist is after or equal to the time point at which y begins and 2) the time point at which x ceases to exist is before or equal to the point at which y ends. Formally: x existence starts and ends during y iff \u03b1(x) >= \u03b1(y) & \u03b1(x) <= \u03c9(y) & \u03c9(x) <= \u03c9(y) & \u03c9(x) >= \u03b1(y)", + "comment": "The relations here were created based on work originally by Fabian Neuhaus and David Osumi-Sutherland. The work has not yet been vetted and errors in definitions may have occurred during transcription.", + "synonyms": [ + "exists during" + ] + }, + { + "id": "RO:0002333", + "label": "enabled by", + "definition": "inverse of enables", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002326", + "label": "contributes to", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002233", + "label": "has input", + "definition": "p has input c iff: p is a process, c is a material entity, c is a participant in p, c is present at the start of p, and the state of c is modified during p.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002234", + "label": "has output", + "definition": "p has output c iff c is a participant in p, c is present at the end of p, and c is not present in the same state at the beginning of p.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002339", + "label": "has target end location", + "definition": "This relationship holds between p and l when p is a transport or localization process in which the outcome is to move some cargo c from a an initial location to some destination l.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002338", + "label": "has target start location", + "definition": "This relationship holds between p and l when p is a transport or localization process in which the outcome is to move some cargo c from some initial location l to some destination.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002313", + "label": "transports or maintains localization of", + "definition": "Holds between p and c when p is a localization process (localization covers maintenance of localization as well as its establishment) and the outcome of this process is to regulate the localization of c.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002413", + "label": "directly provides input for", + "definition": "p provides input for q iff p is immediately causally upstream of q, and there exists some c such that p has_output c and q has_input c.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002629", + "label": "directly positively regulates", + "definition": "p directly positively regulates q iff p is immediately causally upstream of q, and p positively regulates q.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0001025", + "label": "located in", + "definition": "a relation between two independent continuants, the target and the location, in which the target is entirely within the location", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0001015", + "label": "location of", + "definition": "a relation between two independent continuants, the location and the target, in which the target is entirely within the location", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002432", + "label": "is active in", + "definition": "c executes activity in d if and only if c enables p and p occurs_in d. Assuming no action at a distance by gene products, if a gene product enables (is capable of) a process that occurs in some structure, it must have at least some part in that structure.", + "comment": "", + "synonyms": [ + "enables activity in" + ] + }, + { + "id": "RO:0002092", + "label": "happens during", + "definition": "", + "comment": "X happens_during Y iff: (start(Y) before_or_simultaneous_with start(X)) AND (end(X) before_or_simultaneous_with end(Y))", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002211", + "label": "regulates", + "definition": "process(P1) regulates process(P2) iff:\u00a0P1 results in the initiation or termination of P2 OR affects the frequency of its initiation or termination OR affects the magnitude or rate of output of P2.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002212", + "label": "negatively regulates", + "definition": "p negatively regulates q iff p regulates q, and p decreases the rate or magnitude of execution of q.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002213", + "label": "positively regulates", + "definition": "p positively regulates q iff p regulates q, and p increases the rate or magnitude of execution of q.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002578", + "label": "directly regulates", + "definition": "p directly regulates q iff p is immediately causally upstream of q and p regulates q.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002630", + "label": "directly negatively regulates", + "definition": "p directly negatively regulates q iff p is immediately causally upstream of q, and p negatively regulates q.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002406", + "label": "directly activates", + "definition": "p directly activates q if and only if p is immediately upstream of q and p is the realization of a function to increase the rate or activity of q", + "comment": "This term was obsoleted because it has the same meaning as 'directly positively regulates'.", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002418", + "label": "causally upstream of or within", + "definition": "p 'causally upstream or within' q iff (1) the end of p is before the end of q and (2) the execution of p exerts some causal influence over the outputs of q; i.e. if p was abolished or the outputs of p were to be modified, this would necessarily affect q.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0004046", + "label": "causally upstream of or within, negative effect", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0004047", + "label": "causally upstream of or within, positive effect", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002411", + "label": "causally upstream of", + "definition": "p is causally upstream of q if and only if p precedes q and p and q are linked in a causal chain", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002305", + "label": "causally upstream of, negative effect", + "definition": "p is causally upstream of, negative effect q iff p is casually upstream of q, and the execution of p decreases the execution of q.", + "comment": "holds between x and y if and only if x is causally upstream of y and the progression of x decreases the frequency, rate or extent of y", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002304", + "label": "causally upstream of, positive effect", + "definition": "p is causally upstream of, positive effect q iff p is casually upstream of q, and the execution of p is required for the execution of q.", + "comment": "holds between x and y if and only if x is causally upstream of y and the progression of x increases the frequency, rate or extent of y", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0012003", + "label": "acts on population of", + "definition": "p acts on population of c iff c' is a collection, has members of type c, and p has participant c", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002296", + "label": "results in development of", + "definition": "p 'results in development of' c if and only if p is a developmental process and p results in the state of c changing from its initial state as a primordium or anlage through its mature state and to its final state.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002297", + "label": "results in formation of", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002298", + "label": "results in morphogenesis of", + "definition": "The relationship that links an entity with the process that results in the formation and shaping of that entity over time from an immature to a mature state.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002315", + "label": "results in acquisition of features of", + "definition": "The relationship that links a specified entity with the process that results in an unspecified entity acquiring the features and characteristics of the specified entity", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002348", + "label": "results in commitment to", + "definition": "p 'results in commitment to' c if and only if p is a developmental process and c is a cell and p results in the state of c changing such that is can only develop into a single cell type.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002349", + "label": "results in determination of", + "definition": "p 'results in determination of' c if and only if p is a developmental process and c is a cell and p results in the state of c changing to be determined. Once a cell becomes determined, it becomes committed to differentiate down a particular pathway regardless of its environment.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002356", + "label": "results in specification of", + "definition": "The relationship linking a cell and its participation in a process that results in the fate of the cell being specified. Once specification has taken place, a cell will be committed to differentiate down a specific pathway if left in its normal environment. ", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002588", + "label": "results in assembly of", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002590", + "label": "results in disassembly of", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002592", + "label": "results in organization of", + "definition": "p results in organization of c iff p results in the assembly, arrangement of constituent parts, or disassembly of c", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002299", + "label": "results in maturation of", + "definition": "The relationship that links an entity with a process that results in the progression of the entity over time that is independent of changes in it's shape and results in an end point state of that entity.", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002343", + "label": "results in growth of", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002565", + "label": "results in movement of", + "definition": "Holds between p and c when p is locomotion process and the outcome of this process is the change of location of c", + "comment": "", + "synonyms": [ + "" + ] + }, + { + "id": "RO:0002591", + "label": "results in remodeling of", + "definition": "", + "comment": "", + "synonyms": [ + "" + ] + } +] \ No newline at end of file diff --git a/shapes/json/shex_dump.json b/shapes/json/shex_dump.json index e69de29..2c06fff 100644 --- a/shapes/json/shex_dump.json +++ b/shapes/json/shex_dump.json @@ -0,0 +1,1000 @@ +{ + "goshapes": [ + { + "subject": "GO:0008150", + "object": [ + "GO:0008150" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "BFO:0000050", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0008150", + "object": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991", + "NCBITaxon:1" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002233" + }, + { + "subject": "GO:0008150", + "object": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002234" + }, + { + "subject": "GO:0008150", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "BFO:0000066", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0008150", + "object": [ + "CHEBI:33695", + "GO:0032991" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002313" + }, + { + "subject": "GO:0008150", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002339" + }, + { + "subject": "GO:0008150", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002338" + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002411", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002305", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002304", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002211", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002212", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0008150", + "object": [ + "GO:0008150" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002213", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0008150", + "object": [ + "CARO:0000000", + "NCBITaxon:1" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0012003" + }, + { + "subject": "GO:0048856", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002296" + }, + { + "subject": "GO:0048646", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002297" + }, + { + "subject": "GO:0009653", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002298" + }, + { + "subject": "GO:0030154", + "object": [ + "CL:0000003" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002315" + }, + { + "subject": "GO:0051301", + "object": [ + "CL:0000003" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002233" + }, + { + "subject": "GO:0045165", + "object": [ + "CL:0000003" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002348" + }, + { + "subject": "GO:0001709", + "object": [ + "CL:0000003" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002349" + }, + { + "subject": "GO:0001708", + "object": [ + "CL:0000003" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002356" + }, + { + "subject": "GO:0022607", + "object": [ + "GO:0005575" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002588" + }, + { + "subject": "GO:0022411", + "object": [ + "GO:0005575" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002590" + }, + { + "subject": "GO:0016043", + "object": [ + "GO:0005575" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002592" + }, + { + "subject": "GO:0021700", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002299" + }, + { + "subject": "GO:0040007", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002343" + }, + { + "subject": "GO:0051179", + "object": [ + "CARO:0000000", + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002313" + }, + { + "subject": "GO:0051179", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002339" + }, + { + "subject": "GO:0051179", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002338" + }, + { + "subject": "GO:0040011", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002565" + }, + { + "subject": "GO:0008152", + "object": [ + "CHEBI:24431" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0004009" + }, + { + "subject": "GO:0008152", + "object": [ + "CHEBI:24431" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0004008" + }, + { + "subject": "GO:0034367", + "object": [ + "GO:0032991" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002591" + }, + { + "subject": "GO:0007389", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002356" + }, + { + "subject": "GO:0006810", + "object": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0004009" + }, + { + "subject": "GO:0006810", + "object": [ + "CHEBI:24431", + "CARO:0000000", + "GO:0032991" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0004008" + }, + { + "subject": "GO:0003674", + "object": [ + "CHEBI:33695", + "GO:0032991" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002333" + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "BFO:0000050", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "BFO:0000051" + }, + { + "subject": "GO:0003674", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "BFO:0000066", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "CHEBI:24431", + "GO:0032991" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002234" + }, + { + "subject": "GO:0003674", + "object": [ + "CHEBI:24431", + "GO:0032991" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002233" + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002413", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002211", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002212", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002213", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002578", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002630", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002629", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0012012" + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002407", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002409", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0012009" + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0012010" + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", + "GO:0008150" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002418", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0004046", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0004047", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002411", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002305", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0008150", + "GO:0003674", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002304", + "exclude_from_extensions": [ + true + ] + }, + { + "subject": "GO:0003674", + "object": [ + "GO:0044848", + "UBERON:0000105", + "PO:0009012" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002092" + }, + { + "subject": "GO:0005215", + "object": [ + "CHEBI:24431", + "CHEBI:33695", + "GO:0032991" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002313" + }, + { + "subject": "GO:0005215", + "object": [ + "GO:0005575" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002339" + }, + { + "subject": "GO:0005215", + "object": [ + "GO:0005575" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002338" + }, + { + "subject": "CARO:0000000", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "BFO:0000050" + }, + { + "subject": "CARO:0000000", + "object": [ + "CHEBI:33695", + "GO:0032991" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0001015" + }, + { + "subject": "CL:0000003", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "BFO:0000050" + }, + { + "subject": "GO:0005575", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "BFO:0000050" + }, + { + "subject": "GO:0005575", + "object": [ + "CARO:0000000" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002220" + }, + { + "subject": "GO:0005575", + "object": [ + "CARO:0000000" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002131" + }, + { + "subject": "GO:0005575", + "object": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002490" + }, + { + "subject": "GO:0005575", + "object": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002491" + }, + { + "subject": "GO:0032991", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0001025" + }, + { + "subject": "GO:0032991", + "object": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002432" + }, + { + "subject": "GO:0032991", + "object": [ + "CHEBI:33695", + "GO:0032991" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "BFO:0000051" + }, + { + "subject": "GO:0032991", + "object": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002490" + }, + { + "subject": "GO:0032991", + "object": [ + "GO:0008150", + "UBERON:0000105", + "PO:0009012" + ], + "is_multivalued": true, + "is_required": false, + "context": "", + "predicate": "RO:0002491" + }, + { + "subject": "CHEBI:36080", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0001025" + }, + { + "subject": "CHEBI:36080", + "object": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002432" + }, + { + "subject": "CHEBI:36080", + "object": [ + "GO:0032991" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "BFO:0000050" + }, + { + "subject": "CHEBI:36080", + "object": [ + "GO:0003674" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002326" + }, + { + "subject": "CHEBI:33695", + "object": [ + "CARO:0000000" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0001025" + }, + { + "subject": "CHEBI:33695", + "object": [ + "CARO:0000000", + "http://purl.obolibrary.org/obo/go/shapes/RootCellularComponent" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002432" + }, + { + "subject": "CHEBI:33695", + "object": [ + "GO:0032991" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "BFO:0000050" + }, + { + "subject": "CHEBI:33695", + "object": [ + "GO:0003674" + ], + "is_multivalued": false, + "is_required": false, + "context": "", + "predicate": "RO:0002326" + } + ], + "@type": "AssociationCollection" +} \ No newline at end of file diff --git a/shapes/json/shex_full.json b/shapes/json/shex_full.json index 93817bf..ea7149c 100644 --- a/shapes/json/shex_full.json +++ b/shapes/json/shex_full.json @@ -132,6 +132,16 @@ "predicate": "http://www.w3.org/2002/07/owl#versionIRI", "min": 0, "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/ns/prov#wasDerivedFrom", + "valueExpr": { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "min": 0, + "max": 1 } ] } @@ -149,7 +159,7 @@ "type": "NodeConstraint", "datatype": "http://www.w3.org/2001/XMLSchema#string" }, - "min": 0, + "min": 1, "max": -1 }, { @@ -262,7 +272,16 @@ "type": "TripleConstraint", "predicate": "http://www.geneontology.org/formats/oboInOwl#hasDbXref", "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "mappings for the entity. Value is typically a CURIE string. Currently this is only used for Reactome-derived models." + } + } + ] }, { "type": "TripleConstraint", @@ -274,7 +293,7 @@ "type": "Annotation", "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", "object": { - "value": "the name" + "value": "the name of the entity. Currently this is only used for Reactome-derived models." } } ] @@ -295,7 +314,7 @@ "type": "Annotation", "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", "object": { - "value": "X coordinate for node" + "value": "X coordinate for node. This is used for caching layouts in the Noctua Graph Editor." } } ] @@ -310,7 +329,7 @@ "type": "Annotation", "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", "object": { - "value": "Y coordinate for node" + "value": "Y coordinate for node. This is used for caching layouts in the Noctua Graph Editor." } } ] @@ -359,21 +378,28 @@ "type": "Annotation", "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", "object": { - "value": "the name" + "value": "mappings for the entity. Value is typically a CURIE string. Currently this is only used for Reactome-derived models." + } + }, + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "the name of the entity. Currently this is only used for Reactome-derived models." } }, { "type": "Annotation", "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", "object": { - "value": "X coordinate for node" + "value": "X coordinate for node. This is used for caching layouts in the Noctua Graph Editor." } }, { "type": "Annotation", "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", "object": { - "value": "Y coordinate for node" + "value": "Y coordinate for node. This is used for caching layouts in the Noctua Graph Editor." } }, { @@ -563,7 +589,17 @@ "predicate": "http://purl.obolibrary.org/obo/BFO_0000050", "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -599,7 +635,17 @@ "predicate": "http://purl.obolibrary.org/obo/BFO_0000066", "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", "min": 0, - "max": 1 + "max": 1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -640,7 +686,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -654,7 +710,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -668,28 +734,68 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", "predicate": "http://purl.obolibrary.org/obo/RO_0002211", "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", "predicate": "http://purl.obolibrary.org/obo/RO_0002212", "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", "predicate": "http://purl.obolibrary.org/obo/RO_0002213", "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -707,6 +813,70 @@ ] }, "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, { "type": "Annotation", "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", @@ -1837,7 +2007,7 @@ }, { "type": "ShapeAnd", - "id": "http://purl.obolibrary.org/obo/go/shapes/MovementOfCellOrSubcellularComponentClass", + "id": "http://purl.obolibrary.org/obo/go/shapes/MetabolicProcessClass", "shapeExprs": [ { "type": "ShapeAnd", @@ -1860,7 +2030,7 @@ "valueExpr": { "type": "NodeConstraint", "values": [ - "http://purl.obolibrary.org/obo/GO_0006928" + "http://purl.obolibrary.org/obo/GO_0008152" ] } } @@ -1869,7 +2039,7 @@ }, { "type": "ShapeAnd", - "id": "http://purl.obolibrary.org/obo/go/shapes/MovementOfCellOrSubcellularComponent", + "id": "http://purl.obolibrary.org/obo/go/shapes/MetabolicProcess", "shapeExprs": [ "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", { @@ -1883,22 +2053,23 @@ { "type": "TripleConstraint", "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", - "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/MovementOfCellOrSubcellularComponentClass", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/MetabolicProcessClass", "min": 1, "max": 1 }, { "type": "TripleConstraint", - "predicate": "http://purl.obolibrary.org/obo/RO_0002565", - "valueExpr": { - "type": "ShapeOr", - "shapeExprs": [ - "http://purl.obolibrary.org/obo/go/shapes/NativeCell", - "http://purl.obolibrary.org/obo/go/shapes/CellularComponent" - ] - }, + "predicate": "http://purl.obolibrary.org/obo/RO_0004009", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", "min": 0, - "max": 1 + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0004008", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + "min": 0, + "max": -1 } ] }, @@ -1907,7 +2078,7 @@ "type": "Annotation", "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", "object": { - "value": "a movement of cell or subcellular component GO biological process or child" + "value": "a metabolic process GO biological process or child" } } ] @@ -2062,7 +2233,7 @@ }, { "type": "ShapeAnd", - "id": "http://purl.obolibrary.org/obo/go/shapes/MolecularFunctionClass", + "id": "http://purl.obolibrary.org/obo/go/shapes/TransportClass", "shapeExprs": [ { "type": "ShapeAnd", @@ -2085,7 +2256,7 @@ "valueExpr": { "type": "NodeConstraint", "values": [ - "http://purl.obolibrary.org/obo/GO_0003674" + "http://purl.obolibrary.org/obo/GO_0006810" ] } } @@ -2094,64 +2265,158 @@ }, { "type": "ShapeAnd", - "id": "http://purl.obolibrary.org/obo/go/shapes/NegatedMolecularFunctionClass", - "shapeExprs": [ - { - "type": "ShapeAnd", - "shapeExprs": [ - { - "type": "NodeConstraint", - "nodeKind": "bnode" - }, - "http://purl.obolibrary.org/obo/go/shapes/OwlClass" - ] - }, - { - "type": "Shape", - "expression": { - "type": "TripleConstraint", - "predicate": "http://www.w3.org/2002/07/owl#complementOf", - "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/MolecularFunctionClass" - } - } - ] - }, - { - "type": "ShapeAnd", - "id": "http://purl.obolibrary.org/obo/go/shapes/MolecularEventClass", + "id": "http://purl.obolibrary.org/obo/go/shapes/Transport", "shapeExprs": [ - { - "type": "ShapeAnd", - "shapeExprs": [ - { - "type": "NodeConstraint", - "nodeKind": "iri" - }, - "http://purl.obolibrary.org/obo/go/shapes/OwlClass" - ] - }, + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", { "type": "Shape", "extra": [ - "http://www.w3.org/2000/01/rdf-schema#subClassOf" + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" ], "expression": { - "type": "TripleConstraint", - "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", - "valueExpr": { - "type": "NodeConstraint", - "values": [ - "http://purl.obolibrary.org/obo/go/extensions/reacto.owl#molecular_event" - ] - } - } - } - ] - }, - { - "type": "ShapeAnd", - "id": "http://purl.obolibrary.org/obo/go/shapes/NegatedMolecularEventClass", - "shapeExprs": [ + "type": "EachOf", + "expressions": [ + { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/TransportClass", + "min": 1, + "max": 1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0004009", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0004008", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/ChemicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", + "http://purl.obolibrary.org/obo/go/shapes/ProteinContainingComplex" + ] + }, + "min": 0, + "max": -1 + } + ] + }, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://www.w3.org/2000/01/rdf-schema#comment", + "object": { + "value": "a transport GO biological process or child" + } + } + ] + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/MolecularFunctionClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/GO_0003674" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/NegatedMolecularFunctionClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "bnode" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2002/07/owl#complementOf", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/MolecularFunctionClass" + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/MolecularEventClass", + "shapeExprs": [ + { + "type": "ShapeAnd", + "shapeExprs": [ + { + "type": "NodeConstraint", + "nodeKind": "iri" + }, + "http://purl.obolibrary.org/obo/go/shapes/OwlClass" + ] + }, + { + "type": "Shape", + "extra": [ + "http://www.w3.org/2000/01/rdf-schema#subClassOf" + ], + "expression": { + "type": "TripleConstraint", + "predicate": "http://www.w3.org/2000/01/rdf-schema#subClassOf", + "valueExpr": { + "type": "NodeConstraint", + "values": [ + "http://purl.obolibrary.org/obo/go/extensions/reacto.owl#molecular_event" + ] + } + } + } + ] + }, + { + "type": "ShapeAnd", + "id": "http://purl.obolibrary.org/obo/go/shapes/NegatedMolecularEventClass", + "shapeExprs": [ { "type": "ShapeAnd", "shapeExprs": [ @@ -2235,17 +2500,7 @@ ] }, "min": 0, - "max": 1, - "annotations": [ - { - "type": "Annotation", - "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", - "object": { - "value": "true", - "type": "http://www.w3.org/2001/XMLSchema#boolean" - } - } - ] + "max": 1 }, { "type": "TripleConstraint", @@ -2276,7 +2531,17 @@ "predicate": "http://purl.obolibrary.org/obo/BFO_0000066", "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/AnatomicalEntity", "min": 0, - "max": 1 + "max": 1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2315,7 +2580,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2328,7 +2603,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2341,7 +2626,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2354,7 +2649,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2367,7 +2672,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2380,7 +2695,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2393,17 +2718,26 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", - "predicate": "http://purl.obolibrary.org/obo/RO_0002418", + "predicate": "http://purl.obolibrary.org/obo/RO_0012012", "valueExpr": { "type": "ShapeOr", "shapeExprs": [ "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", - "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", - "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess" + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" ] }, "min": 0, @@ -2411,17 +2745,133 @@ }, { "type": "TripleConstraint", - "predicate": "http://purl.obolibrary.org/obo/RO_0004046", - "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", - "min": 0, - "max": -1 - }, + "predicate": "http://purl.obolibrary.org/obo/RO_0002407", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002409", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0012009", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0012010", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent" + ] + }, + "min": 0, + "max": -1 + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0002418", + "valueExpr": { + "type": "ShapeOr", + "shapeExprs": [ + "http://purl.obolibrary.org/obo/go/shapes/MolecularFunction", + "http://purl.obolibrary.org/obo/go/shapes/MolecularEvent", + "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess" + ] + }, + "min": 0, + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] + }, + { + "type": "TripleConstraint", + "predicate": "http://purl.obolibrary.org/obo/RO_0004046", + "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", + "min": 0, + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] + }, { "type": "TripleConstraint", "predicate": "http://purl.obolibrary.org/obo/RO_0004047", "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/BiologicalProcess", "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2435,7 +2885,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2449,7 +2909,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2463,7 +2933,17 @@ ] }, "min": 0, - "max": -1 + "max": -1, + "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + } + ] }, { "type": "TripleConstraint", @@ -2482,6 +2962,126 @@ ] }, "annotations": [ + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, + { + "type": "Annotation", + "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", + "object": { + "value": "true", + "type": "http://www.w3.org/2001/XMLSchema#boolean" + } + }, { "type": "Annotation", "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", @@ -2580,54 +3180,18 @@ "predicate": "http://purl.obolibrary.org/obo/RO_0002339", "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponent", "min": 0, - "max": -1, - "annotations": [ - { - "type": "Annotation", - "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", - "object": { - "value": "true", - "type": "http://www.w3.org/2001/XMLSchema#boolean" - } - } - ] + "max": -1 }, { "type": "TripleConstraint", "predicate": "http://purl.obolibrary.org/obo/RO_0002338", "valueExpr": "http://purl.obolibrary.org/obo/go/shapes/CellularComponent", "min": 0, - "max": -1, - "annotations": [ - { - "type": "Annotation", - "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", - "object": { - "value": "true", - "type": "http://www.w3.org/2001/XMLSchema#boolean" - } - } - ] + "max": -1 } ] }, "annotations": [ - { - "type": "Annotation", - "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", - "object": { - "value": "true", - "type": "http://www.w3.org/2001/XMLSchema#boolean" - } - }, - { - "type": "Annotation", - "predicate": "http://purl.obolibrary.org/obo/go/shapes/exclude_from_extensions", - "object": { - "value": "true", - "type": "http://www.w3.org/2001/XMLSchema#boolean" - } - }, { "type": "Annotation", "predicate": "http://www.w3.org/2000/01/rdf-schema#comment",