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