From 2aa7f9bf6c0dd5974157fe80947e9528a9b3623c Mon Sep 17 00:00:00 2001 From: Peter Sefton <peter.sefton@uts.edu.au> Date: Thu, 19 Dec 2019 13:48:26 +1100 Subject: [PATCH] Updated README --- README.md | 74 +++++++++++++++++++++++++++++++++- test_data/sample/describo.json | 40 +++++++++++++++++- 2 files changed, 110 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7f4f2f3..ebc7996 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,73 @@ Currently, you can: - Add rudimentary context (Place, Person and Organization) with rudimentary linking (eg affiliation) - Output CATALOG.json files to "bless" a directory as a Data Crate. +### Interface + +The current interface is a sketch only of how a linked-data based medata system can be built. + +There is a simple home-made JSON schema in views/index.js which expresses what values are allowed for a property. + + +This means that the name property has a text value: + +``` +schema = { + "properties": { + "name" : {"input": "text"}, +``` + +This means that contributor must be linked values, with a list of types. + +``` + "properties": { + "contributor" : {"input": "link", "type": ["Person", "Organization"]}, + "instrument" : {"input": "link", "type": ["IndividualProduct", "SoftwareApplication"]}, +``` + +And there is a template for each type: +``` +"types" : { + "Person" : { + "create" : true, + "template" : {"properties": + { + "type" : [{"value" : "Person"}], + "name" : [{"value" : " "}], + "affiliation" : [{"id" : ""}], + "email" : [{"value" : " "}], + "URL" : [{"value" : " "}] + } + } + }, +``` + +NOTE: This is actually not quite correct schema.org the property should be `url` and the value should be a reference to another object of type URL. + +The current demo interface has a `+` and `-` signs for adding new properties, new +values to arrays of properties AND new Contextual Items. This sort of works but is very confusing. + +### What we learned from the prototype + +#### The good + +- The Click-to-add a new entity thing works well. + +- It's great to rename a person, organisation etc on the item and see it update + in real time where that is referenced in a property. (Thanks to Vue's data + binding). + +#### Issues + +- Managing a large Crate becomes very cumbersome on screen. There's a hide all + button, and drop downs to find stuff of a certain type, but this is very + clumsy. + +- It would be nice to be able to re-use contextual items like people but at the moment + they are stored in a describo.json file + +- Likewise, if you describe a file it is currently only in the context of one dataset. + + ## Install @@ -45,6 +112,8 @@ Primary purpose: Possible extension use case: - Create abstract linked-data documents which may not be file-based at all + - + ### Architecture @@ -69,9 +138,10 @@ Should be structured so it can: - Once you've created (say) a Person, it is stored somewhere for re-use -- When creating (say) an Organization, you can search an online service like ROR.org, or a local ReDBOX mint service to get a list of candidates (likewise for people (orcid or wikipedia lookup), places) +- When creating (say) an Organization, you can search an online service like ROR.org, or a local ReDBOX mint service to get a list of candidates (likewise for people (ORCID or wikipedia lookup), places) + + -- ### Design decisions diff --git a/test_data/sample/describo.json b/test_data/sample/describo.json index 1590217..420dc92 100644 --- a/test_data/sample/describo.json +++ b/test_data/sample/describo.json @@ -36,6 +36,36 @@ }, "id": "0" }, + "1": { + "properties": { + "type": [ + { + "value": "Person" + } + ], + "name": [ + { + "value": "Another Person" + } + ], + "affiliation": [ + { + "id": "" + } + ], + "email": [ + { + "value": " " + } + ], + "URL": [ + { + "value": " " + } + ] + }, + "show": true + }, "2": { "properties": { "name": [ @@ -350,7 +380,7 @@ "properties": { "name": [ { - "value": "This is my sample" + "value": "This is a sample" } ], "description": [ @@ -362,6 +392,11 @@ "creator": [ { "id": "0" + }, + { + "value": "", + "id": "1", + "new_type": "Person" } ], "contributor": [], @@ -431,7 +466,8 @@ "id": "" } ] - } + }, + "id": "/Users/124411/working/describo/test_data/sample/CATALOG.html" } }, "root": "/Users/124411/working/describo/test_data/sample" -- GitLab