Skip to content
This repository has been archived by the owner on Jan 27, 2022. It is now read-only.

Refactoring and add language bindings #97

Merged
merged 25 commits into from
Jul 25, 2019
Merged

Refactoring and add language bindings #97

merged 25 commits into from
Jul 25, 2019

Conversation

nokome
Copy link
Member

@nokome nokome commented Jul 22, 2019

This PR addresses two items from the HackMD:

- Explore possibility of generating stricter TypeScript definition (remove `Node: any`)?
- Explore possibility of other language type e.g. Python, GraphQL

This was primarily started towards adding factory functions for Typescript (#84) but I have actually started with language bindings for other languages (as a means for user-developers to be able to generate document trees, that are type safe, from within their language of choice).

@alex-ketch Note that this makes some changes to generation .schema.json files that may affect documentation generation e.g. parent has been removed, use extends instead

@nokome
Copy link
Member Author

nokome commented Jul 22, 2019

Some options for discussion

/********************************************************
 * Not-extending interfaces (current) + factory functions
 *******************************************************/

// Interfaces generated by `json-schema-to-typescript` look something
// like this:

interface Thing1 {
  type: 'Thing' | 'Person'
  id?: string
}

interface Person1 {
  type: 'Person'
  id?: string
  givenNames: string[]
}

// A lot of our code looks like this with 'manual'
// creation of typed objects and assignment to
// optional properties.
const pat: Person1 = {
  type: 'Person',
  givenNames: ['Pat']
}
pat.id = 'pat'

// Factory functions would help to reduce this boilerplate code
// and could take the convention used for Python
// and R of putting properties as parameters (i.e. optional last)

function person1a(givenNames: string[], id?: string): Person1 {
  return {
    type: 'Person',
    id,
    givenNames
  }
}

const pam = person1a(['Pam'], 'pam')

// Having a long list of optional parameters is OK for Python and R because
// they have keyword arguments. For Typescript it would be better to have
// an `options` parameter.

function person1b(givenNames: string[], options: Partial<Person1> = {}): Person1 {
  return {
    ...options,
    type: 'Person',
    givenNames
  }
}

const pete = person1b(['Peter'], {id: 'pete'})

/********************************************************
 * Extending interfaces + factory functions
 * As above, but generating interfaces ourselves to take
 * advantage of `extends` keyword to reduce amount of generated code
 * (currently `types.d.ts` is over 3000 lines with lots of repetition)
 *******************************************************/

interface Thing2 {
  type: 'Thing' | 'Person'
  id?: string
}

interface Person2 extends Thing2 {
  type: 'Person'
  givenNames: string[]
}

/********************************************************
 * Classes
 *
 * Use classes to:
 *  - (a) have a constructor and thus avoid having both a
 *        interface (`Person`) and a function (`person`),
 *  - (b) make state mutable by using `readonly`
 *******************************************************/

class Thing3 {
  readonly type: 'Thing' | 'Person'
  readonly id?: string
}

class Person3 extends Thing3 {
  readonly type: 'Person'
  readonly givenNames: string[]

  constructor(givenNames: string[], options: Partial<Person3> = {}) {
    super()
    return {
      ...this,
      ...options,
      type: 'Person',
      givenNames
    }
  }
}

const paul = new Person3(['Paul'], {id: 'paul'})
// This gives a compiler error
paul.givenNames = ['Pat']

@nokome
Copy link
Member Author

nokome commented Jul 23, 2019

I've gone ahead and implemented the second option above.

@beneboy Could you npm run build:py and check the generated python/types.py for style and correctness. There is python.test.sh and tests/python.test.ts if you want to test any changes.

@alex-ketch Could you take over this PR. Some things that still need doing:

  • npm run ts and check the generated dist/types.ts for style and correctness. The tests/typescript.test.ts build test should test the type correctness of that files.
  • incorporate the generated dist/types.ts into the tsc compilation step

I suggest that we don't spend too much more time on this right now, but follow up tasks to do in the future include:

  • providing usage guide docs for each language
  • looking at the commonalities in python.ts. r.ts and typescript.ts and factoring those out to remove repetion of code - in particular schemaToType et al are ripe for that
  • running R and Python tests as part of CI

@beneboy
Copy link
Contributor

beneboy commented Jul 23, 2019

The building of Python (and other) type files was failing for me. Doing some debugging it looks like and issue when it's trying to render the JSONSchema schema which just seems wrong? I'm guessing if it works for you there's something gone funny with my schema not being generated properly before running the Python build.

Here's a snippet of the JSONSchema class that's getting generated. I have had schemaToType return Unhandled schema instead of throwing an error to get an idea where it's failing.

class JSONSchema:
    """
    undefined
    """

    def __init__(
        self,
        $comment: Optional[str] = None,
        $id: Optional[str] = None,
        $ref: Optional[str] = None,
        $schema: Optional[str] = None,
        additionalItems: Optional["#"] = None,
        additionalProperties: Optional["#"] = None,
        allOf: Optional["#/definitions/schemaArray"] = None,
        anyOf: Optional["#/definitions/schemaArray"] = None,
        const: Optional[Unhandled schema] = None,
        contains: Optional["#"] = None,
        contentEncoding: Optional[str] = None,
        contentMediaType: Optional[str] = None,
        default: Optional[Unhandled schema] = None,

Running make clean and then npm run build:py allows me to build without error and JSONSchema is no longer in the generated types.py.

There's a few things I've noticed that I'm going to clean up. The first is that the type properties are inherited so they don't need to be defined on a child class if the parent already has them. This seems to get done for some of the classes/properties but not all so I'll investigate this. There's a few small format things with extra new lines that I'll try to sort out too. Also if there is no documentation I'll make it not generate the docstring for the class.

@nokome
Copy link
Member Author

nokome commented Jul 23, 2019

Yeah, that's a hangover from when we had a schema/json-schema-version-7.schema.json files. That's now gone so the make clean was needed to remove built/json-schema-version-7.schema.json.

If you could fix up those things, that'd be great. Thanks.

@beneboy
Copy link
Contributor

beneboy commented Jul 23, 2019

I fixed up what I could with formatting, flake8 now just complains about max line lengths which is a bit difficult to sort out with code formatting. It might be easier just to run the generated code through autopep8 which I've tried out and fixes the max line length issue. I don't know how high of a priority this is though given that the code is still valid even if it's not PEP8.

I will still need to investigate doubled up properties (parents and children). Case in point contentUrl on AudioObject and MediaObject.

@nokome
Copy link
Member Author

nokome commented Jul 23, 2019

I remembered why I didn't include a type attribute in Python classes: because it duplicates __class__.__name__ so felt a little redundant in that context. I thought we could add type from the class name when we do marshalling to dict/JSON like the approach at the end of https://medium.com/python-pandemonium/json-the-python-way-91aac95d4041

Yeah, let's not worry about PEP8 conformance right now.

The doubled up properties come from the need to override an optional property as being required in a derived class (for Python) / interface (in the case of Typescript). I hurriedly made the own properties be those that are not inherited or are not optional:

own: props.filter(prop => !prop.inherited || !prop.optional),

We'd need to walk back through ancestors to do a better job of that. Probably best place to do that is at time of generating *.schema.json files since we are walking back through ancestors then:

schema/src/schema.ts

Lines 138 to 145 in 1e7a6c0

// Add to all ancestors' descendants and type enum
let ancestor: Schema | null = parent
while (ancestor !== null) {
ancestor.descendants =
ancestor.descendants === undefined
? [title]
: [...ancestor.descendants, title]
if (

"""Convert JSON to a Node"""
node = json.loads(json)
if isinstance(node, dict): return fromDict(node)
else return node
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Python convention is to not have the body of the if statement on the same line as the if. Also the else is missing a : at the end.

You could just convert this to a Python "ternary" though:

return fromDict(node) if isinstance(node, dict) else node

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hah, yeah I actually wrote the ternary first but then decided to be more conventional - and break it :)
Also, you missed the fact that I used json as a variable name which clashes with the module name 😊 Anyway, I've created #101 for you to clean up my mistakes :)

@nokome nokome marked this pull request as ready for review July 25, 2019 00:03
@nokome
Copy link
Member Author

nokome commented Jul 25, 2019

This branch has some things in it that are needed in the updates for Encoda (specifically, how schema.json files are distributed. So I'm going to resolve conflicts and merge now.

@nokome nokome merged commit b4c8aa4 into master Jul 25, 2019
stencila-ci added a commit that referenced this pull request Jul 25, 2019
# [0.17.0](v0.16.3...v0.17.0) (2019-07-25)

### Bug Fixes

* **DatatableColumn:** Extend Thing to have name property ([d97c997](d97c997))
* **DatatableColumn:** Remove duplicated meta property ([8638638](8638638))
* **Entity:** Move meta property from Thing to Entity ([c03f3f8](c03f3f8)), closes [/github.com/stencila/encoda/pull/177#issuecomment-514822427](https://github.com//github.com/stencila/encoda/pull/177/issues/issuecomment-514822427)
* **Language bindings:** Flag a property if it is an override ([6bb1ec5](6bb1ec5)), closes [/github.com//pull/97#issuecomment-514400261](https://github.com//github.com/stencila/schema/pull/97/issues/issuecomment-514400261)
* **Link:** Add title property to Link ([8d43755](8d43755)), closes [/github.com/stencila/encoda/pull/177#issuecomment-514822427](https://github.com//github.com/stencila/encoda/pull/177/issues/issuecomment-514822427)
* **Python bindings:** Fix spacing and regnerate test snapshots ([7050b5c](7050b5c))
* **Python bindings:** Use is not None ([2f41f2a](2f41f2a))
* **Schema generation:** Sort children and descendants for more deterministic output ([d04a423](d04a423))
* **Typescript bindings:** Create a dist/index.js file ([f03c2e1](f03c2e1))
* Replace $extends and remove unecessary use of object ([b24d8e3](b24d8e3))
* Updated Python types generation to be more PEP8 compliant ([1e7a6c0](1e7a6c0))

### Features

* **Python and R bindings:** Initial versions of bindings for Python and R ([8266cf7](8266cf7))
* **Python bindings:** Add utilty functions for converting to/from JSON ([b4c8aa4](b4c8aa4))
* **Typescript:** Adds factory functions for Typescript ([39d0fc6](39d0fc6)), closes [#84](#84)
* **Util:** Add markTypes TypeMap ([1552d06](1552d06))
@stencila-ci
Copy link
Collaborator

🎉 This PR is included in version 0.17.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@nokome nokome deleted the 84-language-bindings branch July 30, 2019 06:14
stencila-ci added a commit to stencila/stencila that referenced this pull request Jan 27, 2022
# [1.0.0](https://github.com/stencila/stencila/compare/v0.142.0...v1.0.0) (2022-01-27)

### Bug Fixes

* Add additionalProperties:false ([fd6b309](https://github.com/stencila/stencila/commit/fd6b309a42619d452c94175b5b923a26784a29bb))
* add default value for type ([1e40240](https://github.com/stencila/stencila/commit/1e40240eda12caaea7a122d491803de1bd67178d))
* add docs and refine schema for Person ([7979ace](https://github.com/stencila/stencila/commit/7979ace30dc069f1d700c976b55e753b0548b902))
* add ImageObject to InlineContent ([c7efdd0](https://github.com/stencila/stencila/commit/c7efdd0e23b3b86ebaecdec8b2de4160b972f7f2))
* add Link to InlineContent ([88ece14](https://github.com/stencila/stencila/commit/88ece14976f02b52cc5f3b8a625652aa9a8a8a03))
* add missing `[@id](https://github.com/id)`s for consistency with schema.org ([1135100](https://github.com/stencila/stencila/commit/1135100e77e2336e129c1e462c4ee9083ef1c6c5))
* add role and status keywords to all schemas ([4a00940](https://github.com/stencila/stencila/commit/4a009400154726b219232b3faca278cd3aa4f503))
* Added conversion of ndarray to list for JSON encoding ([f433e3d](https://github.com/stencila/stencila/commit/f433e3d513dfd0673c3fe6b3a6999a7c2d86a7b1))
* Added listen arg to JS manifest ([e9b5716](https://github.com/stencila/stencila/commit/e9b57167b98e3a4914a2d28270d4c33ddbd022b1))
* Added minimist and logga as dependencies ([8c28196](https://github.com/stencila/stencila/commit/8c281969a2b936cdf1b648769920da4692d66c83))
* added pattern for telephone number for the contact point ([17b04c6](https://github.com/stencila/stencila/commit/17b04c66d6ab2cb6656cbb5effcef9cedad6316f))
* additionalItems should be additionalProperties ([0ef941c](https://github.com/stencila/stencila/commit/0ef941cb831e83c96c16b934ddc2ce936c4a8716))
* **Array and string validators:** Use integer for property types where appropriate ([866423e](https://github.com/stencila/stencila/commit/866423eefd32670dd66e73773cd5e3ac675740af))
* **ArrayValidator:** Use more specific name to avoid clash with items ([a27039f](https://github.com/stencila/stencila/commit/a27039f4fbf105f6ed29a5be7a639f8b6b12b1d9))
* **Article:** Do not require authors and title ([17cbe10](https://github.com/stencila/stencila/commit/17cbe10f95f7746497d37de461db9f7cca07a492))
* **Article:** Narrow content to BlockContent types ([ebc4560](https://github.com/stencila/stencila/commit/ebc45600cccad68fbabbb83562ac72d4c660f64e))
* **BlockContent:** Add CodeBlock and CodeChunk ([5b09124](https://github.com/stencila/stencila/commit/5b09124b2b1e717af1f14fe8f6341569d17d4e99))
* **BlockContent:** Add Figure and Collection as valid types ([2e0d0bb](https://github.com/stencila/stencila/commit/2e0d0bb4f1adcc22c4b8ae83d0e40c9f12baef90))
* **BlockContent:** Add ListItem to BlockContent type ([53b6d8d](https://github.com/stencila/stencila/commit/53b6d8d9594d5c0154fccd3051a98d3106c0f9ed))
* **BlockContent:** Remove ListItem from block content ([b904684](https://github.com/stencila/stencila/commit/b9046842a188d44599a6da0eb45a17c86eabb2fc))
* **Build:** Add missing TypeScript types to fix TypeGuard usage ([f57d055](https://github.com/stencila/stencila/commit/f57d05559759a7217dec96c191da772e8917449f))
* **Build:** Add outDir option to fix module distribution ([05b1bac](https://github.com/stencila/stencila/commit/05b1bac8b32d21e55f3906cb8cca7e4091facb55))
* **Build:** Avoid use of promisify ([7dd52a5](https://github.com/stencila/stencila/commit/7dd52a583300ab32db983f669ac637a1c979a7e5)), closes [/travis-ci.org/stencila/executa/jobs/659007810#L684](https://github.com//travis-ci.org/stencila/executa/jobs/659007810/issues/L684)
* **Build:** Expose TypeScript files in module distribution ([a985686](https://github.com/stencila/stencila/commit/a98568683c7b0d5844931b966143fb0726d0d826))
* **Build:** Re-run CI to fix missing v0.46.1 NPM release ([4c847f0](https://github.com/stencila/stencila/commit/4c847f03bff6d52636b3f8a58da4bb44f0d69cc1)), closes [#220](https://github.com/stencila/stencila/issues/220)
* **Build:** Remove internal links to experimental schemas ([b85f570](https://github.com/stencila/stencila/commit/b85f570773e8f92820ea134dd0b4f2d99c2780ff))
* **Build:** Specify directory for type declarations ([9637465](https://github.com/stencila/stencila/commit/96374656686e8ca78ac4c1eab0ab4442cd0a365c))
* Capitalize folder names for better integration with help site ([cbec688](https://github.com/stencila/stencila/commit/cbec688ac01f14829c26c91943fb1d97d52b32f7))
* changes and fixes to CreativeWork ([f209d40](https://github.com/stencila/stencila/commit/f209d40b3356529bb703d2b0d159d4f10c4c1209))
* changes in cardinality and corrections to tests ([a5258fc](https://github.com/stencila/stencila/commit/a5258fcc31b6d1257e57627fc6fc87b3fd5a95a0))
* changes to Datatable and related schemas ([837112c](https://github.com/stencila/stencila/commit/837112c5f9742b9e63a969cdaa46ddb20f80dcde))
* **CI:** Avoid package.json regressions when installing on CI ([3560fc6](https://github.com/stencila/stencila/commit/3560fc6a0511b99e9a54ce89f712ea790b307db7))
* **CI:** Avoid package.json regressions when installing on CI ([fcb0614](https://github.com/stencila/stencila/commit/fcb0614b52d9b4187540aeb16856699ec8649911))
* **CI:** Fix config for docs and trigger release ([d52239b](https://github.com/stencila/stencila/commit/d52239bb8852139b1f324b9535542bf177f1a3ab))
* **Citation intent:** Rename schema file ([9a77e54](https://github.com/stencila/stencila/commit/9a77e5403d61387ab473c19b4ed9e70a4f088837))
* **CitationTypeEnumeration:** Excludes members that are related to citation distance ([dbfcd12](https://github.com/stencila/stencila/commit/dbfcd1288807b0772baaac5274179c238b36db28))
* **CitationTypeEnumeration:** Use correct title and file extension ([4d9ca2b](https://github.com/stencila/stencila/commit/4d9ca2b4df4f1e24507c023ae751ed5c03b202ce))
* **Cite:** Alter citation modes; add docs ([21acf0c](https://github.com/stencila/stencila/commit/21acf0c64caa83588cbf5c2325b717475d23e813))
* **Cite:** Rename to citationPrefix and citationSuffix ([379dffc](https://github.com/stencila/stencila/commit/379dffcbfa62e7dff0987bd19a347a816cad1faa))
* **Cite:** Use PascalCase for enumeration variants ([fa9a413](https://github.com/stencila/stencila/commit/fa9a413bd1168d2315d6f62869cdde719cfa3bdb))
* **Claim:** Add Claim to list of valid BlockContent elements ([fd7a01e](https://github.com/stencila/stencila/commit/fd7a01e4b5f67e7011193b18e306ef822d30a78e))
* **Claim:** Use schema id; order properties alphabetically ([f9d2e67](https://github.com/stencila/stencila/commit/f9d2e6727fd0117564d68be79599262b16d20620))
* cleaninig up naming mess ([0d2f042](https://github.com/stencila/stencila/commit/0d2f042ad979ac60c0eaa6f3fb70a7faf301eaf8))
* cleaninig up naming mess ([58138e6](https://github.com/stencila/stencila/commit/58138e669312227c55c3ae5c0a903856e2dbe818))
* cleanup requests when resolved ([57ff010](https://github.com/stencila/stencila/commit/57ff01000909c165b4086e6fbb0c6095114cacb5))
* **Client.py:** spelling ([3dff445](https://github.com/stencila/stencila/commit/3dff44578163b88f0b1c49bdc52a9fc66bb86380))
* **CodeError:** Match required key to property name ([d5fb248](https://github.com/stencila/stencila/commit/d5fb24816b62ed999b5920ec7371333bf8e87bf8)), closes [/travis-ci.org/github/stencila/thema/builds/730301506#L1031](https://github.com//travis-ci.org/github/stencila/thema/builds/730301506/issues/L1031)
* **CodeError:** Message required; rename kind to errorType ([0ab58c0](https://github.com/stencila/stencila/commit/0ab58c06e2ba88dfae7fcd68cb94fcf2df1bb013))
* **CodeError:** Modify prop names; errorType comment ([e53d56b](https://github.com/stencila/stencila/commit/e53d56bb5164d985abd43aa3d71930fdeeaded44))
* **CodeExecutable:** Remove `CodeExpression` variant from `codeDependencies` ([294e606](https://github.com/stencila/stencila/commit/294e606649078b7fd092ad7489a70a796694efa2))
* **Code:** Refactor code related classes ([deb1c51](https://github.com/stencila/stencila/commit/deb1c51515153377855cb2b38231a21336713930)), closes [#92](https://github.com/stencila/stencila/issues/92)
* **Code:** Revert to `programmingLanguage` for consistency with id ([426bcb5](https://github.com/stencila/stencila/commit/426bcb50f355161f3b950121297285a97730df09))
* **ContactPoint:** Make telephone number prop conistent with Person ([d5e0f87](https://github.com/stencila/stencila/commit/d5e0f874a7fb89c76476cdbd3c1c82b439cb4f85))
* correct filename ([4492664](https://github.com/stencila/stencila/commit/4492664b8447c8015c5d10305af25b4d46ce0c5d))
* **CreativeWork:** Add csi codec to CreativeWork.authors ([60cc14f](https://github.com/stencila/stencila/commit/60cc14f40230f02da6cf5f45268e7fe84d742f6d))
* **CreativeWork:** Allow about to be an array of Things ([665842a](https://github.com/stencila/stencila/commit/665842a66eeaa61dcbb49955c092832daf534554))
* **CreativeWork:** Allow an array of nodes ([a13cbfc](https://github.com/stencila/stencila/commit/a13cbfc349b6a1b6d8931d15bbb77357c29c47ac))
* **CreativeWork:** allow date and date-time formats ([7f4d297](https://github.com/stencila/stencila/commit/7f4d297dc4234dd31ed0fb23d7c8be59c23060d7))
* **CreativeWork:** Make about property refer to ThingTypes ([3d38a3e](https://github.com/stencila/stencila/commit/3d38a3ec02e5b98a36cd42e28817f45c994d0260))
* **CreativeWork:** Move `maintainer` property from `SoftwareSourceCode` to `CreativeWork`. ([0b10689](https://github.com/stencila/stencila/commit/0b10689ba7ab5f40d5f5074e77dd627bd3f0209f))
* **CreativeWork:** Narrow allowed content to arrays of inline or block content or string ([a85fd06](https://github.com/stencila/stencila/commit/a85fd060cee638d6185708bc6c8e1abd75ea9115))
* **CreativeWork:** Use anyOf for maintainer ([1d35af9](https://github.com/stencila/stencila/commit/1d35af9c6bc74acbe9a800d8648d3b3811989b41)), closes [/json-schema.org/understanding-json-schema/reference/array.html#id6](https://github.com//json-schema.org/understanding-json-schema/reference/array.html/issues/id6)
* **CreativeWork:** Use Date for date* properties ([264dc95](https://github.com/stencila/stencila/commit/264dc95abea295ba3d4c902a50c4a7e5e48c8e08))
* **CreativeWork:** Use semicolon separated items for authors, add csi for genre ([56a3bb6](https://github.com/stencila/stencila/commit/56a3bb6c66cdb4df0af773af8c218510289b5aba))
* **DatatableColumn:** Extend Thing to have name property ([d97c997](https://github.com/stencila/stencila/commit/d97c99722e0b785fd538e1306b816be712a843cc))
* **DatatableColumn:** Remove duplicated meta property ([8638638](https://github.com/stencila/stencila/commit/8638638962b213492a5d1d433f1cf41cb4059f7a))
* definitions in schemas ([6feb102](https://github.com/stencila/stencila/commit/6feb102d0bbf2f79ea87e001f21b638cab1f1b78))
* **Dependencies:** Move logga to production deps ([c444747](https://github.com/stencila/stencila/commit/c444747479a9293c07429597d17103c121456a1b))
* **Dependencies:** NPM audit fix ([6f631c8](https://github.com/stencila/stencila/commit/6f631c83f58f57e93de85166a295308f90c45914))
* **dependencies:** update dependency @codemirror/view to ^0.19.40 ([b3b2c2f](https://github.com/stencila/stencila/commit/b3b2c2f3cf94178624e8df4bc6b447aaa0a24f3b))
* **dependencies:** update dependency @stencila/brand to v0.7.26 ([3f8de5f](https://github.com/stencila/stencila/commit/3f8de5f7aaec0c4828244de3c645ee76624c30e7))
* **dependencies:** update dependency electron-log to v4.4.5 ([089a314](https://github.com/stencila/stencila/commit/089a314decb2308e622671fddb0557c0b51ffc11))
* **dependencies:** update rust crate serde to 1.0.126 ([371712e](https://github.com/stencila/stencila/commit/371712e27b21e5b9d7a0dadf9578dba9633e6829))
* **dependencies:** update rust crate serde to 1.0.127 ([4bfa1d5](https://github.com/stencila/stencila/commit/4bfa1d57883a8586b3659ce493995eda1ca21a0d))
* **dependencies:** update rust crate serde to 1.0.130 ([5f9b78a](https://github.com/stencila/stencila/commit/5f9b78ae4e17f8bfdd06d293d343414a8fa23cf2))
* **dependencies:** update rust crate serde to 1.0.132 ([b47af3d](https://github.com/stencila/stencila/commit/b47af3df961f014f3cc1f6aaceba6ee51f0c025a))
* **dependencies:** update rust crate serde_json to 1.0.66 ([819f74b](https://github.com/stencila/stencila/commit/819f74b22296ec13c07bc7eafb512ee4c3c456aa))
* **dependencies:** update rust crate serde_json to 1.0.68 ([745ee8c](https://github.com/stencila/stencila/commit/745ee8c8a2b2de1b186a3d510714496af8b2bb43))
* **dependencies:** update rust crate serde_json to 1.0.73 ([8dab589](https://github.com/stencila/stencila/commit/8dab58976e8fa1831649326dcfa7355ab1ac9c4e))
* **dependencies:** update rust crate serde_with to 1.10.0 ([b328e96](https://github.com/stencila/stencila/commit/b328e9664cb9d7aca183b32505844bb6cc371061))
* **dependencies:** update rust crate serde_with to 1.11.0 ([f4b789f](https://github.com/stencila/stencila/commit/f4b789ff35c711409d2052b358c8c893fd0fca46))
* **dependencies:** update rust crate serde_with to 1.9.4 ([ac06fd3](https://github.com/stencila/stencila/commit/ac06fd30aa4ac3a42345acc973be8ca2e64b2b03))
* **dependencies:** update rust crate strum to 0.23.0 ([2769bf8](https://github.com/stencila/stencila/commit/2769bf8c3b80e9c8d7e0e1ae12f2dd730039400d))
* **Dependencies:** Upgrade to `@stencila/components` 0.50.1 ([a861810](https://github.com/stencila/stencila/commit/a861810dfb26b3447da8ded86bda24ebdfb35237))
* **deps:** npm audit fix ([25a6a6a](https://github.com/stencila/stencila/commit/25a6a6a859f72c4ee796b97cb2808a9694917653))
* **Deps:** npm audit fix ([0af0889](https://github.com/stencila/stencila/commit/0af0889cf13faa8d8a6e9290ae138f6e0f2dd67d))
* **Deps:** NPM audit fix ([d6c500d](https://github.com/stencila/stencila/commit/d6c500d62ec46304d930684d96e0295e137746fb))
* detect if in Node.js ([b65a929](https://github.com/stencila/stencila/commit/b65a9296cf750dd5c7ea5530e3cf7f626223b461))
* Do not use order validation for array properties ([c77f588](https://github.com/stencila/stencila/commit/c77f588d16029e15c3662edbf5791ea988d0b821))
* **Docs:** Add redirect path for CSS ([9d7a977](https://github.com/stencila/stencila/commit/9d7a97790d913948388b06face17b4b3d450530d))
* **Docs:** Fix file names and link paths ([efb8c55](https://github.com/stencila/stencila/commit/efb8c55ef557130efa8749044138654a41761da0))
* **Docs:** Improve Markdown documents and generate category listing ([a522e14](https://github.com/stencila/stencila/commit/a522e14bd595860857811f9ac8a72aa82d21e9cc))
* **Docs:** Substantially refactors and fixes docs generation ([b6c1775](https://github.com/stencila/stencila/commit/b6c1775005253fbc0ce26aabd6c95ad28cd41a62))
* don't use relect metadata when serializing ([a38f090](https://github.com/stencila/stencila/commit/a38f0905ac99e5edaa24d7e324336e289a4ada75))
* **Entity:** Move meta property from Thing to Entity ([c03f3f8](https://github.com/stencila/stencila/commit/c03f3f87422a2bcddbe8893b69c4819a5fbcbc1c)), closes [/github.com/stencila/encoda/pull/177#issuecomment-514822427](https://github.com//github.com/stencila/encoda/pull/177/issues/issuecomment-514822427)
* **Environment:** Remove unused and conflicting source prop ([c41e520](https://github.com/stencila/stencila/commit/c41e52018f16a694e157be5865249d4788b384ab))
* **Executable code nodes:** Make `executeCount` unsigned and clarify docs ([1704980](https://github.com/stencila/stencila/commit/1704980722a5f988cbeeac9e0cd040d6e48f732b))
* **Figure, Table:** Add or update caption and label properties ([34858db](https://github.com/stencila/stencila/commit/34858db2e351fa093cbdb49211cd821a21808e4b))
* **Figure:** Allow caption to be a string for compatability with caption on other types ([1380fd2](https://github.com/stencila/stencila/commit/1380fd2e1ea11b38ba53777ef88574189865ac75))
* Fix version getting in setup.py ([ee6ef34](https://github.com/stencila/stencila/commit/ee6ef341debeb6c15ffa73741017c931628ac6d4))
* fixed and cleaned up some schemas ([eb8712f](https://github.com/stencila/stencila/commit/eb8712fcb80da1d644476c3a3d9092ec87963f12))
* Fixed behaviour of ConstantSchema and EnumSchema in python executor ([c50d5ac](https://github.com/stencila/stencila/commit/c50d5ac7be6471d5b6e26021c44b0f1aefbc011c))
* Fixed floating promise in main() call ([ade2abe](https://github.com/stencila/stencila/commit/ade2abe111557a85cde0791d6799fdcab81badc7))
* fixed messed up names. examples for brand ([4b3aeef](https://github.com/stencila/stencila/commit/4b3aeef9f85950b92c5ca0cc7f75d9b4319d4cff))
* fixed messed up names. examples for brand ([24a248a](https://github.com/stencila/stencila/commit/24a248aa9a1b2eb262539a82e797919ec104dbe0))
* **fix:** fix the fix on array handling ([a2e35cc](https://github.com/stencila/stencila/commit/a2e35cc7b62c2f2562f24e540466289c97a80a40))
* fully remove Text node ([0242947](https://github.com/stencila/stencila/commit/024294752aa90c6ba8a15c524698cd3295fd2531))
* **Function:** Make name optional ([9237114](https://github.com/stencila/stencila/commit/9237114c956c751ac44cb614436e852088d38da0))
* **Function:** Property parameters has local id ([314dce8](https://github.com/stencila/stencila/commit/314dce81225dff0a414920f406422a89bd7d10d4))
* generate schema.json files in built dir ([c97c759](https://github.com/stencila/stencila/commit/c97c7590c1b218fee068b2d9a53868c2c71120a9))
* Git pre-commit hook ([f32823c](https://github.com/stencila/stencila/commit/f32823cfdefd45b5544b87120906921d33693ca0))
* **Heading, ListItem:** Use integer instead of number for properties ([cfcb195](https://github.com/stencila/stencila/commit/cfcb195be857babfb691e4dd88291bfbcf7a27a9))
* **Heading:** Make depth optional, defaulting to 1 ([97c3b7d](https://github.com/stencila/stencila/commit/97c3b7d338b7a08366282a98d41d8f738e4a92ac))
* **Helpers:** Account for change in directory ([4b0e079](https://github.com/stencila/stencila/commit/4b0e0797e7291de5bc6b6b07dff8de90a1497bfc))
* **HttpServer:** make killable (destroy all open sockets) ([5dfdcf6](https://github.com/stencila/stencila/commit/5dfdcf6dcd9bed70240aac3d77bdef18925862ed))
* import Text to SoftwarePackage ([20114f3](https://github.com/stencila/stencila/commit/20114f36fd6107646881979f9afde427dc533756))
* improve generation of jsonld ([6f0093a](https://github.com/stencila/stencila/commit/6f0093ae14e94c163bad25819a58bf964bcb13f0))
* improve type enums in .schema.json ([b8bb10b](https://github.com/stencila/stencila/commit/b8bb10baa92b497b2f585252b8d5b91166c025e1))
* **Inline Content:** Add audio, media and video objects; reorder primitives ([de6cfd5](https://github.com/stencila/stencila/commit/de6cfd534f9985218e87648ed525274f1ffaa7e0))
* **InlineContent:** Add array and object to valid inline content ([7483e80](https://github.com/stencila/stencila/commit/7483e80a9b3356603402fd3e68e425eed410e496))
* **InlineContent:** Add Note and ordering ([aa370b6](https://github.com/stencila/stencila/commit/aa370b665f2fd43dd00e32b96838df33bce0d41c))
* **InlineContent:** Remove  MediaObject from inline content ([010efad](https://github.com/stencila/stencila/commit/010efad536a6d49a8450218d1fc116742cc56dc4))
* **InlineContent:** Remove `Array` and `Object` from `InlineContent` ([a844439](https://github.com/stencila/stencila/commit/a844439ad0be31d544b863f741d940ef1ba1fba2)), closes [/github.com/stencila/schema/pull/274#pullrequestreview-687650292](https://github.com//github.com/stencila/schema/pull/274/issues/pullrequestreview-687650292)
* **Items prop:** Use `schema:itemListElement` for all `items` properties ([4df5443](https://github.com/stencila/stencila/commit/4df544312635fbe85dba9427b9cb0a45443184a3))
* **JavaScript & TypeScript parsers:** Use `Declare` relation where appropriate ([b5fcfa6](https://github.com/stencila/stencila/commit/b5fcfa64f05f51ba819ac3a9e936ff00470bc3f4))
* JS and Py interpreters no longer return arrays in JSON RCP response ([63cfda7](https://github.com/stencila/stencila/commit/63cfda7ca29f2b2eaa47de9177340b73713be28a))
* **JSON Schema:** Check for conflicting names and `[@id](https://github.com/id)`s ([645f736](https://github.com/stencila/stencila/commit/645f73669862b766482e3d41cbdec360a3e3c660))
* **JSON Schema:** Ensure defintions are inherited ([5de74e1](https://github.com/stencila/stencila/commit/5de74e14a181caeabd09825c763981e02fb5aad5))
* **JSON Schema:** Only add definitions if necessary ([dfa59cb](https://github.com/stencila/stencila/commit/dfa59cb9572df7ebe55908a9ea4202c3fac04bb2))
* **JSON Schemas:** Fix source URL and apply category to union types ([05aa171](https://github.com/stencila/stencila/commit/05aa171a463765d8aac57974122b5a1ffdba9bb2))
* **JSON Schemas:** Fix the base URL for "types schemas" ([10e9b35](https://github.com/stencila/stencila/commit/10e9b3500f58cc5456bea2b274ddee18d1daf811)), closes [#238](https://github.com/stencila/stencila/issues/238)
* **JSON Schema:** Use versioned URL for $id ([9e9ac85](https://github.com/stencila/stencila/commit/9e9ac85ff81e9e148a10e82808a491b3b0742705))
* **JSON-LD:** Add CiTO to context ([3bdfe23](https://github.com/stencila/stencila/commit/3bdfe2320d8bfe9ae79f07fa5181d65883d53507))
* **JSON-LD:** Do not alias [@value](https://github.com/value) to avoid conflict with schema.org/value ([a59ca2e](https://github.com/stencila/stencila/commit/a59ca2e580dc7c1d1923afa59bc02892bf3a6ebe))
* **JSON-LD:** Do not filter out value ([10249e3](https://github.com/stencila/stencila/commit/10249e389a43b3c128839df0ff7616e45f1aafa8))
* **JSON-LD:** Fix build of JSON-LD context ([94c2a5f](https://github.com/stencila/stencila/commit/94c2a5f2e72e222d93cf5aa7de3d83a199902193))
* **JSON-LD:** Generate files for custom types and properties ([46d7cd5](https://github.com/stencila/stencila/commit/46d7cd599063f146fd0ec8eb67ca873f57084ee9))
* **JSON-LD:** Improve generation of JSON-LD context ([0f6fea9](https://github.com/stencila/stencila/commit/0f6fea9d7c845aec24f8f990a95d622a730c47e0))
* **JSON-LD:** Improve JSON-LD context generation ([af2b8e9](https://github.com/stencila/stencila/commit/af2b8e9e53761a20a6914fb34cb60fbbe8a1dcd9))
* **JSON-LD:** Use versioned URL for context ([8b0e153](https://github.com/stencila/stencila/commit/8b0e15317b362629354d26434eb8c10bf5ccfdc4))
* **Kernels:** Add `purge_kernel_from_symbols` to ensure symbols reflect stopped or restarted kernels ([5c398d0](https://github.com/stencila/stencila/commit/5c398d0698c4a5d90bb2236a51f9b72041460f4b))
* **Language bindings:** Flag a property if it is an override ([6bb1ec5](https://github.com/stencila/stencila/commit/6bb1ec506cf241911d5d54de5ea85083f7532485)), closes [/github.com/stencila/schema/pull/97#issuecomment-514400261](https://github.com//github.com/stencila/schema/pull/97/issues/issuecomment-514400261)
* **Language bindings:** Handle enumeration types ([a524c92](https://github.com/stencila/stencila/commit/a524c927ea6a502773affe017ea83e277c0f7424))
* **Language bindings:** Update type bindings ([955fd3b](https://github.com/stencila/stencila/commit/955fd3b798ee272360557a77f5c0c3b8a1c61383))
* **Link:** Add title property to Link ([8d43755](https://github.com/stencila/stencila/commit/8d43755df95e5c242daff592ad53fe7e7d97b448)), closes [/github.com/stencila/encoda/pull/177#issuecomment-514822427](https://github.com//github.com/stencila/encoda/pull/177/issues/issuecomment-514822427)
* **Link:** Use consistent `[@id](https://github.com/id)` for title property ([4ab903d](https://github.com/stencila/stencila/commit/4ab903d0b43c540d1bbc716a780ff2985153c2ff))
* **Link:** Use uri-reference instead of uri ([fdd6b04](https://github.com/stencila/stencila/commit/fdd6b0426d2275d5b336114dd6ea18b952e1f540))
* **ListItem:** Narrow allowed content to arrays of inline or block content ([5c80b17](https://github.com/stencila/stencila/commit/5c80b17177420aa781b1a91130168465c2bd3ecf))
* **List:** Update List & ListItem schemas ([8361a36](https://github.com/stencila/stencila/commit/8361a3618c13acf9f019cc518eb3e4b5680f3278))
* make aliases limited to each type ([ac6b5c3](https://github.com/stencila/stencila/commit/ac6b5c38318e64db52a7c1a7cd50d93a5eefd94d))
* **Math:** mathLanguage is not a schema.org id ([0e2cc61](https://github.com/stencila/stencila/commit/0e2cc61858efdb99470f50dd56030e6e363eb236))
* **Media objects:** Make `mediaType` regex more permissive ([e1d2c21](https://github.com/stencila/stencila/commit/e1d2c2113a84ce2cb428906f4ef1eeae530aad65))
* **MediaObject:** Remove uri format constraint ([92c0871](https://github.com/stencila/stencila/commit/92c0871168e7e84fb5ad2d028121429c03da2d92))
* **Microdata:** Do not use itemscope for primitive nodes ([a598921](https://github.com/stencila/stencila/commit/a598921368805e0bea42c6d0af7d13fdc89c9b2a))
* **Node:** Change ordering so array is last ([17cfdfc](https://github.com/stencila/stencila/commit/17cfdfc5c79aac7db937174b6dc9db505723f1ad))
* **Node:** Expand the `Node` union type to include all entity types ([b658222](https://github.com/stencila/stencila/commit/b658222f540ae107c458e9b5f9902140c3863941))
* Order primitive types consistenctly and always after entities ([810c5da](https://github.com/stencila/stencila/commit/810c5da9fce0cbf391ded9b61afc971c4178e880))
* **Organization, Person:** Allow PostalAddress for address property ([9a01142](https://github.com/stencila/stencila/commit/9a011422b96f331eda54149c119c96aea93e2c74))
* **Organization:** Singular property name; put in alphabetical order. ([27ff502](https://github.com/stencila/stencila/commit/27ff5029e34dea8d877c9577b5aed4e128f0f5c6))
* Package get-stdin added to dependencies ([044fb3e](https://github.com/stencila/stencila/commit/044fb3e81b3dadfb95eeb6fd313d612a66a24812))
* **package-lock.json:** update package-lock ([a0db9c3](https://github.com/stencila/stencila/commit/a0db9c3c0ca45a45200b30642bdfe29445ade446))
* **package.json:** fix main entry ([d817aeb](https://github.com/stencila/stencila/commit/d817aeb914bad06d2c09abfeb56320268cbe4432))
* **Package:** Add custom release message to trigger Python release ([efea733](https://github.com/stencila/stencila/commit/efea733c9bf7e5707356121397796b9dd5399ec5))
* **package:** add index.js to dist ([683cad3](https://github.com/stencila/stencila/commit/683cad375d014ccb7d61088f8672f4ae91af0999))
* **Package:** Export JsonSchema type ([e328278](https://github.com/stencila/stencila/commit/e32827832757c7a8b92d09ffcf728bc85d8054e3)), closes [#240](https://github.com/stencila/stencila/issues/240)
* **Package:** Fix path to types file ([af39983](https://github.com/stencila/stencila/commit/af39983bf008abd545ab98f5009e9af30af59d1f))
* **Package:** Remove unnecessary files from module ([1fe7dbd](https://github.com/stencila/stencila/commit/1fe7dbdaa7e49ced0a0238afb0c123f23746a291))
* **Package:** Rename `schema-interface.ts` so it is packaged ([ebd69d0](https://github.com/stencila/stencila/commit/ebd69d0ed29dd755355cec59e883d76707b7dbaf))
* **Periodical & SoftwareSession:** Use Date ([94cc6ac](https://github.com/stencila/stencila/commit/94cc6acb8184febe05cfcdb962625a8faaa7475c))
* **Periodical:** Rename issn to issns for pluralization consistency ([4eba6ea](https://github.com/stencila/stencila/commit/4eba6ea99368266a857dc3077ce95fa03e777182))
* **Person:** Rename ssv to ssi codec ([d9a6291](https://github.com/stencila/stencila/commit/d9a629130a3ad6d1a2f85a2ab9774172f09a8524))
* **PostalAddress:** Add schema: prefix; add checks for this ([0291760](https://github.com/stencila/stencila/commit/029176086380fc174c572deb439739b57f5c0ada))
* **Primitves:** Refer to internal schema for primitives ([54a8264](https://github.com/stencila/stencila/commit/54a8264575abd9e16ae6bcba549b7610518bd932))
* **Product:** Make `brand` prop consistent with Organization ([f4d2a9f](https://github.com/stencila/stencila/commit/f4d2a9fdb7f60020850b1a14bc93508dad5bb196))
* **PropertyValue:** Narrow schema for value property ([0c058fb](https://github.com/stencila/stencila/commit/0c058fb8ef905483e3238f567c820039d1a76be9))
* **Prose types:** Specifiy category ([6b72da5](https://github.com/stencila/stencila/commit/6b72da529f5b22331ad4af5348cad46f051978a2))
* put properties in alphbetical order; other improvements ([0342ec7](https://github.com/stencila/stencila/commit/0342ec79b26497f23bf6fe83545b168f81dc8580))
* **Py:** Fixed Execution timing to include entire CodeChunk ([44338e5](https://github.com/stencila/stencila/commit/44338e539d11aef3684f5d0126acd0a8872a4681))
* **Python bindings:** Fix spacing and regnerate test snapshots ([7050b5c](https://github.com/stencila/stencila/commit/7050b5cb873e2f63b4360498452410196d182257))
* **Python bindings:** Ignore type for fields that are overrides ([6f80099](https://github.com/stencila/stencila/commit/6f8009937b70efa3ae35d628e4c8769ffa488b06))
* **Python bindings:** Use is not None ([2f41f2a](https://github.com/stencila/stencila/commit/2f41f2ace89c81de8b36453dd4490345e035ade2))
* **Python parser:** Use `Declare` for functions ([60095f7](https://github.com/stencila/stencila/commit/60095f726d6f57b7fa9b2c5277df48108b55450e))
* **Python:** Avoid generating recursive types ([eceb36a](https://github.com/stencila/stencila/commit/eceb36af3e2310711859c62995c7378b19052b56))
* **Quote, QuoteBlock:** Use `cite` instead of `citation` ([cef76af](https://github.com/stencila/stencila/commit/cef76afa7509b3d7662fb2cf4f32f35b5c7c2a5e))
* **R bindings:** Avoid type recursion ([efdae5c](https://github.com/stencila/stencila/commit/efdae5c434450301f8263b54396489db1a203f94))
* **R bindings:** Improve type specs and checking ([1ef3c27](https://github.com/stencila/stencila/commit/1ef3c27dce6b3fa032995a9d6aeb59af7f3826d1))
* **R package:** Update NAMESPACE file ([94beb2a](https://github.com/stencila/stencila/commit/94beb2a24fe1567b8c445385908edee00d7d3310))
* **R typing:** Allow integer values for numeric properties ([d525b06](https://github.com/stencila/stencila/commit/d525b069e0c12ee540e7117a46ab697484116cce))
* **R:** Add include tag so collation order is correct ([3cee6d8](https://github.com/stencila/stencila/commit/3cee6d8bafc98e8359f3799bc4dc7c02fef34f4d))
* **R:** Correct Datatable functions  for new schema ([c50903a](https://github.com/stencila/stencila/commit/c50903a3a886724d6b76eb33cd709f3241bbae08))
* Refactor after rebasing ([f21ad6c](https://github.com/stencila/stencila/commit/f21ad6ceb812bc347075f430d424a0ded4a2b50e))
* refactor required to work with Typescript generation ([7081866](https://github.com/stencila/stencila/commit/70818667fa69d5527799e952b1b633ac07fb0f1e))
* refinements to Table schema for parse/unparser ([f29ea14](https://github.com/stencila/stencila/commit/f29ea1428dea1eeaee2500bc906db1be93fc3306))
* Remove  from name of Markdown files. ([58f90a6](https://github.com/stencila/stencila/commit/58f90a6cee4281238832e42ab8984bae8943fec1))
* remove duplicate definition of value property id ([f2063ee](https://github.com/stencila/stencila/commit/f2063ee26333c9a4f6c85546b281bf123b98c013))
* remove incomplete doc file ([2e07836](https://github.com/stencila/stencila/commit/2e078361d82dfead243cc2be64f6c18786e79e14))
* remove logo from product since brand already has it ([3b1533d](https://github.com/stencila/stencila/commit/3b1533d36f0b7c2c2d8f081a5eebb2fed94c3948))
* remove Package and fix Expression ([b700788](https://github.com/stencila/stencila/commit/b700788fec4aa05fafb5480806ec2163e7c0538a))
* remove Person.contactPoints ([03fb89b](https://github.com/stencila/stencila/commit/03fb89ba3e0afa18fc88356a411225f24586e5c2))
* Remove redudant anyOf and allOf in property schemas ([1957053](https://github.com/stencila/stencila/commit/19570534ab89fad6e947fead9d46850610ea7641))
* Remove redundant name property ([251cca9](https://github.com/stencila/stencila/commit/251cca98234564ccb1e4a15fc2eb12f7ae689daf))
* remove references to Package ([1282c88](https://github.com/stencila/stencila/commit/1282c8808a556ebe60fe8d26ef4abe6208bb88c1))
* Removed invalid example product yaml ([2da22ed](https://github.com/stencila/stencila/commit/2da22edc69a349f133720dfdce508eea7ca0217c))
* Renamed to_dict to object_encode to be more accurate ([6931651](https://github.com/stencila/stencila/commit/6931651d6f93e9e3614d188171bf66093bfdc39d))
* Reorder property type alternatives for improved coercion ([0b15122](https://github.com/stencila/stencila/commit/0b1512248a5a13450e55cb8359e352fce4d2d2d9))
* Replace $extends and remove unecessary use of object ([b24d8e3](https://github.com/stencila/stencila/commit/b24d8e3bdfc78a24d09ef3fa89c8892668a5e284))
* **Review, Comment:** Move comments to CreativeWork ([b9bad70](https://github.com/stencila/stencila/commit/b9bad704385285216393e2878decdfaeec70e302))
* **R:** Fix and improve generated bindings ([cffc5fe](https://github.com/stencila/stencila/commit/cffc5fe36ea376bde5e6dbca43f65126de57dd04))
* **R:** Fix checking of  property types ([0b19165](https://github.com/stencila/stencila/commit/0b191655161628bde17525e88ec12a0b709ab15d))
* **R:** Improve code generation ([9a438f3](https://github.com/stencila/stencila/commit/9a438f3a4674a3a09bfdedeb200ee3442a66b924))
* **R:** Marks property values as scalars where possible ([7b1221e](https://github.com/stencila/stencila/commit/7b1221e3536fc3e143d62b39edb99cabbe9e1fa0))
* **R:** Update NAMESPACE file ([aec2b25](https://github.com/stencila/stencila/commit/aec2b254c236e5355a8aebda2bec948b4858e384))
* **R:** Update NAMESPACE file ([a717d0a](https://github.com/stencila/stencila/commit/a717d0aa6edd5c3a10d3578ebf5ec1ed7fbd1386))
* **Rust bindings:** Correct casing for property type overrides ([586529a](https://github.com/stencila/stencila/commit/586529a8e91061f337c3f423e55d06e7a2658ead))
* **Rust bindings:** Fix name for Array ([e955f27](https://github.com/stencila/stencila/commit/e955f271c4098132b97496d4df3ca42e872ccc28))
* **Rust bindings:** Use a Box rather than Arc since do not need shared ownership ([fa939cd](https://github.com/stencila/stencila/commit/fa939cd1650c98ee47deb330bccfeeaa6aa54e4d))
* **Rust bindings:** Use Boolean for consistency with schema.org ([c754d33](https://github.com/stencila/stencila/commit/c754d33bb2024a8e508df2730987741c4b0ea570))
* **Rust bindings:** Use pointers to avoid recursive types ([40e27ee](https://github.com/stencila/stencila/commit/40e27eeade71bf6584bc3d8c129c55e2d28ec5c6))
* **Rust parser:** Use `Declare` instead of `Assign` for variable declarations ([ab77d38](https://github.com/stencila/stencila/commit/ab77d3832137e3dd9f35ee3a32f408832d471c63))
* **Rust:** Box optional properties ([be279c0](https://github.com/stencila/stencila/commit/be279c010446a0eacdefb22f2b9c97664075141e))
* **Rust:** Do not box primitive properties; allow overrides ([e817aaa](https://github.com/stencila/stencila/commit/e817aaa2f59d90b5c46a6464cedd7d5ccab8717e))
* **Rust:** Exclude content and parts and add title for simple versions ([62ac660](https://github.com/stencila/stencila/commit/62ac660e58fcd984f3a83d92e568a89788526cf0))
* **Rust:** Expose enum schemas, fix other types ([7c13871](https://github.com/stencila/stencila/commit/7c138713df1f9ed999deb0cedf46822ec06aba8f))
* **Rust:** Fix casing and visibility ([47486cf](https://github.com/stencila/stencila/commit/47486cf7fdbfed61ee51fcd09abdaea206df25c1))
* **Rust:** Fix error message ([a597cf8](https://github.com/stencila/stencila/commit/a597cf81bd7c8c8072985b0ca2b911afbd28d6a7))
* **Rust:** Improve primitive types ([98296aa](https://github.com/stencila/stencila/commit/98296aad9be1cb5b7e32517aee1d7e034ed90848))
* **Rust:** Remove `serde(skip)` for pointer fields ([d18ed5b](https://github.com/stencila/stencila/commit/d18ed5b5d993a7534400dd7b10db2b0f0e203833))
* **Rust:** Reuse property types from base types ([7518b31](https://github.com/stencila/stencila/commit/7518b31e16a88c2f66617f4bc5db4e48cf0daa2c))
* **Rust:** Use String for date value to avoid errors when deserializing partial date strings ([1b892b9](https://github.com/stencila/stencila/commit/1b892b9f26b62e00227950cbef1b1e2cd70c07d1))
* **Rust:** Use strings for digests ([df07e95](https://github.com/stencila/stencila/commit/df07e95ac928f9cb8d6b20c25eb8830416b2d2ca))
* **Schema generation:** Sort children and descendants for more deterministic output ([d04a423](https://github.com/stencila/stencila/commit/d04a4235f424d8d113cdb5c88f41bf3425b88ca9))
* schema-to-typescript.js ([75b7dbe](https://github.com/stencila/stencila/commit/75b7dbe23f2dc66f3229cfd90e3dd9a058d7badd))
* **Schema:** Add CreativeWork to CreativeWorkTypes ([34aa44a](https://github.com/stencila/stencila/commit/34aa44a650097aa19c62261608d9d461a1a7f280))
* **Schema:** Fix missing id and description properties ([5904015](https://github.com/stencila/stencila/commit/590401503f952dadf2e55aab17ba32ca076a2c88))
* **Schema:** For consistency capitalize all enum variants ([c94405d](https://github.com/stencila/stencila/commit/c94405de352f79258e48f44f6fd50e3ce8a450e3))
* **Schema:** Inherit propertyAliases ([a29f215](https://github.com/stencila/stencila/commit/a29f2152c3d2662c9c2417b6cd2ba2c5f347223f)), closes [#126](https://github.com/stencila/stencila/issues/126)
* smal fixes in examples and getting ready for rebase ([c7e2eb1](https://github.com/stencila/stencila/commit/c7e2eb18777a2a0705dbdd018050d46435c08369))
* **SoftwareSession:** make environment optional ([85e05af](https://github.com/stencila/stencila/commit/85e05af38789df8a56ec83c6de9a3f3134ec393d))
* **SoftwareSession:** Refactoring of SoftwareSession and associated types ([eb950f2](https://github.com/stencila/stencila/commit/eb950f210c6d991fd9edf706d18a17f02ade05e0))
* some erros with types and anyOf ([0b10088](https://github.com/stencila/stencila/commit/0b10088486def7f061387c160b362c7a7b23b111))
* some erros with types and anyOf ([dbebc50](https://github.com/stencila/stencila/commit/dbebc50c1bfdc9f192abbdf75e2163e25992cb3d))
* **String:** Rename from Text for better consistency with other data types and languages ([a944fea](https://github.com/stencila/stencila/commit/a944fea47e7da8ea43a3e57b8611709220864c61))
* **Table, Figure, CodeChunk:** Narrow caption to BlockContent falling back to string ([4acc3ba](https://github.com/stencila/stencila/commit/4acc3ba691a17844d7a24f1a295c3d352c83aac6))
* **TableCell, TableRow:** Rename props to `cellType` and `rowType` ([2f9321d](https://github.com/stencila/stencila/commit/2f9321d0a970d6cab05160b46577d6d0b6595ba8))
* **TableCell:** (BREAKING CHANGE) Depracate  property ([c46460c](https://github.com/stencila/stencila/commit/c46460c513b63e3b5b7f2852202fced669ac8201))
* **TableCell:** Fix long description ([ffd7ec5](https://github.com/stencila/stencila/commit/ffd7ec5aec4ea4c373bf8f4a4813a1b34d76b563))
* **TableCell:** fix the id property ([d74d1b9](https://github.com/stencila/stencila/commit/d74d1b9888759abd92231ca357b7e42649514d74))
* **TableCell:** Narrow allowed content to arrays of inline or block content ([a207782](https://github.com/stencila/stencila/commit/a2077829e48749c1f17cc3343366a50f7846b874))
* **TableCell:** Relax content to allow any Node ([f048dbb](https://github.com/stencila/stencila/commit/f048dbb6236d027202ac617314c6e57c0ee8d55e))
* take properties from SoftwareApplication, add some to SoftwarePackage ([d0b6f0e](https://github.com/stencila/stencila/commit/d0b6f0e8e22ef964aa00cc83496185cde14e825b)), closes [#4](https://github.com/stencila/stencila/issues/4)
* **Thing, CreativeWork:** Allow Thing.description and CreativeWork.title to be content (ie. Node[]) ([ad6a002](https://github.com/stencila/stencila/commit/ad6a002a87484ce169e62cdf4930304b5e3270b5))
* **Thing.identifiers:** Apply anyOf to all items in the array ([3e7e81d](https://github.com/stencila/stencila/commit/3e7e81d77a636ed4ee863461e034fb7c998d7ed3))
* **Thing:** IMages property should be an array ([83fe1ba](https://github.com/stencila/stencila/commit/83fe1ba6c5c58bc228311574b8bdcca81de4c9a5))
* throw error in no content in example ([6003947](https://github.com/stencila/stencila/commit/6003947a5b86c3bd381553040bfa0bd97971db06))
* **toJSON:** handle array properties properly ([02dd168](https://github.com/stencila/stencila/commit/02dd16863ba7054ec5a3081078ec25653b617273))
* Treating typed variables as declarations and other as assigns ([dbefd62](https://github.com/stencila/stencila/commit/dbefd625f69e0d253fd04a57a0f2008b3b5d3f21))
* TS generation of function function and type usage in CodeError ([2f43bfa](https://github.com/stencila/stencila/commit/2f43bfa52048de10e445b4a0579316e55daa95ad))
* **TS:** Fix error re. conflicting type definition ([3f227f1](https://github.com/stencila/stencila/commit/3f227f143acf0ef5c8ef4ef417a88efc4cf86861))
* **TS:** Fix Schema generation script ([002b320](https://github.com/stencila/stencila/commit/002b32096fc8bffe26c0209da75e0e4e677550f6))
* **TS:** Fix Typescript definition file path ([07af774](https://github.com/stencila/stencila/commit/07af7748244270da72fb4d0d47ed8023d289652e))
* tweaks to various schemas ([d14f6ba](https://github.com/stencila/stencila/commit/d14f6bac0c6869d117945c0c24077e3739b5f512))
* **Type Guards:** Expose TypeMaps in packaged module ([cdb61e4](https://github.com/stencila/stencila/commit/cdb61e4a897b69a4015a90088655cd60155df91c))
* **Typedoc:** use file mode for doc generation ([1a5615f](https://github.com/stencila/stencila/commit/1a5615f9e977a2c6725061c05db4430f50ea9048))
* **Typescript bindings:** Create a dist/index.js file ([f03c2e1](https://github.com/stencila/stencila/commit/f03c2e18d21cd4bf30d89cbaab18640ff870d34b))
* **TypeScript bindings:** Revert to using any ([4d1b761](https://github.com/stencila/stencila/commit/4d1b761e03bd258d3670f7caa2033cb0fbf90bc7))
* **Typescript guards:** Allow isA to take a possibly undefined node ([2e5dc24](https://github.com/stencila/stencila/commit/2e5dc24d14ce7d7c42885075fc7ee99b15c00621))
* **TypeScript:** Reduce number, and simplify, type guards ([d348d17](https://github.com/stencila/stencila/commit/d348d174be660384369d6fe9887bf82745d1b7aa))
* **Types:** Include Entity in Node union type ([e713276](https://github.com/stencila/stencila/commit/e7132760a9924257336d483a0aa0ac29778cd019))
* typo in Organization and removed logo and owns ([ceb3337](https://github.com/stencila/stencila/commit/ceb33378da010a7e411ed87741f7343fea809974))
* typos ([290692f](https://github.com/stencila/stencila/commit/290692f8ead02ae34ebcbb5f4ad196202708cec8))
* update of build scripts; add environment to document ([e574c3d](https://github.com/stencila/stencila/commit/e574c3d4e66269ec898ecfb1f46ab329bec61f8f))
* Update status properties, add note on status to docs and publish experimental schemas ([7fe6693](https://github.com/stencila/stencila/commit/7fe6693af95980c925c60b793c43e3c3d124a760))
* Updated Python types generation to be more PEP8 compliant ([1e7a6c0](https://github.com/stencila/stencila/commit/1e7a6c0920bfea271af67105189b92449e6adaca))
* updates, mostly for datatable, required for converter ([7306587](https://github.com/stencila/stencila/commit/730658791cab5176066daf48c42252ba6b841292))
* Use allOf where needed ([31be54c](https://github.com/stencila/stencila/commit/31be54c7f40f18561c2374a0ad2ea26743146101))
* use an index.schema.json file for better Typescript generation ([020775f](https://github.com/stencila/stencila/commit/020775fe5dbff4792d0ecc081756dd380408434f))
* use immer to make mutate side-effect free ([3288607](https://github.com/stencila/stencila/commit/328860737261ca1781b175d44631bd2ba09015eb))
* **Validator:** Use a base Validator type ([ed53b4d](https://github.com/stencila/stencila/commit/ed53b4db09d9e8d5269b8445da2daeca767456a3))
* **Variable import and export:** Avoid use of common keywords ([8812e01](https://github.com/stencila/stencila/commit/8812e018dfd0ead25319e5253ec2f40a3bd5f7cd))
* **Various:** Use empty properties object. Ensure $extends. ([c368f9b](https://github.com/stencila/stencila/commit/c368f9b376c6cd39500ca98518660f97d51e977d))
* **VSCode bindings:** Preserve case for easier matching during tests ([c272d28](https://github.com/stencila/stencila/commit/c272d282b58e39a264443359bfd54e1e8629e251))
* **WebSocket:** handle readyState properly ([8b63f34](https://github.com/stencila/stencila/commit/8b63f344753564c57be82585fb575013080d725c))
* **Works:** Put all types derived from CreativeWork in works category ([1b72009](https://github.com/stencila/stencila/commit/1b720096ce7d0b7c9ac617129b2ad911a28d8aa6))

### Code Refactoring

* **Parser keyword:** Rename `codec` keyword to `parser` ([de26e9f](https://github.com/stencila/stencila/commit/de26e9f52dc380155e42211c80c029f1369704d2)), closes [#241](https://github.com/stencila/stencila/issues/241)

### Features

* Add Cite and CiteGroup types ([e222035](https://github.com/stencila/stencila/commit/e22203505c662b6bd809b7f2ac775e6f795a1b61))
* add compile, build and execute functions ([bf3f905](https://github.com/stencila/stencila/commit/bf3f905731dbcd8ebd64ec1da05a8d771b9c4b74))
* add convert function ([359121b](https://github.com/stencila/stencila/commit/359121bc523179c5adcd5a79d9f20c45deef5621))
* add export function and move toJSONLD there ([92d7c37](https://github.com/stencila/stencila/commit/92d7c37129bcc94caec5020c6fb70d67b3a61910))
* Add extends Thing in DefinedTerm schema ([775d0c4](https://github.com/stencila/stencila/commit/775d0c4910c1c92bd206c9d3e952e95b5cd46282))
* Add Figure schema ([b031afb](https://github.com/stencila/stencila/commit/b031afb4d8ce10d11ec6ef2818e08f04c692c859))
* add handle function and stdio server ([338c385](https://github.com/stencila/stencila/commit/338c3851b6cd1b953ce8595b6cf1a9145cec5875))
* add handling of alternative message encodings ([d7e4339](https://github.com/stencila/stencila/commit/d7e4339cb5096ad6730c06bdddc59fa2abe24aaa))
* Add id and meta to Thing ([d3574c3](https://github.com/stencila/stencila/commit/d3574c310110034fd67ba4d2dfe69432cd340b29))
* add import function, closes [#8](https://github.com/stencila/stencila/issues/8) ([1cdf8b3](https://github.com/stencila/stencila/commit/1cdf8b3807b49949ed52a97e649728e68b88fd53))
* add Link ([04560ce](https://github.com/stencila/stencila/commit/04560ce912b8117749308640901d3e89e7fc6bfe))
* add manifest function ([104ac6f](https://github.com/stencila/stencila/commit/104ac6f2b5eea4be08c5a4b923bea03ad106e182))
* add mmap client and server ([725442e](https://github.com/stencila/stencila/commit/725442e4517ee68c67397f63da612662ac623657))
* add more block level nodes; remove Text ([a6a3af9](https://github.com/stencila/stencila/commit/a6a3af9472571d693a4118f5b458a1e0619f9181))
* Add Parameter schema ([cf6e358](https://github.com/stencila/stencila/commit/cf6e3587a98be03fce0a0eb53ac924d5de4a65cd))
* Add Periodical, PublicationIssue and PublicationVolume schema ([4c2e574](https://github.com/stencila/stencila/commit/4c2e574acb01b6461c1fde5c391afc4c5ed0e249))
* Add Python command line executor ([e4dbe3d](https://github.com/stencila/stencila/commit/e4dbe3df64b1082b783dc99b261266230f00c08a))
* Add subjects schema ([de4871e](https://github.com/stencila/stencila/commit/de4871e0373254fba44ace2dd5744d618562a533))
* add TCP client and server ([2251afc](https://github.com/stencila/stencila/commit/2251afc3511681931a314ad6bcd23c19bec08b6f))
* Add type about and genre ([692a9e7](https://github.com/stencila/stencila/commit/692a9e7e7c5a94001cfb3acdd7ac8d52eef397d5))
* add Web Worker client and server classes ([107230d](https://github.com/stencila/stencila/commit/107230d34978ef7871fb52f7e6b2ff487b774756))
* add WebSockets client and server ([a391601](https://github.com/stencila/stencila/commit/a3916011a544ee95966b49b8b0aff8d214fb1065))
* Added 'repeats' and 'extends' properties for Parameter ([398e658](https://github.com/stencila/stencila/commit/398e65823d6496f436a4de40f5fcde5756e7f2dc))
* Added categories for each schema [#102](https://github.com/stencila/stencila/issues/102) ([deffe0d](https://github.com/stencila/stencila/commit/deffe0dacc311c3e6bff05133e4b0baf144a138e))
* Added deregister method ([f4c3bd8](https://github.com/stencila/stencila/commit/f4c3bd87d9941c1e415664fd90371e9676774796))
* Added Entity and made it the base of everything (including Thing) ([a0d89b8](https://github.com/stencila/stencila/commit/a0d89b8e1bc1a601128ee0f04b70fa2c30e63ddb))
* Added first draft of JavaScript executor ([0bdc46e](https://github.com/stencila/stencila/commit/0bdc46e3cd4a59741f430f6481231cadeba7d8f7))
* Added initial CodeChunk schema. ([8b083f8](https://github.com/stencila/stencila/commit/8b083f87db4133d70759acfd59a681b33c59b02f))
* Added listen command for Interpreter ([32d70c9](https://github.com/stencila/stencila/commit/32d70c9970297dbf92f5ccf7f0d9ef38062be581))
* Added Node execution engine/delegator ([7ab2c91](https://github.com/stencila/stencila/commit/7ab2c911c8e4f69f47eac9e866a6596adfd56f3a))
* Added parsing of alters and error capturing ([3e43901](https://github.com/stencila/stencila/commit/3e439010479610d5b506f08c3ca067656db6b10b))
* Added parsing of If, While etc to JS interpreter ([7c062d1](https://github.com/stencila/stencila/commit/7c062d1dec54e2b1aa27d034e65e779bfcc7ea5d))
* Added Software* items ([0189005](https://github.com/stencila/stencila/commit/01890050ca2538833c2dd6e0d0f3411af7725331))
* Added TS/Py interpreter loops ([1898d99](https://github.com/stencila/stencila/commit/1898d99396e666f64ad8832c1a162a3d352f4c37))
* adds HTTP client and server ([8cb8de2](https://github.com/stencila/stencila/commit/8cb8de2ee5c98d5342f6579c6dc30c63d32f3889))
* adds JSON and CBOR message encoders for Javascript ([7670975](https://github.com/stencila/stencila/commit/7670975677dc4506bda7a5c1500f9cb44d35e408))
* **Article:** Add pagination, pageStart, pageEnd properties ([276e0b9](https://github.com/stencila/stencila/commit/276e0b92fdd5b56376288b4bff8b5289e112aaff))
* **CitationTypeEnumeration:** Add an enumeration for CiTO citation types ([dcc3344](https://github.com/stencila/stencila/commit/dcc33442b7429835514250ba1c882835e5c2e973))
* **Cite:** Add content field to Cite schema ([e7826cb](https://github.com/stencila/stencila/commit/e7826cb5ac68eb2deda4ac9e29b3997249b1a41a))
* **Claim:** Draft Claim specification ([43833b4](https://github.com/stencila/stencila/commit/43833b49a9b69f1ead0a13c881aa9f904929222b))
* **Client:** Add event listeners for code execution & kernel restart ([9ff3cb7](https://github.com/stencila/stencila/commit/9ff3cb7aab5db0b6a8d47f89130d8e3308bd5162))
* **CodeChunk:** Add `executeAuto` and `executePure` properties ([16a4bd8](https://github.com/stencila/stencila/commit/16a4bd81d6d11c089cd65c254046f7c2fd7355fc))
* **CodeChunk:** Add more properties to CodeChunk ([49c3543](https://github.com/stencila/stencila/commit/49c3543b21836bf20273888086b54ac297afc68d))
* **CodeChunk:** Add support for caption & label fields ([3d78d9d](https://github.com/stencila/stencila/commit/3d78d9d9740ae1a4a346d474a7144eb524c11a29))
* **CodeExecutable:** Add `DependenciesFailed` variant to `executeRequired` ([3cde344](https://github.com/stencila/stencila/commit/3cde3440600e8d4aacce107a2fa15f9709940826))
* **CodeExecutable:** Add variants to `executeStatus` ([7b01a09](https://github.com/stencila/stencila/commit/7b01a09220701d11b04a3d9fccd4f39801b59367))
* **Comment:** Add comment aspect ([3c06245](https://github.com/stencila/stencila/commit/3c06245eb9ae390650375409de4babf6b833cf6e)), closes [/github.com/stencila/schema/pull/228#discussion_r522498602](https://github.com//github.com/stencila/schema/pull/228/issues/discussion_r522498602)
* **Comment:** Add comment type ([89e93a3](https://github.com/stencila/stencila/commit/89e93a356957ab6146d9d879293231abd49da181)), closes [#227](https://github.com/stencila/stencila/issues/227)
* **Compiled nodes:** Refine types used when compiling a doc ([2da8d60](https://github.com/stencila/stencila/commit/2da8d606dc7da4e807ac6f5306dcf2db278d5063))
* **context:** preliminary [@context](https://github.com/context) from sources ([6982a4d](https://github.com/stencila/stencila/commit/6982a4dd6d53d2d9eb857394f780c7723bece270))
* Converting matplotlib figures to ImageObjects during Py execution ([e080f6b](https://github.com/stencila/stencila/commit/e080f6b3f00703eb746bd2c65caf463d756f1ed8))
* Converting Pandas DataFrames to Datatables in Python JSON output ([39406e5](https://github.com/stencila/stencila/commit/39406e5f72cf4605b5140d5d051968f6661c69c1))
* **CreativeWork:** Add `keywords` property and alias for `references` ([b44a34e](https://github.com/stencila/stencila/commit/b44a34e8e2e072c2178f06ea1ed19e9f0943b1f7))
* **CreativeWork:** Add dateReceived and dateAccepted properties ([788f0bf](https://github.com/stencila/stencila/commit/788f0bf460425f828911efb63b86bb1050d4e7ec))
* **Date:** Add Date schema ([008247f](https://github.com/stencila/stencila/commit/008247f1100a7ed8e111937fd9799f47ebaa54a1))
* **Digests:** Add `buildDigest` and other digests; refactor code types ([0521783](https://github.com/stencila/stencila/commit/05217835bfb45397741c2b25def2c101a012d0ca))
* **Docs:** Generate documentation site from JSON instead of YAML files ([e43ebf1](https://github.com/stencila/stencila/commit/e43ebf1cc22e39e8b9a88b20b870c81b95b7542d))
* **Docs:** Improve property table generation ([8bfdc5d](https://github.com/stencila/stencila/commit/8bfdc5d836ee2b3e1f5a0a87b025ef0ffd83238a))
* **Docs:** Sort properties table by required fields then alphabetically ([d41cadd](https://github.com/stencila/stencila/commit/d41cadd0703667706fe75928e8588dbefde713b1))
* **Docs:** Syntax highlight code blocks in MDX ([40460be](https://github.com/stencila/stencila/commit/40460bec585fd3c5f46f4b2d9386e587b2f18b48))
* **Documents:** Add JSON-RPC methods for obtaining document `kernels` and `symbols` ([9c706d0](https://github.com/stencila/stencila/commit/9c706d0ee2c4358560b04c56d5bd4459f12a0f36))
* **Entity, Thing:** Promote to stable ([234e320](https://github.com/stencila/stencila/commit/234e32009b8319e668688f5dc4336b05282918f0))
* **Executable code nodes:** Add `executeCount` property ([56e0902](https://github.com/stencila/stencila/commit/56e09028389b49813a8c0cd32c837fa883ed4fa3))
* **Executable code nodes:** Add properties for execution status etc ([9e3de92](https://github.com/stencila/stencila/commit/9e3de9270888e0d19a2279cc8d40263566f1cfa3))
* **Executable nodes:** Add properties summarising dependencies and execution ([2cec08b](https://github.com/stencila/stencila/commit/2cec08b3de5b4f63631052a6a5d0b0e2778e9246))
* Extracting features from CodeChunks ([790f9bf](https://github.com/stencila/stencila/commit/790f9bf1d37cef3db3e82c09ebed4ec701a1105e))
* **Factory Functions:** Filter properties if their value is undefined ([64872fa](https://github.com/stencila/stencila/commit/64872fa5f4b26ba1913e82e0791b20fec29585d5))
* Fixes to setup.py ([ee1a6a7](https://github.com/stencila/stencila/commit/ee1a6a71b95cbd8a883a1c31f993a6cb976fd283))
* **Grant & MonetaryGrant:** Add types and properties for representing funding grants ([1c92adf](https://github.com/stencila/stencila/commit/1c92adf6f77329633c6f75831f676dcc0c8cd471))
* **Graph relations:** Add `Declare` relation ([472ccdb](https://github.com/stencila/stencila/commit/472ccdbece22e7156838ee85578cdd6a0ea269f3))
* **HttpClient:** add get and post methods ([f69668b](https://github.com/stencila/stencila/commit/f69668b454513788bd588bf4b82b5f3c7eaba384))
* **Include:** Add sha256 property and add to BlockContent ([3e94190](https://github.com/stencila/stencila/commit/3e941908a7b9e113fc81601fc2ad48e35ef87ec8))
* initial implementation of R package with encoders ([320ef6f](https://github.com/stencila/stencila/commit/320ef6f788dfbd2bd74504b318b8c38f4a0521ab))
* initial version of peer processor connection and discovery ([b6a2659](https://github.com/stencila/stencila/commit/b6a2659df0d13692afe4595423d577ee6ed16d3e))
* initial versions of *.schema.json files and tooling ([eb71029](https://github.com/stencila/stencila/commit/eb710291d09d30d9d6b402cfb4df29e7ecf74379))
* **Js/WIP:** Parsing of CodeChunk properties ([1fdbd1d](https://github.com/stencila/stencila/commit/1fdbd1dd879f852f7fcdbc81c38a060a03bd2399))
* **JS:** Added checking for empty string semaphore in imports ([d2e2d48](https://github.com/stencila/stencila/commit/d2e2d488bf2dea68bbf7e90a2491d857dfe62fb7))
* **Js:** Added Handling of for statements ([e6799f6](https://github.com/stencila/stencila/commit/e6799f61590ff37225eda9e7ae8d5dc2e1990ff4))
* **JS:** Added parsing of try/except ([81942ec](https://github.com/stencila/stencila/commit/81942ece0901e9672f2ca3f9462b5683a2998196))
* **Js:** Adding timing of CodeChunk execution ([b1aa9cc](https://github.com/stencila/stencila/commit/b1aa9cce778a9f66347c3135fb67bfcc8a48c575))
* **Js:** Capturing files read by readFile/readFileSync and open ([aaf3fa4](https://github.com/stencila/stencila/commit/aaf3fa480cf75945128b01fd92da24c3392f7df7))
* **Js:** Catching exceptions during parsing/execution ([e499eb4](https://github.com/stencila/stencila/commit/e499eb4b343596a4ad6316621532aae557a10905))
* **JS:** Interpreter now requires command ([d9d275f](https://github.com/stencila/stencila/commit/d9d275f334b61b3ee9051d210997e29081410b3c))
* **JSON Schema:** Allow for inline $refs ([e426380](https://github.com/stencila/stencila/commit/e4263805c3725c12eb8a8532fc57dbc90c8bc864))
* **JSON Schema:** Generate union type for descendant types ([3376d73](https://github.com/stencila/stencila/commit/3376d7351f296f7ed1a4d1bfe0562bec247c6a7d))
* **Kernels:** Allow restarting one, or all, of the kernels in a `KernelSpace` ([be02620](https://github.com/stencila/stencila/commit/be0262001dcc766379eed7b3efbaf826e595bba2))
* **ListItem:** Add item and position properties ([2da1545](https://github.com/stencila/stencila/commit/2da15458968b5633d37e609d8ce97ecd7f0be24a)), closes [/github.com/stencila/encoda/blob/9190db9fbc77510c73359b4a53fca9b1977e23a0/src/codecs/html/index.ts#L1606](https://github.com//github.com/stencila/encoda/blob/9190db9fbc77510c73359b4a53fca9b1977e23a0/src/codecs/html/index.ts/issues/L1606)
* **ListItem:** Add ListItem schema ([7f78868](https://github.com/stencila/stencila/commit/7f788688e1d76ea4dc869851347097dd7b85b62c))
* **Math:** Add Math, MathFragment and MathBlock nodes ([74f4b55](https://github.com/stencila/stencila/commit/74f4b55084042eb63dac0827514b6fffbc5d5e94))
* **MathBlock:** Add label property ([d1b850d](https://github.com/stencila/stencila/commit/d1b850d5ce6ecbf7fa50a3d53da77ea5833bf0cd)), closes [#246](https://github.com/stencila/stencila/issues/246)
* **Microdata:** Add higher level HTML Microdata functions ([67b850e](https://github.com/stencila/stencila/commit/67b850edd0493f60167e170cfabf8df24617f226))
* **Microdata:** Add microdataRoot function ([a9b1989](https://github.com/stencila/stencila/commit/a9b1989ac07767dc90b091fa6b95ce92d9ac8a3d)), closes [#175](https://github.com/stencila/stencila/issues/175)
* **Microdata:** Consider `role` when generating itemprop ([65c3772](https://github.com/stencila/stencila/commit/65c37722db3043c9d381cd0588bd147c519c004f))
* **NontextualAnnotation:** Adds node type for text that has a non-textual annotation ([9b593eb](https://github.com/stencila/stencila/commit/9b593eb31aeabe397734d08c802591bc13322380)), closes [#211](https://github.com/stencila/stencila/issues/211)
* **Note:** Draft Note specification ([b187519](https://github.com/stencila/stencila/commit/b187519d72ed8d77fa85bc3c44abc1b81ad5d93a))
* **Organization:** Add logo property ([f03d04c](https://github.com/stencila/stencila/commit/f03d04c19f1493b23982cefed5199c47521fc31c))
* **Organization:** Add members field ([f5883dc](https://github.com/stencila/stencila/commit/f5883dc19c686a867bf1b7efae621990eddbdb7b))
* **Parameter:** Add schema schemas ([d5b67b0](https://github.com/stencila/stencila/commit/d5b67b0a9d9c21e72dacafd7c64dae849a128cc6))
* **Parameter:** Add to InlineContent ([74235e1](https://github.com/stencila/stencila/commit/74235e19bb11eb0b3748f2c612a4f83020834fae))
* **Person:** Add example to Person schema ([2e17892](https://github.com/stencila/stencila/commit/2e178928c0fa3e760309de4053ad34e505488e0b))
* **PostalAddress:** Add post address schema type ([8a0de66](https://github.com/stencila/stencila/commit/8a0de6645fef7d0c60225034cca0a44f13d2f275)), closes [/github.com/stencila/encoda/issues/458#issuecomment-593746231](https://github.com//github.com/stencila/encoda/issues/458/issues/issuecomment-593746231)
* **Primitive types:** Add schemas for primitive types ([e402847](https://github.com/stencila/stencila/commit/e4028479abea3fb86243559b709b53f5fe81f378)), closes [/github.com/stencila/encoda/blob/356b8e08f71880f12236bac7b0bcb2c272f4f60b/src/codecs/html/microdata.ts#L148](https://github.com//github.com/stencila/encoda/blob/356b8e08f71880f12236bac7b0bcb2c272f4f60b/src/codecs/html/microdata.ts/issues/L148)
* Promote several types from experimental ([c5941e5](https://github.com/stencila/stencila/commit/c5941e55bd15c197b1dd752014e6fff2e35895da))
* **PropertyValue, Thing.identifers:** Add ([00ec60f](https://github.com/stencila/stencila/commit/00ec60faa9227c537bf01a7d44464ee427299b9d))
* **Py:** 'compile' arg and MPL figure fixes ([5b791d5](https://github.com/stencila/stencila/commit/5b791d5df440e5282cbf2e01f3169c8d501c331c))
* **Py:** Added checking for empty string semaphore in imports ([648ac8e](https://github.com/stencila/stencila/commit/648ac8e73afaf0b82c2997e93de076219fb562d8))
* **Py:** Added Exception parsing ([5e55bcb](https://github.com/stencila/stencila/commit/5e55bcbfd4c36356f1612b5a4ff59bad37e08137))
* **Py:** Added Python args/kwargs parsing ([2f4b927](https://github.com/stencila/stencila/commit/2f4b9271f54fc780a26ff9295f317810ec670722))
* **Python and R bindings:** Initial versions of bindings for Python and R ([8266cf7](https://github.com/stencila/stencila/commit/8266cf7fc707fa6fd6f1093a35549a8880ae438f))
* **Python bindings:** Add node_type utility function ([e4a448a](https://github.com/stencila/stencila/commit/e4a448a4ee3d6af848ce8b26a4604550c66bf923))
* **Python bindings:** Add utilty functions for converting to/from JSON ([b4c8aa4](https://github.com/stencila/stencila/commit/b4c8aa4a7f005621b7de5f14fcffda58bde75f01))
* **Python:** add initial Client and Server implementations ([312e1bc](https://github.com/stencila/stencila/commit/312e1bc2131bc16637636b2dba21d1d068e5a461))
* **R:** Add compilation of CodeChunks ([68a183e](https://github.com/stencila/stencila/commit/68a183eaa9610b4307fe2f40fc4a8f5a2c5aef62))
* **R:** Add JSON and data.frame conversion functions ([8d1176b](https://github.com/stencila/stencila/commit/8d1176bc3638813c51d1ce0f27d08bedc2ac4e73))
* **R:** Conversion between Datatable and data.frame ([e34786d](https://github.com/stencila/stencila/commit/e34786dd0c9426f65e5ab62856d61d95fd1bca04))
* **Review:** Add review type ([0779830](https://github.com/stencila/stencila/commit/077983073b30f92769a0793063d9a56cb0dd5720)), closes [#227](https://github.com/stencila/stencila/issues/227)
* **Rust bindings:** Add  JSON serialization and deserialization ([7bee60f](https://github.com/stencila/stencila/commit/7bee60f515a5a2280fc92d9ef93cf98bb6f9f868))
* **Rust bindings:** Add bindings for Rust ([34d789f](https://github.com/stencila/stencila/commit/34d789f0b171c9383e6b59b0d956629209c3bb13))
* **Rust bindings:** Add type name and id traits ([43c0554](https://github.com/stencila/stencila/commit/43c05549f8a69f5308708de4ea6189d430d5d984))
* **Rust:** Add `Cord` for use in digest, and other, properties ([bcc186d](https://github.com/stencila/stencila/commit/bcc186d9e56a3563a2831824b090496d6930cfea))
* **Rust:** Add Clone derive ([5f1cfb5](https://github.com/stencila/stencila/commit/5f1cfb5650902d4ab909191036f27e0e85a334bc))
* **Rust:** Add convieience functions for `Date` type ([3d6e89d](https://github.com/stencila/stencila/commit/3d6e89d9eccf134e05e9207b7beda773d377c4c5))
* **Rust:** Add trait for type name and id ([fd6f0a3](https://github.com/stencila/stencila/commit/fd6f0a37dde54d5363b7854aae9be6b4ebcfbfd6))
* **Rust:** Include map of schemas in crate ([4b82b26](https://github.com/stencila/stencila/commit/4b82b26e406850d73f964ed74acdd04ddba156dd))
* **Rust:** Remove `NodeTrait`; `Null` as struct ([976c2af](https://github.com/stencila/stencila/commit/976c2af0812ddb497e92c7e98715a0adbd554689))
* **Rust:** Use `strum` to provide a string representation of enum variants ([1b7060a](https://github.com/stencila/stencila/commit/1b7060ab8fd88600f08dd67e2ca2729ac8375607))
* **Schema:** Rename property format to mediaType ([bfb10d6](https://github.com/stencila/stencila/commit/bfb10d6cc89204fb0b6c3aa413ea867c51d95617))
* **Server:** add error details ([545867a](https://github.com/stencila/stencila/commit/545867a68acae0ecdb3a2033449cf76045e4ae0b))
* Simplify schema for CodeChunk ([4d6b378](https://github.com/stencila/stencila/commit/4d6b378a7149ff203eda2c391716831f22052a97))
* **SoftwareSession et al:** Promote to status unstable ([74da849](https://github.com/stencila/stencila/commit/74da849e7772649642be465f1b9e4e963e3d321d))
* **SoftwareSession:** Add properties and rename others ([b7f30de](https://github.com/stencila/stencila/commit/b7f30de68f5227d86aed2a891212c4508baf7ffc))
* **Superscript, Subscript:** Add types for super- and sub-script nodes ([0d4f131](https://github.com/stencila/stencila/commit/0d4f131a8ce0c1d131a72b661f1dd4da38616286))
* **Table:** Add properties to indicate header cells ([129f722](https://github.com/stencila/stencila/commit/129f72244746e639298f0bfb2747eb29a7299736))
* **TableCell:** Change content to array of BlockContent ([c71681c](https://github.com/stencila/stencila/commit/c71681c349553dff927536ceefb55dea1562f13c)), closes [#136](https://github.com/stencila/stencila/issues/136)
* **Thing:*…
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants