Giter VIP home page Giter VIP logo

jsonld_forms's Introduction

jsonld_forms's People

Contributors

cholson avatar smrgeoinfo avatar valentinedwv avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

smrgeoinfo

jsonld_forms's Issues

Vue/JSONFORMS component: Person

JSONFORMS Component that can be incorporated into a form to create a person object

Pull from the user.json for logged in user
pull from orcid
search (orcid by name?)

Component: Potential Actions from OpenAPI Spec

As a starting point, create a list of potential actions from an OPENAPI/swagger file

A different starting point would be to use the OPENAPI as the starting point for a tool description

Update datePublished

{
"@type":
"PropertyValue",
"propertyID":
"ecrro:ECRRO_0001301",
"name":
"registration metadata",
"value":
{
"@type":
"StructuredValue",
"additionalType":
"ecrro:ECRRO_0000156",
"contributor":
{
"@type":
"Person",
"name":
"Stephen M. Richard",
"identifier":
"https://orcid.org/0000-0001-6041-5302"
}
"datePublished":
"2020-12-18T20:58:34Z"
}
}

Architecture can we do this

https://docs.google.com/drawings/d/1S5Mywan0V7lVHzCDV0P9zjfVvXsOOsIkvsmF2U2NCI8/edit

Minio:

  • authentication
  • ability to restrict a group to a bucket
  • ability to restrict group to a sub bucket
  • schedule workflow to push to a 'production' bucket

Useful:

  • versioning

Workflow:

  • user registers, is associated with a group
    • group restricted to sub bucket
    • sub bucket rights assigned, so access granted to sub bucket granted
    • group can only be restricted to a bucket
      • bucket created, rights assigned, access to bucket granted
  • user creates file in UI,
    • saves progress. File is pushed to minio sub bucket with a draft metadata flag.
    • finalizes file, file pushed to bucket with publish metadata flag
  • workflow pushes "publish" jsonld to production bucket, (and triggers push to triple store)
  • workflow harasses about a draft. Do we want an I am just testing flag?

Admin UI

  • users/group listing
  • all files listing
    • for a group
    • draft
  • validation of a json file

Mino Documentation:

Component: Related

Have way to add related links between each files in the system

Initially just local.

Component: Array with OneOf enum

This renders as a list of checkboxes, but you cannot see what has been checked. You check one, and one goes away, BUT it is in the array.
Either we display what is in the array, or we be sure what is checked is in the array

S3 'api'

I logged in user submits the json of the form to the minio
javascript for the VUE UI

  • push to appropriate location based on resource and user or group
    • naming conventions, needed
    • metadata
      • status: draft|| pubished
      • formtype: [form main type (resource|| dataset|| org||...)]:[subtype]:[version]

Component: Org

Component to create an JSONFORMS organization component

Option to pull information from (r3e, or other resource (nsf?)) to populate the fields.

resources additionalProperty flatten/unflatten

Additional Property types is a monster in the room.
https://github.com/earthcube/ResourceRegistry/blob/baa4200457802fce87a5f7d25c24e7c25754b496/ecrrjsonschema1.0.json#L433
and it's 'definition'
https://github.com/earthcube/ResourceRegistry/blob/baa4200457802fce87a5f7d25c24e7c25754b496/ecrrjsonschema1.0.json#L547

The best approach will be to have split the 'additional' out into form fields, and then

  • unflatten on save (move a list of fields to additional property)
  • and flatten on edit (move fields out of additional property).

So "properties" will be added schema used in app, and we can validate against the official schema on submit (or not).

UI Pages

  • login/Auth a user
    • just get username/user.json file from the store or ask keycloak.
  • signup a user
    • What info do we need (username, email, institution)
    • write or update username/user.json
  • ask to create a group
    • What info do we need (group, description, admins)

Form: DataCatalog

Create a form to create a data catalog JSONLD record (and transform to a tool?)

Actions Allow 'object' endpoint reference reuse

Potential Action is incomplete. There are examples in the examples.

Action how to:
https://schema.org/docs/actions.html
List of actions:
https://schema.org/Action

https://github.com/earthcube/ecrro/blob/master/Examples/Interface-ChordsWebAPIv2-SDO-toLoad.json

Uses examples of referencing. Even if we do not do referencing, we may still need to allow for repeated use of 'types' of data described for an endpoint.

	{
						"@id": "http://portal.chordsrt.com/about/data_urls#start"
					},

** start

{
			"@type": "SearchAction",
			"name": "Get data acquired from multiple instruments for date range",
			"description": "Download multiple instruments w/ instrument ids bounded by an optional start and/or end date",
			"result": {
				"@type": "DataDownload",
				"encodingFormat": [
					"application/json",
					"application/geo+json"
				]
			},
			"target": {
				"@type": "EntryPoint",
				"urlTemplate": "http://portal.chordsrt.com/api/v1/data.{encoding}?instruments={instruments}&start={start}&end={end}",
				"httpMethod": "GET",
				"query-input": [
					{
						"@id": "http://portal.chordsrt.com/about/data_urls#encoding"
					},
					{
						"@id": "http://portal.chordsrt.com/about/data_urls#instruments",
						"@type": "PropertyValueSpecification",
						"valueName": "instruments",
						"description": "A comma-separated list of instrument identifiers. Instrument identifiers for this end point are integers between 1 and 6",
						"minValue": 1,
						"maxValue": 6,
						"valueRequired": true
					},
					{
						"@id": "http://portal.chordsrt.com/about/data_urls#start",
						"@type": "PropertyValueSpecification",
						"valueName": "start",
						"description": "A start time for the returned measurements. use xsd:dateTime format",
						"valueRequired": false,
						"valuePattern": "(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?"
					},
					{
						"@id": "http://portal.chordsrt.com/about/data_urls#end",
						"@type": "PropertyValueSpecification",
						"valueName": "end",
						"description": "An end time for the returned measurements. use xsd:dateTime format",
						"valueRequired": false,
						"valuePattern": "(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?"
					}
				]
			},
			"object": {
				"@type": "DataFeed",
				"description": "need to clarify the purpose of having these '-input' elements here is; see object is last entry above, where suggest that should describe the variableMeasured that are reported by the DataFeed. Also the identifier-input values are instrument identifiers, not identifiers for the DataFeed, seems like this would be confusing; and the temporalCoverage input is not consistent with 'a textual string indicating a time period in ISO 8601 time interval format.'",
				"encodingFormat-input": {
					"@id": "http://portal.chordsrt.com/about/data_urls#encoding"
				},
				"identifier-input": {
					"@id": "http://portal.chordsrt.com/about/data_urls#instruments"
				},
				"temporalCoverage-input": [
					{
						"@id": "http://portal.chordsrt.com/about/data_urls#start"
					},
					{
						"@id": "http://portal.chordsrt.com/about/data_urls#end"
					}
				]
			}
		},

Backend Docker/keycloak

containers... the present docker-compose here needs to be changed to use treafik.

  • minio
  • traefik (what we use)
  • keycloak (hosted at NCSA, or a docker

Notes on how the UI and minio should interact:

Minio docker needs to be configured/populated with the policy to restrict users to a 'home' directory

keycloak, because that will handle the registering of users, I believe. Otherwise we need to create a quick api to create users. We can reuse keycloak as a user login for jena fuseki in the shiro.conf (I think)

trafik examples in geodes:
https://github.com/earthcube/geodex

Postman tests for the policies are in:
docker/MinioTests.postman_collection.json

form: resource

Create a resource form for all

simplified form with few options

schema
initialdata
ui definition

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.