conversion between json and irods avus
play

conversion between JSON and iRODS AVUs. Paul van Schayck, Ton - PowerPoint PPT Presentation

Providing validated, templated and richer metadata using a bidirectional conversion between JSON and iRODS AVUs. Paul van Schayck, Ton Smeele, Daniel Theunissen and Lazlo Westerhof Metadata Come up with a generic way within iRODS to provide


  1. Providing validated, templated and richer metadata using a bidirectional conversion between JSON and iRODS AVUs. Paul van Schayck, Ton Smeele, Daniel Theunissen and Lazlo Westerhof

  2. Metadata Come up with a generic way within iRODS to provide metadata templates, validation and user interaction

  3. Metadata in iRODS Attribute VARCHAR(255) iRODS object Value VARCHAR(2700) (Resource, User, Unit VARCHAR(255) Object, Collection) AVU: Attribute Value Unit

  4. Why JSON? • Long dark flowing hair • Knows C++ • Loves beer • All around nice guy

  5. Why JSON? • JSON is flexible and easy • Features: nesting and arrays • Human and developer readable • Validation: JSON-schema • Linked Data: JSON-LD

  6. Overview - Layers Template Presentation Form UI schema Validation Metadata Metadata AVUs Conversion

  7. Design requirements • Bijection between JSON <-> AVU • Lean JSON -> AVU conversion. • Keep Attribute->Value pairs the same • Compatible with existing or additional AVUs • Compatible/aware of JSON-LD

  8. Conversion { "title": "Hello World!", Attribute Value Unit "parameters": { title Hello World! root_0_s "size" : 42, parameters o1 root_0_o1 "readOnly" : false size 42 root_1_n }, "authors" : ["Foo", "Bar"], readOnly False root_1_b "references": [ authors Foo root_0_s#0 { authors Bar root_0_s#1 "title": "The Rule Engine", references o2 root_o_o2#0 "doi": "1234.5678" title The Rule Engine root_2_s } doi 1234.5678 root_2_s ] }

  9. Conversion: step by step { Attribute Value Unit "title": "Hello World!", title Hello World! root_0_s "parameters": { parameters o1 root_0_o1 "size" : 42, size 42 root_1_n "readOnly" : false readOnly False root_1_b }, authors Foo root_0_s#0 "authors" : ["Foo", "Bar"], authors Bar root_0_s#1 "references": [ { references o2 root_o_o2#0 "title": "The Rule Engine", title The Rule Engine root_2_s "doi": "1234.5678" doi 1234.5678 root_2_s } ] }

  10. Conversion - Usage of the unit field root_parent_type#index JSON-root [a-z] Parent object [0-9] array index [0-9] Type [osbnze]

  11. Conversion - Implementation Conversion Ruleset irods_avu_json irods_avu_json-ruleset • • Python Python ruleset (core.py) • • pip package Includes AVU microservices • Standalone from iRODS /MaastrichtUniversity/irods_avu_json /MaastrichtUniversity/irods_avu_json-ruleset setJsonToObj(*object, *objectType, *jsonRoot, *json) getJsonFromObj(*object, *objectType, *jsonRoot)

  12. Conversion - Demo

  13. Validation - Overview Template schema Validation Metadata Metadata AVUs Conversion

  14. Validation – JSON-schema JSON Schema is a vocabulary that allows you to annotate and validate JSON documents.

  15. Validation – Process Template schema A: $id i:/tempZone/path/to/schema.json V: URI iRODS object https://example.com/schema.json U: JSON-root (Resource, User, Object, Collection) Metadata AVUs setJsonToObj() PEPs Validation pep_database_*_avu_* imeta/metalnx/etc AVUs

  16. Validation - Implementation Ruleset irods_avu_json-ruleset • Python ruleset (core.py) • Includes AVU microservices • PEPs /MaastrichtUniversity/irods_avu_json-ruleset • setJsonSchemaToObj(*object, *objectType, *jsonSchema, *jsonRoot) • getJsonSchemaFromObj(*object, *objectType, *jsonRoot) • pep_database_*_avu_*(*)

  17. Validation - Demo

  18. Overview - Presentation Template Presentation Form UI schema Validation Metadata Metadata AVUs Conversion

  19. Presentation – JSON-schema -> Form From https://github.com/networknt/react-schema-form

  20. Our use cases 1. YoDa (Utrecht University) • Uses forms defined in JSON-schema (build in ReactJS), outputting JSON 2. DataHub (Maastricht University) • Looks at CEDAR, an Angular JSON-schema form generator, outputting JSON-LD

  21. Presenation - Demo

  22. Future Form Builder Search UI Presentation Template Form UI schema Validation Metadata Conversion Metadata AVUs

  23. Final thoughts • Devils advocate: • Why not store entire JSON in single AVU? • JSON-schema: • No real standard for UI presentation (yet) • Implementation: • Devs: Microservices for setting AVUs! (iRODS-4185) • Devs: PEPs for AVU control are difficult to use • Possible race conditions during set (locking?)

  24. Acknowledgements Metadata Templates Working Group Daniel Lazlo Ton Theunissen Westerhof Smeele + rest of team

  25. This Friday! Hackaton Conversion Ruleset Docker irods_avu_json irods_avu_json-ruleset irods_avu_json-docker • • • Python Python ruleset (core.py) Single iCAT instance • • • pip package Includes AVU microservices Install microservices and • • Standalone from iRODS PEPs ruleset • Runs tests MaastrichtUniversity/irods_avu_json /MaastrichtUniversity/irods_avu_json-ruleset /MaastrichtUniversity/irods_avu_json-docker Ideas: • Add AVU-unit microservices to core? • C++ microservice implementation? • Better PEPs? • Your applications?

  26. A quick introduction to JSON-LD JSON input @context (also JSON) { { "id": "http://hdl.handle.net/21.12109/P000000009C000000008", "id": "@id" "creator": "https://orcid.org/0000-0001-6591-4637", "creator": "http://purl.org/dc/terms/creator" "description": "Lorem Ipsum", "description": "http://purl.org/dc/terms/description", "title": "Foobar" "title": "http://purl.org/dc/terms/title", } } Result: Linked data (RDF) <http://hdl.handle.net/21.12109/P000000009C000000008> <http://purl.org/dc/terms/creator> "https://orcid.org/0000 -0001-6591-4637" . <http://hdl.handle.net/21.12109/P000000009C000000008> <http://purl.org/dc/terms/description> "Lorem Ipsum" . <http://hdl.handle.net/21.12109/P000000009C000000008> <http://purl.org/dc/terms/title> "Foobar" . Convert any JSON into linked data by providing the @context Result: Human and developer readable linked data!

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend