diff --git a/documentation/draft-example.report.json b/documentation/draft-example.report.json new file mode 100644 index 00000000..b3a46cc2 --- /dev/null +++ b/documentation/draft-example.report.json @@ -0,0 +1,29 @@ + +{ + "entities": 2, + "errors": 0, + "valid-entities": 2, + "groupable-keys": [ + { + "key":"taxon", + "default": "taxon:0" + }, + { + "key": "group", + "default": "unknown" + } + ], + "group": "rebels", + "messages": { + "gorule-0000001": [ + { + "level": "WARNING", + "entity": "I'm\ta\tGAF\tline", + "type": "Violates GO Rule", + "message": "This is an error message", + "rule": 1, + "taxon": "taxon:12345" + } + ] + } +} diff --git a/documentation/shex_report-example.json b/documentation/shex_report-example.json new file mode 100644 index 00000000..3e9e651c --- /dev/null +++ b/documentation/shex_report-example.json @@ -0,0 +1,2648 @@ +{ + "taxa": [], + "number_of_models": 50, + "number_of_models_in_error": 31, + "number_of_correct_models": 19, + "messages": { + "gorule-0000019": [ + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000154", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000311", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000368", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000173", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:59dc728000000512", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000250", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5b528b1100000186", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000484", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000078", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000330", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000231", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000387", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000135", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000116", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:59dc728000000513", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + }, + { + "level": "ERROR", + "model-id": "gomodel:5d27d1cf00000464", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000019: Model is logically inconsistent", + "rule": 19 + } + ], + "gorule-0000056": [ + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000135", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000135/5d27d1cf00000153", + "property": "BFO:0000066", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0006261" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/BiologicalProcess", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/AnatomicalEntity" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000135/5d27d1cf00000143" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000311", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000311/5d27d1cf00000321", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:5d27d1cf00000311/5d27d1cf00000329", + "property": "RO:0002233", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0006260" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/BiologicalProcess", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000311/5d27d1cf00000319" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:59dc728000000512", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:59dc728000000512/5ce58dde00002086", + "property": "BFO:0000050", + "node_types": [ + "GO:0016874" + ], + "object_types": [ + "GO:0005829" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/AnatomicalEntity", + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity", + "obo:go/shapes/CellularComponent" + ], + "intended-range-shapes": [ + "obo:go/shapes/BiologicalProcess" + ] + } + ] + } + ], + "node": "gomodel:59dc728000000512/59dc728000000520" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000349", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000349/5d27d1cf00000367", + "property": "RO:0002413", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0006261" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/BiologicalProcess", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000349/5d27d1cf00000357" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000097", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000097/5d27d1cf00000107", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:5d27d1cf00000097/5d27d1cf00000115", + "property": "BFO:0000066", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0043853" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/ProteinContainingComplex", + "obo:go/shapes/GoCamEntity", + "obo:go/shapes/CellularComponent" + ], + "intended-range-shapes": [ + "obo:go/shapes/AnatomicalEntity" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000097/5d27d1cf00000105" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/GoCamModel", + "constraints": [ + { + "property": "dc11:title", + "cardinality": "[1; 1]", + "nobjects": 0 + }, + { + "object": "owl:Ontology", + "property": "rdf:type", + "node_types": [ + "owl:Ontology" + ], + "object_types": [], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "owl:Ontology" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000097" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000173", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000173/5d27d1cf00000191", + "property": "RO:0002411", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0005634" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/AnatomicalEntity", + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity", + "obo:go/shapes/CellularComponent" + ], + "intended-range-shapes": [ + "obo:go/shapes/BiologicalProcess", + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000173/5d27d1cf00000181" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:R-HSA-5660668", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:R-HSA-5660668/R-HSA-202461_R-HSA-5660665", + "property": "RO:0002233", + "node_types": [ + "GO:0005488" + ], + "object_types": [ + "gomodel:R-HSA-202461" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:R-HSA-5660668/R-HSA-5660651_R-HSA-5660665", + "property": "RO:0002233", + "node_types": [ + "GO:0005488" + ], + "object_types": [ + "gomodel:R-HSA-5660651" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:R-HSA-5660668/R-HSA-5660654_R-HSA-5660665", + "property": "RO:0002234", + "node_types": [ + "GO:0005488" + ], + "object_types": [ + "gomodel:R-HSA-5660654" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:R-HSA-5660668/R-HSA-5660665" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:R-HSA-5660668/R-HSA-194047_R-HSA-5660622_controller", + "property": "RO:0002233", + "node_types": [ + "GO:0005488" + ], + "object_types": [ + "gomodel:R-HSA-194047" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:R-HSA-5660668/R-HSA-5660622", + "property": "RO:0002213", + "node_types": [ + "GO:0005488" + ], + "object_types": [], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent" + ] + } + ] + } + ], + "node": "gomodel:R-HSA-5660668/07239d56-e211-4e98-bdce-1812f7e69a2b" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:R-HSA-5660668/R-HSA-5660653_R-HSA-5660662", + "property": "RO:0002234", + "node_types": [ + "GO:0005488" + ], + "object_types": [ + "gomodel:R-HSA-5660653" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:R-HSA-5660668/R-HSA-561191_R-HSA-5660662", + "property": "RO:0002233", + "node_types": [ + "GO:0005488" + ], + "object_types": [ + "gomodel:R-HSA-561191" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:R-HSA-5660668/R-HSA-5660654_R-HSA-5660662", + "property": "RO:0002233", + "node_types": [ + "GO:0005488" + ], + "object_types": [ + "gomodel:R-HSA-5660654" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:R-HSA-5660668/R-HSA-5660662" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:R-HSA-5660668/R-HSA-448689_R-HSA-5660663", + "property": "RO:0002233", + "node_types": [ + "GO:0004197" + ], + "object_types": [ + "gomodel:R-HSA-448689" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:R-HSA-5660668/R-HSA-449030_R-HSA-5660663", + "property": "RO:0002234", + "node_types": [ + "GO:0004197" + ], + "object_types": [ + "gomodel:R-HSA-449030" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:R-HSA-5660668/26d1cd45-2aa3-4bd5-a067-4592a157ffdb", + "property": "RO:0002333", + "node_types": [ + "GO:0004197" + ], + "object_types": [ + "gomodel:R-HSA-5660651" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ProteinContainingComplex", + "obo:go/shapes/InformationBiomacromolecule" + ] + }, + { + "object": "gomodel:R-HSA-5660668/R-HSA-449046_R-HSA-5660663", + "property": "RO:0002234", + "node_types": [ + "GO:0004197" + ], + "object_types": [ + "gomodel:R-HSA-449046" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:R-HSA-5660668/R-HSA-5660663" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000647", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000647/5d27d1cf00000657", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000647/5d27d1cf00000655" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000116", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000116/5d27d1cf00000134", + "property": "RO:0002333", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0006261" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/BiologicalProcess", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ProteinContainingComplex", + "obo:go/shapes/InformationBiomacromolecule" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000116/5d27d1cf00000124" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000368", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000368/5d27d1cf00000370", + "property": "RO:0002413", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0005634" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/AnatomicalEntity", + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity", + "obo:go/shapes/CellularComponent" + ], + "intended-range-shapes": [ + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000368/5d27d1cf00000378" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000569", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000569/5d27d1cf00000579", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "property": "BFO:0000066", + "cardinality": "[0; 1]", + "nobjects": 2 + } + ] + } + ], + "node": "gomodel:5d27d1cf00000569/5d27d1cf00000577" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000550", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "property": "BFO:0000050", + "cardinality": "[0; 1]", + "nobjects": 2 + }, + { + "object": "gomodel:5d27d1cf00000550/5d27d1cf00000560", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000550/5d27d1cf00000558" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000288", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000288/5d27d1cf00000294", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000288/5d27d1cf00000296" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000056", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/ProteinContainingComplex", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000056/5d27d1cf00000076", + "property": "BFO:0000051", + "node_types": [ + "GO:0032991" + ], + "object_types": [ + "CHEBI:15414" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ProteinContainingComplex", + "obo:go/shapes/InformationBiomacromolecule" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000056/5d27d1cf00000075" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000056/5d27d1cf00000075", + "property": "RO:0002333", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0032991" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity", + "obo:go/shapes/CellularComponent" + ], + "intended-range-shapes": [ + "obo:go/shapes/ProteinContainingComplex", + "obo:go/shapes/InformationBiomacromolecule" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000056/5d27d1cf00000064" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000330", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000330/5d27d1cf00000348", + "property": "RO:0002233", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0003713" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:5d27d1cf00000330/5d27d1cf00000340", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000330/5d27d1cf00000338" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000154", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000154/5d27d1cf00000172", + "property": "BFO:0000050", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "WB:WBGene00011345", + "CHEBI:33695" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/InformationBiomacromolecule", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/BiologicalProcess" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000154/5d27d1cf00000162" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000509", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000509/5d27d1cf00000513", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:5d27d1cf00000509/5d27d1cf00000530", + "property": "RO:0002092", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0003887" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/PlantStructureDevelopmentStage", + "obo:go/shapes/BiologicalPhase", + "obo:go/shapes/LifeCycleStage" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000509/5d27d1cf00000524" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000444", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000444/5d27d1cf00000445", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:5d27d1cf00000444/5d29218800000055", + "property": "RO:0002092", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0006352" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/BiologicalProcess", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/PlantStructureDevelopmentStage", + "obo:go/shapes/BiologicalPhase", + "obo:go/shapes/LifeCycleStage" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000444/5d27d1cf00000449" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000484", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000484/5d27d1cf00000498", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "object": "gomodel:5d27d1cf00000484/5d27d1cf00000506", + "property": "RO:0002092", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0032991" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/ProteinContainingComplex", + "obo:go/shapes/GoCamEntity", + "obo:go/shapes/CellularComponent" + ], + "intended-range-shapes": [ + "obo:go/shapes/PlantStructureDevelopmentStage", + "obo:go/shapes/BiologicalPhase", + "obo:go/shapes/LifeCycleStage" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000484/5d27d1cf00000487" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000531", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000531/5d27d1cf00000541", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + }, + { + "property": "RO:0002333", + "cardinality": "[0; 1]", + "nobjects": 2 + } + ] + } + ], + "node": "gomodel:5d27d1cf00000531/5d27d1cf00000539" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000387", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000387/5d27d1cf00000403", + "property": "RO:0002413", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:33695", + "WB:WBGene00001865" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/InformationBiomacromolecule", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000387/5d27d1cf00000395" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000666", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000666/5d27d1cf00000678", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000666/5d27d1cf00000680" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000231", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000231/5d27d1cf00000249", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0006261" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/BiologicalProcess", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000231/5d27d1cf00000239" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000078", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000078/5d27d1cf00000096", + "property": "BFO:0000066", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0001055" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/AnatomicalEntity" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000078/5d27d1cf00000086" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:59dc728000000513", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/InformationBiomacromolecule", + "constraints": [ + { + "object": "http://model.geneontology.org/59dc728000000513/5ce58dde00000266", + "property": "BFO:0000066", + "node_types": [ + "CHEBI:36080", + "UniProtKB:Q13253" + ], + "object_types": [ + "GO:0005634" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/AnatomicalEntity", + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity", + "obo:go/shapes/CellularComponent" + ], + "intended-range-shapes": [ + "owl:Nothing" + ] + } + ] + } + ], + "node": "gomodel:59dc728000000513/59dc728000000521" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:59dc728000000513/5ce58dde00000266", + "property": "RO:0002333", + "node_types": [ + "GO:0016874" + ], + "object_types": [ + "GO:0005634" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/AnatomicalEntity", + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity", + "obo:go/shapes/CellularComponent" + ], + "intended-range-shapes": [ + "obo:go/shapes/ProteinContainingComplex", + "obo:go/shapes/InformationBiomacromolecule" + ] + } + ] + } + ], + "node": "gomodel:59dc728000000513/59dc728000000520" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000038", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/GoCamModel", + "constraints": [ + { + "property": "dc11:contributor", + "cardinality": "[1; *]", + "nobjects": 0 + }, + { + "object": "owl:Ontology", + "property": "rdf:type", + "node_types": [ + "owl:Ontology" + ], + "object_types": [], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "owl:Ontology" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000038" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5b528b1100000186", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "property": "BFO:0000050", + "cardinality": "[0; 1]", + "nobjects": 2 + } + ] + } + ], + "node": "gomodel:5b528b1100000186/5c4605cc00000669" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5b528b1100000186/5ce58dde00001444", + "property": "BFO:0000050", + "node_types": [ + "GO:0003972" + ], + "object_types": [ + "GO:2000767" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/BiologicalProcess" + ] + } + ] + } + ], + "node": "gomodel:5b528b1100000186/5ce58dde00001438" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/BiologicalProcess", + "constraints": [ + { + "object": "gomodel:5b528b1100000186/5c4605cc00000669", + "property": "RO:0002213", + "node_types": [ + "GO:2000767" + ], + "object_types": [ + "GO:0003700" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/MolecularEvent", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/BiologicalProcess" + ] + } + ] + } + ], + "node": "gomodel:5b528b1100000186/5ce58dde00001444" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5b528b1100000186/5b528b1100000304", + "property": "BFO:0000050", + "node_types": [ + "GO:0016887" + ], + "object_types": [ + "GO:0044183" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/BiologicalProcess" + ] + } + ] + } + ], + "node": "gomodel:5b528b1100000186/5b528b1100000314" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "property": "BFO:0000050", + "cardinality": "[0; 1]", + "nobjects": 2 + } + ] + } + ], + "node": "gomodel:5b528b1100000186/5b528b1100000198" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5b528b1100000186/5b528b1100000320", + "property": "BFO:0000050", + "node_types": [ + "GO:0051082" + ], + "object_types": [ + "GO:0044183" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/BiologicalProcess" + ] + } + ] + } + ], + "node": "gomodel:5b528b1100000186/5b528b1100000362" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "property": "BFO:0000050", + "cardinality": "[0; 1]", + "nobjects": 2 + } + ] + } + ], + "node": "gomodel:5b528b1100000186/5b91dbd100002136" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5b528b1100000186/5b528b1100000304", + "property": "BFO:0000050", + "node_types": [ + "GO:0051082" + ], + "object_types": [ + "GO:0044183" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/BiologicalProcess" + ] + } + ] + } + ], + "node": "gomodel:5b528b1100000186/5b528b1100000311" + }, + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5b528b1100000186/5b528b1100000320", + "property": "BFO:0000050", + "node_types": [ + "GO:0016887" + ], + "object_types": [ + "GO:0044183" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/BiologicalProcess" + ] + } + ] + } + ], + "node": "gomodel:5b528b1100000186/5b528b1100000358" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000250", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000250/5d27d1cf00000268", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0003714" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/MolecularFunction", + "obo:go/shapes/MolecularEvent", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000250/5d27d1cf00000258" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000464", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": false, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology", + "violations": [ + { + "node": "id of inconsistent node" + } + ] + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000464/5d27d1cf00000483", + "property": "RO:0002092", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "GO:0032390" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/ProteinContainingComplex", + "obo:go/shapes/GoCamEntity", + "obo:go/shapes/CellularComponent" + ], + "intended-range-shapes": [ + "obo:go/shapes/PlantStructureDevelopmentStage", + "obo:go/shapes/BiologicalPhase", + "obo:go/shapes/LifeCycleStage" + ] + }, + { + "object": "gomodel:5d27d1cf00000464/5d27d1cf00000474", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000464/5d27d1cf00000471" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000627", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000627/5d27d1cf00000637", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000627/5d27d1cf00000635" + } + ] + } + } + }, + { + "level": "WARNING", + "model-id": "gomodel:5d27d1cf00000269", + "type": "Violates GO Rule", + "obj": "", + "taxa": [], + "message": "GORULE:0000056: Model does not validate against shex schema", + "rule": 56, + "explanations": { + "is-conformant": false, + "owl-validation": { + "id": "OWL_REASONER", + "is-conformant": true, + "tracker": "https://github.com/geneontology/helpdesk/issues", + "rule-file": "https://github.com/geneontology/go-ontology" + }, + "shex-validation": { + "node-matched-shapes": {}, + "is-conformant": false, + "tracker": "https://github.com/geneontology/go-shapes/issues", + "rule-file": "https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex", + "violations": [ + { + "explanations": [ + { + "shape": "obo:go/shapes/MolecularFunction", + "constraints": [ + { + "object": "gomodel:5d27d1cf00000269/5d27d1cf00000279", + "property": "RO:0002234", + "node_types": [ + "GO:0009008" + ], + "object_types": [ + "CHEBI:75962" + ], + "nobjects": 0, + "matched_range_shapes": [ + "obo:go/shapes/ProvenanceAnnotated", + "obo:go/shapes/GoCamEntity" + ], + "intended-range-shapes": [ + "obo:go/shapes/ChemicalEntity", + "obo:go/shapes/ProteinContainingComplex" + ] + } + ] + } + ], + "node": "gomodel:5d27d1cf00000269/5d27d1cf00000277" + } + ] + } + } + } + ] + } +} diff --git a/metadata/draft-report.schema.json b/metadata/draft-report.schema.json new file mode 100644 index 00000000..542b3cce --- /dev/null +++ b/metadata/draft-report.schema.json @@ -0,0 +1,118 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + + "definitions": { + "rule-message": { + "$comment": "Contents of a rule", + "type": "object", + "properties": { + "level": { + "type": "string", + "enum": ["PASS", "WARNING", "ERROR"] + }, + "entity": { + "type": "string", + "$comment": "This is the entity being reported on. Whether it's a GAF line or model ID." + }, + "type": { + "type": "string", + "$comment": "Usually should say 'Violates GO Rule', unless it's directly some kind of parse error" + }, + "message": { + "type": "string", + "$comment": "Whatever extra message about the nature of the error in the validation source" + }, + "obj": { + "type": "string", + "default": "", + "$comment": "Optional. If available, this should be the part of the `entity` that failed." + }, + "rule": { + "type": "integer", + "minimum": 1, + "maximum": 9999999, + "$comment": "This is not strictly necessary given the provided information, and the rule for a message should be calculable given what rule ID key it's in. This should not be required in the future" + } + }, + "required": ["level", "entity", "type", "message", "rule"] + }, + + "messages-group": { + "type": "object", + "patternProperties": { + "^gorule-[0-9]{6}[1-9]$": { + "oneOf": [ + { + "type": "string", + "enum": ["skipped"] + }, + { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rule-message" + } + } + ] + } + }, + "additionalProperties": false + } + }, + + "type": "object", + "properties": { + "messages": { + "type": "object", + "$ref": "#/definitions/messages-group" + }, + "entities": { + "type": "integer", + "minimum": 0 + }, + "errors": { + "type": "integer", + "minimum": 0 + }, + "valid-entities": { + "type": "integer", + "minimum": 0 + }, + "groupable-keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "default": { + "type": "string" + } + } + } + }, + "entity-type": { + "type": "string" + }, + "message-template": { + "type": "string" + }, + "report-group-urls": { + "type": "object", + "properties": { + "group-url": { + "type": "string", + "format": "uri-template" + }, + "group-rule-url": { + "$comment": "Can use like: `{base}/reports/{group}#{ruleid}`", + "type": "string", + "format": "uri-template" + } + } + } + }, + + "required": ["messages", "entities", "errors", "valid-entities", "groupable-keys", "entity-type"] +} diff --git a/metadata/shex-report.schema.json b/metadata/shex-report.schema.json new file mode 100644 index 00000000..40eae4e9 --- /dev/null +++ b/metadata/shex-report.schema.json @@ -0,0 +1,291 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Shex Minerva Report schema, as of Nov 2020", + "$comment": "This is the descriptive schema for the Minerva Shex report output, and not aspirational. See https://github.com/geneontology/minerva/pull/359. This will be a seperate schema from the standard rule reports for the time being, until we can make a higher order schema lifting both into one format and reporting system.", + + "definitions": { + "rule-message": { + "$comment": "Contents of a rule", + "type": "object", + "properties": { + "level": { + "type": "string", + "enum": ["PASS", "WARNING", "ERROR"] + }, + "model-id": { + "$ref": "#/definitions/gomodel-id", + "$comment": "This is a CURIE, with `gomodel` being the namespace. This is the ID for the noctua model being tested with Shex." + }, + "type": { + "type": "string", + "$comment": "Usually should say 'Violates GO Rule', unless it's directly some kind of parse error" + }, + "message": { + "type": "string", + "$comment": "Whatever string message about the nature of the error in the validation source" + }, + "taxa": { + "type": "array", + "items": { + "$ref": "#/definitions/taxon-id" + } + }, + "obj": { + "type": "string", + "default": "", + "$comment": "Optional. If available, this should be the part of the `entity` that failed." + }, + "rule": { + "type": "integer", + "minimum": 1, + "maximum": 9999999 + }, + "explanations": { + "$ref": "#/definitions/explanations" + } + }, + + "required": ["level", "model-id", "type", "message", "rule"] + }, + + "explanations-item": { + "type": "object", + "properties": { + "shape": { + "$ref": "#/definitions/shape-id" + }, + "constraints": { + "type": "array", + "$comment": "Set of shape constraints violated for the `shape`, and `node`", + "item": { + "$ref": "#/definitions/constraints-item" + } + } + }, + "required": ["shape", "constraints"] + }, + + "constraints-item": { + "type": "object", + "$comment": "The basic form here is that we have an RDF triple of instances that are in violation of the shex. Higher up, in the `explanations` object, the `node` key is the Subject, the Predicate is `property`, and `object` is the Object, making (Subject, Predicate, Object). So `node_types` are the classes that Subject is an instance of, and `object_types` are the classes that Object is an instance of. In a range failure -- where we have a mismatch of expected range from the Predicate and the class of the Subject/Object -- the fields `matched_range_shapes` and `intended-range-shapes` will exist, showing what the shape expeted the triple to be, and what it foudn instead. For a cardinality failure the `nobjects` represents the number of objects that follow the given Subject, Predicate, and how it failed to be in the range specified in the `cardinality` field.", + + "oneOf": [ + { "$ref": "#/definitions/range-constraint-violation"}, + { "$ref": "#/definitions/cardinality-constraint-violation"} + ] + }, + + "range-constraint-violation": { + "type": "object", + "properties": { + "object": { + "$ref": "#/definitions/gomodel-id", + "$comment": "The RDF object node that failed the shape validation" + }, + "property": { + "$ref": "#/definitions/curie", + "$comment": "The RDF property pointing at the `object`" + }, + "node_types": { + "$comment": "Classes that the Subject RDF is an instance of", + "item": { + "$ref": "#/definitions/curie" + } + }, + "object_types": { + "$comment": "Classes that the Object RDF is an instance of", + "item": { + "$ref": "#/definitions/curie" + } + }, + "nobjects": { + "type": "integer" + }, + "matched_range_shapes": { + "type": "array", + "$comment": "The set of shapes the shex validator found when looking at this property and object", + "item": { + "$ref": "#/definitions/shape-id" + } + }, + "intended-range-shapes": { + "type": "array", + "$comment": "The set of shapes the shex validator was expecting due to the range of the `property` field. This will be `owl:Nothing` if the property does not belong on the Subject `node` in the first place.", + "item": { + "$ref": "#/definitions/shape-id" + } + } + }, + "required": ["object", "property", "node_types", "object_types", "nobjects", "matched_range_shapes", "intended-range-shapes"] + }, + + "cardinality-constraint-violation": { + "type": "object", + "properties": { + "property": { + "$ref": "#/definitions/curie" + }, + "cardinality": { + "type": "string", + "pattern": "^\\[([0-9]+|\\*);[\\s]*([0-9]+|\\*)\\]$" + }, + "nobjects": { + "type": "integer" + } + }, + "required": ["property", "cardinality", "nobjects"] + }, + + "gomodel-id": { + "type": "string", + "pattern": "^gomodel:[a-zA-Z0-9][a-zA-Z0-9/_-]*$" + }, + + "taxon-id": { + "type": "string", + "pattern": "^((NCBITaxon)|(taxon)):[0-9]+$" + }, + + "shape-id": { + "type": "string", + "pattern": "^[a-z]+:[a-zA-Z_][a-zA-Z0-9/_]*$" + }, + + "curie": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*:\\w[\\w_-]*$" + }, + + "explanations": { + "type": "object", + "properties": { + "is-conformant": { + "type": "boolean", + "$comment": "If this is false, then either it was owl validation failure or shex validation failure" + }, + "owl-validation": { + "type": "object", + "$comment": "Info about owl validation failures", + "properties": { + "id": { + "type": "string", + "$comment": "Is this the reasoner used?" + }, + "is-conformant": { + "type": "boolean", + "$comment": "If the the model is inconsistent, this is false" + }, + "tracker": { + "type": "string", + "format": "uri", + "$comment": "geneontology helpdesk issue URL" + }, + "rule-file": { + "type": "string", + "format": "uri", + "$comment": "github go-ontolgoy URL" + }, + "violations": { + "type": "array", + "item": { + "type": "object", + "properties": { + "node": { + "type": "string", + "$comment": "TODO should this be a URI?" + } + } + } + } + }, + "required": ["id", "is-conformant", "tracker", "rule-file"] + }, + "shex-validation": { + "type": "object", + "node-matched-shapes": { + "type": "object", + "$comment": "TODO This is empty currently" + }, + "is-conformant": { + "type": "boolean", + "$comment": "False if the model doesn't conform to the shex" + }, + "tracker": { + "type": "string", + "format": "uri", + "$comment": "go-shapes github issue URL" + }, + "rule-file": { + "type": "string", + "format": "uri", + "$comment": "URL to shex shape file" + }, + "violations": { + "type": "array", + "item": { + "type": "object", + "properties": { + "explanations": { + "type": "array", + "item": { + "$ref": "#/definitions/explanations-item" + } + }, + "node": { + "$ref": "#/definitions/gomodel-id" + } + }, + "required": ["explanations", "node"] + } + } + } + } + }, + + "messages-group": { + "type": "object", + "patternProperties": { + "^gorule-[0-9]{6}[1-9]$": { + "oneOf": [ + { + "type": "string", + "enum": ["skipped"] + }, + { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/rule-message" + } + } + ] + } + }, + "additionalProperties": false + } + }, + + "type": "object", + "properties": { + "taxa": { + "type": "array" + }, + "messages": { + "type": "object", + "$ref": "#/definitions/messages-group" + }, + "number_of_models": { + "type": "integer", + "minimum": 0 + }, + "number_of_models_in_error": { + "type": "integer", + "minimum": 0 + }, + "number_of_correct_models": { + "type": "integer", + "minimum": 0 + } + }, + "required": ["messages", "taxa", "number_of_models", "number_of_models_in_error", "number_of_correct_models"] +} diff --git a/reporting/README.md b/reporting/README.md new file mode 100644 index 00000000..0b1f6262 --- /dev/null +++ b/reporting/README.md @@ -0,0 +1,143 @@ +# Rule Reports + +Reports from Rules will use the JSON schema at [go-site/metadata/report.schema.json](../metadata/report.schema.json). + +For the interoperability of all GO related groups who would like to make and display reports, we provide a standard report JSON schema and tools. + +## Current Usage + +Currently as a product of annotation validation in the GO pipeline we produce report JSON files for each dataset of annotations. These reports are focused on GO Rule violations. The validation process also produces markdown files with the same data as the JSON reports but intended for more human consumption. Markdown reports are fed through an HTML renderer and joined with other reports producing a static HTML page with human readable reports, featuring GO Rules. + +To make it easy for people to see a broader view of the rules we provide a GO Rules "grid" report, where we join all JSON reports, and make a table mapping (Rule, Dataset) to number of violations that dataset has for that rule. Links to the rule, the report page for the dataset, and the specific reports for the rule are all provided on the Rule Id, Dataset name header, and the cell with the number of violations respectively. + +Thinking ahead to some future, we could generalize the reporting rule system including a number of use-case. + +1. Single JSON format general enough to capture a variety of domains + * GAFs, GO-CAM models, etc +2. One central GO reporting python library to handle collection of reports, templates, etc, to be used by other groups creating reports for GO. +3. Ability to produce a "grid" view like the current [go-rules report page](http://snapshot.geneontology.org/reports/gorule-report.html) for different types of reports. +4. Beside `3)`, generalize the grid view by different columns. The grid view should be able to group reports by arbitrary keys in the message data, specified by the report JSON. +5. Dynamic, report provider driven rendering of underlying HTML/Markdown report pages. + * For example, in the report JSON, a message render template could be provided, and a Markdown/HTML page could be generated given the template and the report JSON. + * Gives us the ability to create and link to any report dynamically. + +## Generalizing Reports for Other GO report sources + +### Report JSON format + +The report JSON should have a corresponding schema that allows for a variety of sources and uses of reports. The schema should allow interoperability between reports. A JSON schema should validate multiple types of reports from different providers, and so be general to capture different types of data being validated (GAF/GPAD, GO-CAM, etc) + +### One Central Reporting Library + +Currently Ontobio has an ad-hoc, mostly specific to ontobio reporting system. A reporting library for use in any GO context should be made that can be general purpose. Ontobio can then depend on that library. This would have features like: + * Standardized JSON output, guaranteeing conforming to the above schema + * Standard way of reporting messages of different severity levels, with standardized fields, in a way that's idiomatic for python. + * General to different contexts that may want to produce reports given some set of "Rules" + +### Produce a Grid View ([go-rules report page](http://snapshot.geneontology.org/reports/gorule-report.html)) + +This is fundamentally a set of headers, a set of rules, and each cell is the number of messages/violations for that rule and header. + +The header corresponds to a key in the Message, and all messages that share keys of the value in the header correspond to that column. In this way we can generalize the header, and what we group messages by. This is the `groupable-keys` field at the top level of the [draft report schema](../metadata/draft-report.schema.json). + +In the Report format, the messages may not literally have the key, but maybe all messages in a given report JSON document are said to have some property given in the top level of the report. For example, in the existing go-rules reports, the key `dataset` is given at the top. In the generalized future, we would *normalize* each message with this `dataset` key in the given document, so when generating a grid view with `dataset` as the header, we can correctly select among the messages with the matching `dataset` value. + +To generate a reports page like at http://snapshot.geneontology.org/reports/gorule-report.html we need: +1. The collection of reports of GO Rule violations +2. A property to "group" the reports by (by default it's `dataset`, like `mgi` or `genedb_lmajor`). This is the set of horizontal headers along the grid. Reports MUST provide a default value in case a Message does not have value +3. Preferably a mapping of whatever value of grouping key above and a URL where we can find that link. For example for the current gorule-report page, we have: `dataset` ->`{base}/reports/{dataset}-report.html#rmd`. +4. Preferably a link to where we can find the specific violations for `(rule-id, grouping-key)`. For example in for the current gorule-report page, we have: `{base}/reports/{dataset}-report.html#{rule-id}`. + +This gets us to the gorule-reports.html page, like we have already. Since in this conception, headers are generalized and provided by the reports, we can generate a grid for any set of existing "groupable" header keys against the go-rules. + +As a note on implementation details: generating grid views with different header columns could be done by just producing different HTML pages: `gorule-report.dataset.html`, `gorule-report.taxon.html` or something. Alternatively, since we have the the JSON data either way, a slightly fancier javascript rendering where you can just select which header you want live, and the rebuilding of the table happens within the web page live. No outside web requests would be needed still. + +### Dynamic rendering of reports + +If reports came with a custom template that would take a Message JSON blob and turn it into a single Markdown string, then the reporting library could generate the more user friendly listing of messages, as defined by the template and the general page layout already used by the existing GO Rule reports. See [snapshot fb-report.html](http://snapshot.geneontology.org/reports/fb-report.html#rmd) for an example of the layout. + +This would then let the generic Grid View generator also link to the auto-generated detailed reports, and it wouldn't necessarily have to rely on an existing report page somewhere. For instance, in making the GO Rule Grid View, we first produce all the HTML report pages (like the fb-report.html above), and then make the Grid View page with that link in mind. + +An example template from our current usage could look like: +``` +"{level} - {type}: {message} -- {line}" +``` + +## Aspirational Reporting Process + +Given: +1. A collection of report JSON files +2. Path to GO Rules specs +3. Mapping of `{grouping-key} -> (group-URL, group-rule-URL)` where `group-URL` is a URL that points to the messages in that group key, and `group-rule-URL` is a URL that points to a the collection of messages in that group corresponding to that GO Rule. + * (The above URLs could be in the report itself, in `report-url`) + * The URL could be templated. Use `{base}` at the beginning of a URL to make a relative path + * Use `{group}` for substituting the value of the `{grouping-key}` + * Use `{ruleid}` for substituting the value of the GO Rule ID + * Should conform to [RFC6570](https://tools.ietf.org/html/rfc6570), and variables are assumed to be in the level 2 template. + * Examples: + * `https://example.com/reports/{group}` + * `https://example.com/reports/{group}#{ruleid}` + * `{base}/reports/{group}#{ruleid}` + +### Process + +1. Merge all given messages by Rule + * The merging occurs by placing keys and their values that occur in the top level of the report that are beyond the required keys into each Message seen for the given report. + * For example, the existing reports have `group` and `dataset` and keys. For `"group": "mgi"`, we would place `"group": "mgi"` in each Message object, along with `group`, or any other key. + * The `rule` value will be replaced with the full ID it appears in. + * Messages from other reports have their messages normalized in this way, and then messages within each rule can be added from multiple files. +2. We can now easily merge all given report JSON together, since each message blob has the same keys. +3. Produce the grid data with the total Merged data that will be placed into the HTML template. + * We could also produce an HTML template for each `grouping-key` item. +4. *Do we produce a templated HTML for each `entity-type`?* +5. For the more expanded, advanced proposal, we can generate a `{grouping-key}.report.md` file as a human-readable report using the `message-template` in the report. The produced templated HTML can now link to those produced report files. + +As a very concrete example of step 1 above: + +``` +my-report.json +{ + "entities": 2, + "errors": 0, + "valid-entities": 2, + "groupable-keys": [ + { + "key":"taxon", + "default": "taxon:0" + }, + { + "key": "group", + "default": "unknown" + } + ], + "group": "rebels", + "messages": { + "gorule-0000001": [ + { + "level": "WARNING", + "entity": "I'm\ta\tGAF\tline", + "type": "Violates GO Rule", + "message": "This is an error message", + "rule": 1, + "taxon": "taxon:12345" + } + ] + } +} +``` + +The message in `gorule-0000001` would be *merged* to be: + +``` +{ + "level": "WARNING", + "entity": "I'm\ta\tGAF\tline", + "type": "Violates GO Rule", + "message": "This is an error message", + "rule": 1, + "taxon": "taxon:12345", + "group": "rebels" +} +``` + +The key `group` is taken from the top level. Open question of if we want to convert `rule` to be the actual rule ID, `gorule-0000001`.