From 1fc8574f9d65f2b286908556baabe945d7a81366 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20M=C3=BCller-Laackman?=
 <jonas.mueller-laackman@fu-berlin.de>
Date: Tue, 31 May 2022 16:40:03 +0200
Subject: [PATCH] add latest schema

---
 README.md                    | 254 +----------------------------------
 SCHEMATA/project.schema.json |  64 ++++++++-
 TEMPLATES/project.json       |   2 +-
 3 files changed, 70 insertions(+), 250 deletions(-)

diff --git a/README.md b/README.md
index 3bce7d2..4b5bfeb 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
 
 
 [![Generic badge](https://img.shields.io/badge/IndexSchema-v0.1.1-blue.svg)](#indexschema)
-[![Generic badge](https://img.shields.io/badge/ProjectsSchema-v0.1.4-blue.svg)](#projectsschema)
+[![Generic badge](https://img.shields.io/badge/ProjectsSchema-v0.1.5-blue.svg)](#projectsschema)
 [![Generic badge](https://img.shields.io/badge/ResourcesSchema-v0.1.0-blue.svg)](#resourcesschema)
 
 # Closing the Gap in Non-Latin Script Data
@@ -31,6 +31,12 @@ The schema underlies continuous development. Existing entries are going to be au
 
 Feel free to discuss the schema in the GitHub issues.
 
+As for now, the easiest way to contribute to our database is to just send us your JSON file, so we can implement it to the store.
+
+### <a id="indexschema"></a>JSON Schema for Projects (`v0.1.5`)
+
+See `TEMPLATES/project.json` for a template and `SCHEMATA/project.schema.json` for a comprehensive schema of the latest version.
+
 ### <a id="indexschema"></a>JSON Schema for Project Index / UUID Dictionary (`v0.1.1`)
 
 ```javascript
@@ -44,249 +50,3 @@ Feel free to discuss the schema in the GitHub issues.
   ...
 }
 ```
-
-### <a id="projectsschema"></a>JSON Schema for Projects (`v0.1.4`)
-
-The JSON-file is to be put in a folder with a simplified, machine-readable name of the project's title and added to the project-index.
-
-```javascript
-{
-  "schema_version": "0.1.4",
-  "record_metadata": {
-    // Universally Unique Identifier for each project 
-    "uuid": "",
-    // YYYY-MM-DD
-    "record_created": "",
-    // Name of the record's creator: Surname, Forename
-    "record_created_by": "",
-    // Array of modifications
-    "record_modified": [
-      {
-        // YYYY-MM-DD
-        "record_modified_on": "",
-        // Name of the record's last editor: Surname, Forename
-        "record_modified_by": ""
-      }
-    ]
-  },
-  "project": {
-    // Official title of the project
-    "title": "",
-    // Abbreviation if applicable
-    "abbr": "",
-    // Type of the project: organisation | project
-    "type": "",
-    // Array of Authority file URIs 
-    "ref": [
-      ""
-    ],
-    // Array of active terms in format: YYYY-MM-DD
-    "date": [
-      {
-        "from": "",
-        "to": ""
-      }
-    ],
-    // Array of project websites
-    "websites": [
-      ""
-    ],
-    // Description of the project
-    "project_desc": "",
-    // Array of Locations
-    "places": [
-      {
-        "place_name": {
-          // Name of the place
-          "text": "",
-          // Array of Authority file URIs
-          "ref": [
-            ""
-          ]
-        }
-      }          
-    ],
-    // Array of languages used in the project's presentation (website, flyer, ...) in ISO-639-2
-    "lang": [
-      ""          
-    ],
-    "topic_relations": {
-      // If no information is available: null, otherwise: true | false
-      "nls": true, // Is the project related to Non-Latin Scripts?
-      "dh": true, // Is the project related to Digital Humanities?
-      "meta": true, // Is the project a meta project?
-      "rdm": true, // Is the project related to Research Data Management?
-      "infrastructure": true // Is the project related to infrastructure?
-    },
-    "parents": [
-      // For each parent-project
-      // 1. if organisation and no UUID is given:
-      {
-        "type": "organisation",
-        "org_name": { 
-          // name of the organisation
-          "text": "", 
-          // Array of Authority file URIs  
-          "ref": [
-            ""
-          ]
-        },
-        // Array of Websites
-        "websites": [
-          ""
-        ],
-        // Array of Locations
-        "places":[
-          {
-            "place_name": {
-              // Name of the place
-              "text": "",
-              // Array of Authority file URIs 
-              "ref": [
-                ""
-              ]
-            }
-          }
-        ],
-        // __Optional__ notation for deeper relation hierarchies
-        "siblings": [],
-        "parents": [],
-        "children": []
-      },       
-      // 2. if project and no UUID is given:
-      {
-        "type": "project",
-        // name of the project
-        "title": "",
-        // Array of Authority file URIs 
-        "ref": [
-          ""
-        ],
-        // Array of Websites
-        "websites": [
-          ""
-        ],
-        // Array of Locations
-        "places":[
-          {
-            "place_name": {
-              // Name of the place
-              "text": "",
-              // Array of Authority file URIs 
-              "ref": [
-                ""
-              ]
-            }
-          }
-        ],
-        // __Optional__ notation for deeper relation hierarchies
-        "siblings": [],
-        "parents": [],
-        "children": []
-      },   
-      // 3. if project and has a UUID:
-      {
-        "type": "project",
-        // Official title of the project
-        "title": "",
-        // UUID of the project
-        "uuid": ""
-      },
-      // 4. if organisation and has a UUID:
-      {
-        "type": "organisation",
-        "org_name": {
-          // name of the organisation
-          "text": "",
-          // Array of Authority file URIs 
-          "ref": [
-              ""
-          ]
-        },
-        "uuid": ""
-      }
-    ],
-    // Children are handled the same way as parents
-    "children": [],
-    // Siblings (e.g. partner projects) are handled the same way as parents
-    "siblings": [],
-    // Array of relevant contacts
-    "contacts": [
-      {
-        "pers_name": {
-          // Name of the contact
-          "text": "",
-          // Array of Authority file URIs 
-          "ref": [
-              ""
-          ]
-        },
-        // Role of the contact:
-        // 0 = Management (e.g. PI, Coordinator, ...)
-        // 1 = Employee (e.g. Research Assistant, ...)
-        // 2 = Student Employee (e.g Student Assistant, ...)
-        // 3 = Contractor or Honorar staff
-        "role": 0,
-        // Array of institutional and/or personal websites
-        "websites": [
-          ""
-        ]           
-      }         
-    ],
-    "research_data": {
-      // Array of languages of the research data in ISO-639-2
-      "lang": [
-        ""
-      ]
-      // More information on research data to be added in a later version
-    },
-    // Stack: To be added in a later version
-    "stack": {},
-    // Policies: To be added in a later version
-    "policies": {}, 
-    // Array of keywords for the project, including all relevant languages in ISO-639-2
-    "keywords": [
-      ""
-    ],
-    // Comment on the entry, the project or field for any information that doesn't fit anywhere else
-    "comment": ""
-  }
-}
-```
-
-### <a id="resourcesschema"></a>JSON Schema for Resources (`v0.1.1`)
-
-```javascript
-{
-  // Valid main values for parent entries in field "type" can be extended by colon notation, e.g. "language:query:xml". For children, main value may vary, e.g. "framework".
-  "type": "other|language|db|reference|authority|org|literature|journal",
-  // Title of entry.
-  "label": "",
-  // Link to documentation or website.
-  "ref": "",
-  // Comment or description.
-  "comment": "",
-  // Tags to describe the item and make it easier to find. Empty if none given, but it is highly advised to provide at least a couple of tags.
-  "tags": [
-    "#tag",
-  ],
-  // __Optional__: Provide relation between frameworks and their languages. Array of Objects with the same schema as parent.
-  "frameworks": [],
-  // Credit for collecting.
-  "collected_by": {
-    // Name of collector.
-    "name": "",
-    // Reference link, e.g. URI or URL to website or Orcid-Profile.
-    "ref": ""
-  },
-  // __Optional__: Credit for editing.
-  "edited_by": {
-    // Name of editor.
-    "name": "",
-    // Reference link, e.g. URI or URL to website or Orcid-Profile.
-    "ref": ""
-  }
-}
-
-```
-
diff --git a/SCHEMATA/project.schema.json b/SCHEMATA/project.schema.json
index bdf04af..c5cbf77 100644
--- a/SCHEMATA/project.schema.json
+++ b/SCHEMATA/project.schema.json
@@ -13,7 +13,7 @@
     "schema_version": {
       "description": "Version of the used JSON schema",
       "type": "string",
-      "default": "0.1.4"
+      "default": "0.1.5"
     },
     "record_metadata": {
       "description": "Metadata of the record file",
@@ -292,7 +292,67 @@
           }
         },
         "stack": {
-          "description": "To be added in a later version"
+          "type": "object",
+          "description": "Information on the stack used by the project",
+          "properties": {
+            "database": {
+              "type": "array",
+              "description": "List of database systems in use",
+              "items": {
+                "type": "string"
+              }
+            },
+            "backend": {
+              "type": "array",
+              "description": "List of backend technologies in use",
+              "items": {
+                "type": "string"
+              }
+            },
+            "frontend": {
+              "type": "array",
+              "description": "List of frontend technologies in use",
+              "items": {
+                "type": "string"
+              }
+            },
+            "languages": {
+              "type": "array",
+              "description": "List of programming, script and descriptive languages in use",
+              "items": {
+                "type": "string"
+              }
+            },
+            "tools": {
+              "type": "array",
+              "description": "List of tools that are used by the project",
+              "items": {
+                "type": "object",
+                "required": [
+                  "label", "self_developed", "ref"
+                ],
+                "properties": {
+                  "label": {
+                    "type": "string",
+                    "description": "Name of the tool"
+                  },
+                  "self_developed": {
+                    "type": "boolean",
+                    "description": "Is the tool developed by the project itself?"
+                  },
+                  "ref": {
+                    "type": "string",
+                    "description": "Refs and URLs to the tool and codebase",
+                    "$ref": "#/definitions/uri"
+                  },
+                  "purpose": {
+                    "type": "string",
+                    "description": "Description of the purpose in the context of the project"
+                  }
+                }
+              }
+            }
+          }
         },
         "keywords": {
           "description": "List of keywords to describe the project, including all relevant languages in ISO-639-2",
diff --git a/TEMPLATES/project.json b/TEMPLATES/project.json
index 4955164..5d912cf 100644
--- a/TEMPLATES/project.json
+++ b/TEMPLATES/project.json
@@ -1,5 +1,5 @@
 {
-  "schema_version": "0.1.3",
+  "schema_version": "0.1.5",
   "record_metadata": {
     "uuid": "",
     "record_created": "",
-- 
GitLab