# SOyA Open Items & Actions ## Tasks - [ ] support using system attributes in OverlayDataBudRendering - [x] support larger content - [ ] finish SOyA Tutorial - [ ] validation for sets: https://hackmd.io/VMr7hEn2T3aUCyRc9v3uqA - [ ] create a new `soya` command to extract the SHACL part of a SOyA structure - [ ] allow to delete SOyA structures `soya delete name` (but how to avoid misuse?) - [ ] support all data types (example: `positiveInteger`) in JSON Form allow to fall-back to available data types in JSON Form - [ ] ODRL representation of Data Agreements ### Task Details #### ODRL representation of Data Agreements * Example Data Agreements: https://hackmd.io/3GhuO47oRXu3_mpGO_pXvw?view#Data-Agreements #### OverlayDataBudRendering * system attributes: id, createdAt, updatedAt; maybe also attributes from meta? * proposal: use the notation `$` to access system attributes (e.g., `$id`, `$createdAt`) * example SOyA structure: https://soya.ownyourdata.eu/ConcreteMixture/yaml ## Conceptualisation ### Key Elements of SOyA * text based using YAML * simple building blocks with good examples example: PlantUML ### Functions * describe data structure (sit together in a meeting or workshop and write down data structures) - forms: data collection & rendering - possibility to use data-container backend to store data - validations - transformations - bridge flat vs graph: `init`, `acquire`, `canonical`, `map` - meta functions for collaboration & management: `push`, `pull`, `info`, `similar` ### Principles - automate simple tasks (80%) by providing scaffold for specialised tools - use specialised tools for the details (but store information in SOyA structure) - SHACL for validation - JSON Forms for form rendering - jq, jolt for transformations ## Bugfixes - [ ] tag handling for OverlayForm * strange behaviour when using `tag` in OverlayForm * does not switch between tags * does not show custom OverlayForm but only default as soon as `tag: xyz` is present in YAML * example SOyA structure: https://soya.ownyourdata.eu/zkEPD1/yaml ("simple" should not show field zkp: [SOyA-Form](https://soya-form.ownyourdata.eu/?schemaDri=zkEPD1&tag=extended&data=%7B%7D)) - [x] 1.1 regression: lists in forms depend on `soya_container: set` (now replaced with `range: "rdf:list"`) <details><summary>Details</summary> example: SOyA structure [`FlightList`](https://soya.ownyourdata.eu/FlightList/yaml) <- uses custom FormOverlay but should be possible to auto-generate simple FormOverlay minimal example to reproduce: ```bash= echo 'meta: name: ListDemo content: bases: - name: ListDemo attributes: id: String listItems: list<setItem | string> - name: listItem attributes: number: String priority: Integer' | soya init | soya form ``` ```bash= echo 'meta: name: ListDemo content: bases: - name: ListDemo attributes: id: String listItems: list<setItem | string> - name: listItem attributes: number: String priority: Integer listDemoId: String nullable foreignKey: ListDemo:id ' ``` introduce new "element": ``` { "@id": "listItems", "@type": "owl:ObjectProperty", "domain": "ListDemo", "range": "http://www.w3.org/1999/02/22-rdf-syntax-ns#List", "soya:containerType": "set", "soya:containerElementTypes": [ "https://example.com/listItem", "xsd:string" ] }, ``` should produce: ```json= { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "listItems": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "string" }, "priority": { "type": "integer" } } } } } }, "ui": { "type": "Group", "label": "ListDemo", "elements": [ { "type": "VerticalLayout", "elements": [ { "type": "Control", "scope": "#/properties/id" }, { "type": "Control", "scope": "#/properties/listItems", "options": { "elementLabelProp": "number", "detail": { "type": "HorizontalLayout", "elements": [ { "type": "Control", "scope": "#/properties/number" }, { "type": "Control", "scope": "#/properties/priority" } ] } } } ] } ] } } ``` </details> - [x] data type `xsd:double` requires string input example & reproduce: [link](https://soya-form.ownyourdata.eu/?schemaDri=ConcreteMixture&data=%7B%22cement%22%3A30.1%7D) * list of data types and mapping to XSD data types & [JSON Form Controls](https://jsonforms.io/examples/control) - Boolean -> `xsd:boolean`, `"type": "boolean"` - Integer -> `xsd:integer`, `"type": "integer"` - Float, Decimal, Double -> `xsd:double`, `"type": "number"` - String -> `xsd:string`, `"type": "string"` - Date -> `xsd:date`, `"type": "string", "format": "date"` - Time -> `xsd:time`, `"type": "string", "format": "time"` - DateTime -> `xsd:dateTime`, `"type": "string", "format": "date-time"` - [ ] support multiple data types `set<itemlist|string>` in forms (use first element) ## Epics - [ ] auto-generate SHACL for `set` handling (as discused in the 1.1 Bugfix) - [ ] Tag management for SOyA structures - [ ] implement Visual Studio Code plugin for SOyA management full functionality without command line