Skip to content

Commit

Permalink
Merge pull request #21 from asishallab/main
Browse files Browse the repository at this point in the history
  • Loading branch information
BrapiCoordinatorSelby committed Apr 16, 2024
1 parent 976dc48 commit 7f4e371
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 33 deletions.
22 changes: 15 additions & 7 deletions manuscript.html
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@
<meta name="dc.date" content="2024-04-16" />
<meta name="citation_publication_date" content="2024-04-16" />
<meta property="article:published_time" content="2024-04-16" />
<meta name="dc.modified" content="2024-04-16T13:52:32+00:00" />
<meta property="article:modified_time" content="2024-04-16T13:52:32+00:00" />
<meta name="dc.modified" content="2024-04-16T13:59:28+00:00" />
<meta property="article:modified_time" content="2024-04-16T13:59:28+00:00" />
<meta name="dc.language" content="en-US" />
<meta name="citation_language" content="en-US" />
<meta name="dc.relation.ispartof" content="Manubot" />
Expand Down Expand Up @@ -171,9 +171,9 @@
<meta name="citation_fulltext_html_url" content="https://plantbreeding.github.io/BrAPI-Manuscript2/" />
<meta name="citation_pdf_url" content="https://plantbreeding.github.io/BrAPI-Manuscript2/manuscript.pdf" />
<link rel="alternate" type="application/pdf" href="https://plantbreeding.github.io/BrAPI-Manuscript2/manuscript.pdf" />
<link rel="alternate" type="text/html" href="https://plantbreeding.github.io/BrAPI-Manuscript2/v/3770f007443891a5137dd0de958483f0222ec098/" />
<meta name="manubot_html_url_versioned" content="https://plantbreeding.github.io/BrAPI-Manuscript2/v/3770f007443891a5137dd0de958483f0222ec098/" />
<meta name="manubot_pdf_url_versioned" content="https://plantbreeding.github.io/BrAPI-Manuscript2/v/3770f007443891a5137dd0de958483f0222ec098/manuscript.pdf" />
<link rel="alternate" type="text/html" href="https://plantbreeding.github.io/BrAPI-Manuscript2/v/89966a59e50d4a60f83c1bcbbf3aba6ac8f9a30a/" />
<meta name="manubot_html_url_versioned" content="https://plantbreeding.github.io/BrAPI-Manuscript2/v/89966a59e50d4a60f83c1bcbbf3aba6ac8f9a30a/" />
<meta name="manubot_pdf_url_versioned" content="https://plantbreeding.github.io/BrAPI-Manuscript2/v/89966a59e50d4a60f83c1bcbbf3aba6ac8f9a30a/manuscript.pdf" />
<meta property="og:type" content="article" />
<meta property="twitter:card" content="summary_large_image" />
<link rel="icon" type="image/png" sizes="192x192" href="https://manubot.org/favicon-192x192.png" />
Expand All @@ -190,9 +190,9 @@ <h1 class="title">BrAPI Success Stories</h1>
</header>
<p><small><em>
This manuscript
(<a href="https://plantbreeding.github.io/BrAPI-Manuscript2/v/3770f007443891a5137dd0de958483f0222ec098/">permalink</a>)
(<a href="https://plantbreeding.github.io/BrAPI-Manuscript2/v/89966a59e50d4a60f83c1bcbbf3aba6ac8f9a30a/">permalink</a>)
was automatically generated
from <a href="https://github.com/plantbreeding/BrAPI-Manuscript2/tree/3770f007443891a5137dd0de958483f0222ec098">plantbreeding/BrAPI-Manuscript2@3770f00</a>
from <a href="https://github.com/plantbreeding/BrAPI-Manuscript2/tree/89966a59e50d4a60f83c1bcbbf3aba6ac8f9a30a">plantbreeding/BrAPI-Manuscript2@89966a5</a>
on April 16, 2024.
</em></small></p>
<h2 id="authors">Authors</h2>
Expand Down Expand Up @@ -664,6 +664,14 @@ <h4 id="florilège-gateway-to-french-plant-genetic-resources">FLORILÈGE (Gatewa
<p>Designed primarily for the general public, Florilège provides access to all French plant biological resources centers. Its interface allows individuals to browse available plant accessions and gives them the possibility to order them. The listed accessions originate from 19 resources centers and concern around fifty plant species.</p>
<p>Florilège retrieves accession information from different BrAPI-compliant systems such as OLGA, an internal accessions management system, or FAIDARE. Leveraging the BrAPI implementation of these systems ensures standardized data retrieval from multiple sources, making the integration of new data sources that implement BrAPI an effortless process. The implementation of BrAPI is a prerequisite for the integration of any new database in Florilège.</p>
<p>Florilège is developed in Drupal 10, and uses xnttbrapi module (to easily connect to BrAPI compliant external databases).</p>
<h4 id="brapi-plug-and-play-graphql-based-data-warehouse">BrAPI plug and play GraphQL based data-warehouse</h4>
<p>Using the “Zendro” set of automatic software program-code generators (zendro-dev.github.io) a fully functional, efficient, and cloud-capable BrAPI data-warehouse has been created for the current version of the BrAPI data models. The resulting data-warehouse has two interfaces, one application programming interface implemented in the form of a GraphQL web-server and another intuitive point and click graphical user interface in the browser. Both provide secure access to data read and write functions for all BrAPI data models. These data administration methods comprise create, read, update, and delete (CRUD) functions that are standardized and accept the same parameters for all data models.</p>
<p>While data write access comprises both persisting single or multiple records, data read access is particularly rich in features and includes access to single records referred to by their id and access to multiple records selected by logical filters. In this, multiple records are paginated using the highly efficient cursor based pagination model as proposed in the GraphQL standard. Logical filters allow for exhaustive search queries, whose structure is highly intuitive and based around logical triplets in which a data model field is validated using an operator and a value, e.g. “Study name equals ‘xyz’”. In this a large collection of operators is available and triplets can be combined to logical search trees using “and” or “or” operators. Searches can be extended over relationships between data models, thus enabling a user to query the warehouse exactly for the data wanted.</p>
<p>Access security is implemented with the OAuth2 user authentication standard (datatracker.ietf.org/doc/html/rfc6749). Authorization is based on user roles and can be configured differently for each single data model read or write function.</p>
<p>The browser based graphical user interface is implemented in React.js with Next and exposes an intuitive and self explanatory set of functions for each data model. In the left a menu allows the user to access all BrAPI data models. Upon clicking on a model a table is shown which allows the user to paginate through all existing records, sort them by any column, search the records, add new records, or update or delete existing records, if the user role authorizes these functions. Record data can be inspected in a detail view and here relationships to other data records can be reviewed using the very same graphical visual representations. Breadcrumbs allow the user to navigate back and forth in the trail of relationships inspected. Finally, the generated graphical interface allows for the integration of interactive scientific plots and analysis tools written in JavaScript or WebAssembly.</p>
<!-- Asis Hallab: To Do: (i) provide the link to an example running data warehouse, and (ii) include and describe example scientific plots. -->
<p>The Zendro based BrAPI plug and play data-warehouse is capable of forming an efficient cloud of data servers. This is achieved simply by linking (URLs) other Zendro based warehouses that expose the same GraphQL API to the same data models, or a subset of data models. Any network of such Zendro GraphQL servers can be set up using this configuration approach. The code generated then exposes full access to all data records stored on any node of the network, while maintaining full security control at each node. Importantly, the warehouses are programmed in such a way that any number of data servers can be joined without loss of efficiency. Only the network connection speed and size of requested record sets influence the performance.</p>
<p>As explained, Zendro is a code generator and creates a fully functional data warehouse from input data model definitions, i.e. a schema. The schema is given in the form of special data model descriptions, in which each model is defined using JavaScript Object Notation (JSON). Each model is defined in its respective JSON file. A translator has been developed to create the Zendro schema from the BrAPI data model definitions. This ensures that Zendro can create plug and play data warehouses for future versions of the BrAPI with great ease, i.e. by translating the BrAPI models to Zendro input and subsequently running Zendro to create the plug and play warehouse.</p>
<h2 id="discussion">Discussion</h2>
<!-- * how can BrAPI help breeders (specifically small breeders)
* Looking ahead - what needs to be done further
Expand Down
30 changes: 23 additions & 7 deletions manuscript.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ header-includes: |
<meta name="dc.date" content="2024-04-16" />
<meta name="citation_publication_date" content="2024-04-16" />
<meta property="article:published_time" content="2024-04-16" />
<meta name="dc.modified" content="2024-04-16T13:52:32+00:00" />
<meta property="article:modified_time" content="2024-04-16T13:52:32+00:00" />
<meta name="dc.modified" content="2024-04-16T13:59:28+00:00" />
<meta property="article:modified_time" content="2024-04-16T13:59:28+00:00" />
<meta name="dc.language" content="en-US" />
<meta name="citation_language" content="en-US" />
<meta name="dc.relation.ispartof" content="Manubot" />
Expand Down Expand Up @@ -142,9 +142,9 @@ header-includes: |
<meta name="citation_fulltext_html_url" content="https://plantbreeding.github.io/BrAPI-Manuscript2/" />
<meta name="citation_pdf_url" content="https://plantbreeding.github.io/BrAPI-Manuscript2/manuscript.pdf" />
<link rel="alternate" type="application/pdf" href="https://plantbreeding.github.io/BrAPI-Manuscript2/manuscript.pdf" />
<link rel="alternate" type="text/html" href="https://plantbreeding.github.io/BrAPI-Manuscript2/v/3770f007443891a5137dd0de958483f0222ec098/" />
<meta name="manubot_html_url_versioned" content="https://plantbreeding.github.io/BrAPI-Manuscript2/v/3770f007443891a5137dd0de958483f0222ec098/" />
<meta name="manubot_pdf_url_versioned" content="https://plantbreeding.github.io/BrAPI-Manuscript2/v/3770f007443891a5137dd0de958483f0222ec098/manuscript.pdf" />
<link rel="alternate" type="text/html" href="https://plantbreeding.github.io/BrAPI-Manuscript2/v/89966a59e50d4a60f83c1bcbbf3aba6ac8f9a30a/" />
<meta name="manubot_html_url_versioned" content="https://plantbreeding.github.io/BrAPI-Manuscript2/v/89966a59e50d4a60f83c1bcbbf3aba6ac8f9a30a/" />
<meta name="manubot_pdf_url_versioned" content="https://plantbreeding.github.io/BrAPI-Manuscript2/v/89966a59e50d4a60f83c1bcbbf3aba6ac8f9a30a/manuscript.pdf" />
<meta property="og:type" content="article" />
<meta property="twitter:card" content="summary_large_image" />
<link rel="icon" type="image/png" sizes="192x192" href="https://manubot.org/favicon-192x192.png" />
Expand All @@ -166,9 +166,9 @@ manubot-clear-requests-cache: false

<small><em>
This manuscript
([permalink](https://plantbreeding.github.io/BrAPI-Manuscript2/v/3770f007443891a5137dd0de958483f0222ec098/))
([permalink](https://plantbreeding.github.io/BrAPI-Manuscript2/v/89966a59e50d4a60f83c1bcbbf3aba6ac8f9a30a/))
was automatically generated
from [plantbreeding/BrAPI-Manuscript2@3770f00](https://github.com/plantbreeding/BrAPI-Manuscript2/tree/3770f007443891a5137dd0de958483f0222ec098)
from [plantbreeding/BrAPI-Manuscript2@89966a5](https://github.com/plantbreeding/BrAPI-Manuscript2/tree/89966a59e50d4a60f83c1bcbbf3aba6ac8f9a30a)
on April 16, 2024.
</em></small>

Expand Down Expand Up @@ -790,6 +790,22 @@ Florilège retrieves accession information from different BrAPI-compliant system

Florilège is developed in Drupal 10, and uses xnttbrapi module (to easily connect to BrAPI compliant external databases).

#### BrAPI plug and play GraphQL based data-warehouse

Using the "Zendro" set of automatic software program-code generators (zendro-dev.github.io) a fully functional, efficient, and cloud-capable BrAPI data-warehouse has been created for the current version of the BrAPI data models. The resulting data-warehouse has two interfaces, one application programming interface implemented in the form of a GraphQL web-server and another intuitive point and click graphical user interface in the browser. Both provide secure access to data read and write functions for all BrAPI data models. These data administration methods comprise create, read, update, and delete (CRUD) functions that are standardized and accept the same parameters for all data models.

While data write access comprises both persisting single or multiple records, data read access is particularly rich in features and includes access to single records referred to by their id and access to multiple records selected by logical filters. In this, multiple records are paginated using the highly efficient cursor based pagination model as proposed in the GraphQL standard. Logical filters allow for exhaustive search queries, whose structure is highly intuitive and based around logical triplets in which a data model field is validated using an operator and a value, e.g. "Study name equals 'xyz'". In this a large collection of operators is available and triplets can be combined to logical search trees using "and" or "or" operators. Searches can be extended over relationships between data models, thus enabling a user to query the warehouse exactly for the data wanted.

Access security is implemented with the OAuth2 user authentication standard (datatracker.ietf.org/doc/html/rfc6749). Authorization is based on user roles and can be configured differently for each single data model read or write function.

The browser based graphical user interface is implemented in React.js with Next and exposes an intuitive and self explanatory set of functions for each data model. In the left a menu allows the user to access all BrAPI data models. Upon clicking on a model a table is shown which allows the user to paginate through all existing records, sort them by any column, search the records, add new records, or update or delete existing records, if the user role authorizes these functions. Record data can be inspected in a detail view and here relationships to other data records can be reviewed using the very same graphical visual representations. Breadcrumbs allow the user to navigate back and forth in the trail of relationships inspected. Finally, the generated graphical interface allows for the integration of interactive scientific plots and analysis tools written in JavaScript or WebAssembly.

<!-- Asis Hallab: To Do: (i) provide the link to an example running data warehouse, and (ii) include and describe example scientific plots. -->

The Zendro based BrAPI plug and play data-warehouse is capable of forming an efficient cloud of data servers. This is achieved simply by linking (URLs) other Zendro based warehouses that expose the same GraphQL API to the same data models, or a subset of data models. Any network of such Zendro GraphQL servers can be set up using this configuration approach. The code generated then exposes full access to all data records stored on any node of the network, while maintaining full security control at each node. Importantly, the warehouses are programmed in such a way that any number of data servers can be joined without loss of efficiency. Only the network connection speed and size of requested record sets influence the performance.

As explained, Zendro is a code generator and creates a fully functional data warehouse from input data model definitions, i.e. a schema. The schema is given in the form of special data model descriptions, in which each model is defined using JavaScript Object Notation (JSON). Each model is defined in its respective JSON file. A translator has been developed to create the Zendro schema from the BrAPI data model definitions. This ensures that Zendro can create plug and play data warehouses for future versions of the BrAPI with great ease, i.e. by translating the BrAPI models to Zendro input and subsequently running Zendro to create the plug and play warehouse.


## Discussion

Expand Down
Binary file modified manuscript.pdf
Binary file not shown.
30 changes: 30 additions & 0 deletions spelling-error-locations.txt
Original file line number Diff line number Diff line change
Expand Up @@ -536,8 +536,38 @@ content/03.07.data-portals.md:34:BrAPI
content/03.07.data-portals.md:34:Florilège
content/03.07.data-portals.md:34:Florilège
content/03.07.data-portals.md:34:xnttbrapi
content/03.07.data-portals.md:36:BrAPI
content/03.07.data-portals.md:36:GraphQL
content/03.07.data-portals.md:38:BrAPI
content/03.07.data-portals.md:38:BrAPI
content/03.07.data-portals.md:38:BrAPI
content/03.07.data-portals.md:38:GraphQL
content/03.07.data-portals.md:38:zendro
content/03.07.data-portals.md:38:Zendro
content/03.07.data-portals.md:40:GraphQL
content/03.07.data-portals.md:40:xyz
content/03.07.data-portals.md:44:BrAPI
content/03.07.data-portals.md:44:js
content/03.07.data-portals.md:44:WebAssembly
content/03.07.data-portals.md:48:BrAPI
content/03.07.data-portals.md:48:GraphQL
content/03.07.data-portals.md:48:GraphQL
content/03.07.data-portals.md:48:Zendro
content/03.07.data-portals.md:48:Zendro
content/03.07.data-portals.md:48:Zendro
content/03.07.data-portals.md:50:BrAPI
content/03.07.data-portals.md:50:BrAPI
content/03.07.data-portals.md:50:BrAPI
content/03.07.data-portals.md:50:JSON
content/03.07.data-portals.md:50:JSON
content/03.07.data-portals.md:50:Zendro
content/03.07.data-portals.md:50:Zendro
content/03.07.data-portals.md:50:Zendro
content/03.07.data-portals.md:50:Zendro
content/03.07.data-portals.md:50:Zendro
content/04.discussion.md:3:BrAPI
content/04.discussion.md:5:Analytics
content/04.discussion.md:7:GraphQL
content/04.discussion.md:11:BrAPI
content/04.discussion.md:13:BrAPI
content/04.discussion.md:15:BrAPI
Expand Down
26 changes: 16 additions & 10 deletions spelling-errors.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ BIMS
BioinfOmics
bioinformatics
BMS
brapi
BrAPI
BrapiCoordinatorSelby
BrapMan
BrAPP
BrAPPs
BRAVA
Breedbase
BreedBase
Brouwer
cardinalb
Casstevens
Expand Down Expand Up @@ -72,17 +72,18 @@ genotype
genotypes
genotypic
Genotyping
Germplasm
germplasm
Gigwa
GLIS
Gouripriya
GraphQL
GridScore
Guilhem
GuilhemSempere
GWAS
hackathon
hackathons
haplotype
Hackathons
Haplotype
haplotypes
hoc
HortControl
Expand All @@ -101,10 +102,11 @@ ITPGRFA
JEE
jlamossweeney
Jospeh
js
JSON
Kersey
Kew
khaled
Khaled
König
Kumar
Lamos
Expand All @@ -126,17 +128,18 @@ musa
MusaBase
Nationale
NIFA
OAuth
ontologies
OpenSILEX
pangenome
PGR
PGRFA
Phenome
PHENOME
phenomic
Phenospex
phenotypes
Phenotypic
Phenotyping
phenotypic
phenotyping
PHG
PHIS’s
phylogenetic
Expand All @@ -147,7 +150,7 @@ programmatically
programme
QBMS
QTL
raubach
Raubach
Rosaceae
rPHG
Saclay
Expand Down Expand Up @@ -176,8 +179,11 @@ variantsets
VCF
VIB
Wageningen
WebAssembly
WebFrontend
Weise
WheatIS
xnttbrapi
xyz
Zendro
zrm
Loading

0 comments on commit 7f4e371

Please sign in to comment.