Semi-Structured - Application for managing evolving datasets
============================================================

This Phorge extension is designed to allow storing and managing objects that
are not fully defined, and allowing the definition to easily evolve over time.

Data consists of "Instance" and "Types" (classes). Each object in an instance of
a single Type. Types define the required data (fields) of their instances.

Instance and Types have all the features of other Phorge objects - comments,
mentions, notifications, transactions, search and policies.

Objects have
- ID
- Title and Free text
- Free, structured data (JSON blob, without a schema)
- Custom fields, defined in the Class. These are typed, may have validation,
  and may be searchable and may hold references to other Phorge objects.



Custom fields are defined using Phorge's
[Custom Fields](https://we.phorge.it/book/phorge/article/custom_fields/)
mechanism, which is quite capable. If needed, Advanced Custom Fields may be
added by writing PHP code.



------------


Installation:

- `git clone` this repository somewhere safe
- In Phorge's `conf/local/local.json` add the path to the `src/` dir to the
  entry `load-libraries`, something like this:

```
  ...
  "load-libraries": [
    "/somewhere/safe/semi-structured/src/"
  ],
  ...
```

- Run Phorge's `bin/storage upgrade` and restart Phorge.


In `docs/examples/xkcd` you'll find a script that loads some example data:
```
$ ./docs/examples/xkcd/load-xkcd.py  <your-server-address>
```
