restored README

This commit is contained in:
maintenance 2024-06-24 15:16:54 +02:00
parent 1a271ecdd7
commit 13da681acf
2 changed files with 46 additions and 0 deletions

45
README.md Normal file
View file

@ -0,0 +1,45 @@
# PAAA-PoC
This repository is a proof-of-concept for a versioned storage as per the Plazi Actionable Accessible Archive (PAAA) arhitecture.
![paaa-architecture drawio](https://user-images.githubusercontent.com/110756/151776949-221d2508-5e80-4312-ae49-c616121351f6.svg)
The repository contains all treatments in the Plazi Root Format GG-XML that pass the TreatmentBank Gatekeeper rules for LOD data, all other formats offered by Plazi can be derived from this format. [A GitHub Workflow](.github/workflows/main.yml) exemplifies the transformation to another format. It uses xalan and rapper to transform the documents to RDF whenever they are changed or added.
# Workflow: How Changes are translated to Synospecies
Changed XML is uploaded to this repository (currently this is always from TreatmentBank). All XML Documents and their history is available in the [data folder](data/) in this Git Repository.\
↓\
A webhook is sent to our server where https://github.com/plazi/gg2rdf transform all changed XML to RDF turtle.
<!-- A github action in this repository is immediatley triggered, this action transforms this XML to RDF Turtle,-->
to do so it uses this [XSLT](https://github.com/plazi/gg2rdf/blob/main/gg2rdf.xslt) and the [Raptor RDF Library](https://librdf.org/raptor/). [![transformation status](https://gg2rdf.ld.plazi.org/status)](https://gg2rdf.ld.plazi.org/status)\
↓\
The same Github Action uploads the genrated RDF to the [treatments-rdf repository](https://github.com/plazi/treatments-rdf)\
↓\
That repository triggers a Webhook on our server, where PSPS takes in the data and stores it in an internal triplestore.
(Exposed SPARQL-Endpoint at https://treatment.ld.plazi.org/sparql )\
↓\
PSPS then uploads all this data to lindas, which reloads itself every 24h, from where Synospecies gets its data by default
# GateKeeper rules
| source | destination | check | type | message |
| -------------- | ----------------------------- | ---------------------- | ---------- | ----------|
| SRS | LOD | (./category[./@name = 'taxonomicNames']/type[./@name = 'missingRank' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | taxonomicNames/missingRank | Unresolved treatment taxon issues |
| SRS | LOD | (./category[./@name = 'taxonomicNames']/type[./@name = 'missingAuthority' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | taxonomicNames/missingAuthority | Unresolved treatment taxon issues |
| SRS | LOD | (./category[./@name = 'taxonomicNames']/type[./@name = 'missingFamily' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | taxonomicNames/missingFamily | Unresolved treatment taxon issues |
| SRS | LOD | (./category[./@name = 'taxonomicNames']/type[./@name = 'missingOrder' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | taxonomicNames/missingOrder | Unresolved treatment taxon issues |
| SRS | LOD | (./category[./@name = 'taxonomicNames']/type[./@name = 'missingKingdom' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | taxonomicNames/missingKingdom | Unresolved treatment taxon issues |
| SRS | LOD | (./category[./@name = 'taxonomicNames']/type[./@name = 'brokenFamily' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | taxonomicNames/brokenFamily | Unresolved treatment taxon issues |
| SRS | LOD | (./category[./@name = 'taxonomicNames']/type[./@name = 'brokenOrder' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | taxonomicNames/brokenOrder | Unresolved treatment taxon issues |
| SRS | LOD | (./category[./@name = 'treatments']/type[./@name = 'missingTaxon' and $detailId and ./@errors-blocker > 0]) | treatments/missingTaxon | Unresolved treatment boundary issues |
| SRS | LOD | (./category[./@name = 'treatments']/type[./@name = 'brokenBoundaries' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | treatments/brokenBoundaries | Unresolved treatment boundary issues |
| SRS | LOD | (./category[./@name = 'treatments']/type[./@name = 'brokenStructure' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | treatments/brokenStructure | Unresolved treatment structure issues |
| SRS | LOD | (./category[./@name = 'treatments']/type[./@name = 'missingStructure' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | treatments/missingStructure | Unresolved treatment structure issues |
| SRS | LOD | (./category[./@name = 'treatments']/type[./@name = 'missingNomenclature' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | treatments/missingNomenclature | Unresolved treatment structure issues |
| SRS | LOD | (./category[./@name = 'treatments']/type[./@name = 'spuriousTreatment' and $detailId and ./@errors-blocker > 0]) | treatments/spuriousTreatment | Treatment too small to be valid |
| SRS | LOD | (./category[./@name = 'treatments']/type[./@name = 'mingledTreatments' and $detailId and ./@errors-blocker > 0]) | treatments/mingledTreatments | Treatment might be aggregate of multiple treatments |
| SRS | LOD | (./category[./@name = 'treatments']/type[./@name = 'brokenReferenceGroup' and $detailId and (./@errors-blocker > 0 or ./@errors-critical > 0)]) | treatments/brokenReferenceGroup | Reference group cites suspicious taxon names |
| // | fallback for missing error protocol: uploaded 2020-06-01 or later |
| SRS | LOD | (./@checkinTime > 1590926399000) | document/missingQc | QC is required for LOD export of treatments extracted from IMF documents uploaded after 2020-05-31 |
| |

1
paaa-architecture.drawio Normal file
View file

@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2022-01-29T14:58:06.700Z" agent="5.0 (X11)" etag="jps4WN9L-EG8yWor0Fqr" version="16.5.2"><diagram id="UlZs0xGXxbSzZBibaD3L" name="Page-1">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</diagram></mxfile>