# description
A directed graph relating Stencila nodes, used for provenance, reactivity, and similar relationship graphs.

# $comment
This is a graph type used in Stencila for representing provenance, reactivity
and other graphs.

The `subject` identifies the real resource or scoped document node that the
graph was generated for. It should be an absolute URI with an optional fragment
for a scoped node, following the form `scheme://resource` or
`scheme://resource#fragment`, such as `file://report.md` or
`file://report.md#fig1`.

Graph nodes use durable graph-local `id` values and edges are directed
resource-flow relationships. Edge direction is always from upstream
dependency, source, or component to downstream dependant, result, or
containing node. Concrete operations that caused an edge may be attached to
the edge as `actions`; static analysis, inference, and direct observations are
recorded as edge evidence. The `edges` property is required for shape
stability, but may be an empty array for a single-node graph or a graph whose
relationships have not yet been collected.

The graph inherits creative-work metadata such as `dateCreated`,
`dateModified`, `version`, `authors`, `contributors`, and `references`.
Extending `CreativeWork` is intentional: provenance graphs may themselves be
authored, versioned, cited, funded, or published as reusable research objects,
even when many graphs only use a small subset of that metadata.

# properties.type.$comment
This is a special property analogous to JSON-LD's `@type` keyword.

# properties.id.$comment
This is a special property analogous to JSON-LD's `@id` keyword.

# properties.identifiers.description
Any kind of identifier for any kind of Thing.

# properties.identifiers.$comment
Some identifiers have specific properties e.g the `issn` property for
the `Periodical` type. These should be used in preference to this
property which is intended for identifiers that do not yet have a
specific property. Identifiers can be represented as strings, but
using a `PropertyValue` will usually be better because it allows
for `propertyID` (i.e. the type of identifier).

# properties.workType.description
The type of `CreativeWork` (e.g. article, book, software application).

# properties.doi.description
The work's Digital Object Identifier (https://doi.org/).

# properties.about.$comment
Consistent with https://schema.org/about, this property allows for
linking to one of more `Thing` nodes. This could for example include
a `Person` (e.g for a bibliography) or a `DefinedTerm` (e.g. for
subject areas the creative work relates to).

# properties.abstract.description
A short description that summarizes a `CreativeWork`.

# properties.provenance.description
A summary of the provenance of the content within the work.

# properties.contributors.description
A secondary contributor to the `CreativeWork`.

# properties.editors.$comment
Note that, consistent with schema.org, this property can only include
a `Person`, unlike `authors` and `maintainers` which can also include
`Organization`.

# properties.maintainers.$comment
A maintainer of a `Dataset`, `SoftwareApplication`, or other `CreativeWork`.
A maintainer is a `Person` or `Organization` that manages contributions to,
and/or publication of, some (typically complex) artifact. It is common for
distributions of software and data to be based on "upstream" sources.
When maintainer is applied to a specific version of something e.g. a particular
version or packaging of a Dataset, it is always possible that the upstream
source has a different maintainer. The `isBasedOn` property can be used to
indicate such relationships between datasets to make the different maintenance
roles clear. Similarly in the case of software, a package may have dedicated
maintainers working on integration into software distributions such as Ubuntu,
as well as upstream maintainers of the underlying work.

# properties.dateAccepted.$comment
This is not yet a schema.org property but the term is used
[in Dublin Core](http://purl.org/dc/terms/dateAccepted).

# properties.funders.description
People or organizations that funded the `CreativeWork`.

# properties.fundedBy.description
Grants that funded the `CreativeWork`; reverse of `fundedItems`.

# properties.fundedBy.$comment
This follows the proposal [here](https://github.com/schemaorg/schemaorg/issues/2258)
for a property that is the reverse of `fundedItems`.
It is an any because a `CreativeWork` may have been funded through more than
one `Grant`.

# properties.genre.description
Genre of the creative work, broadcast channel or group.

# properties.keywords.description
Keywords or tags used to describe this content. Multiple entries in a keywords list are typically delimited by commas.

# properties.isPartOf.description
An item or other CreativeWork that this CreativeWork is a part of.

# properties.licenses.description
License documents that applies to this content, typically indicated by URL, but may be a `CreativeWork` itself.

# properties.parts.description
Elements of the collection which can be a variety of different elements, such as Articles, Datatables, Tables and more.

# properties.bibliography.description
A bibliography of references which may be cited in the work.

# properties.bibliography.$comment
Unlike `references` which contains only the references that are actually
cited in the work, `bibliography` is a database of all available references
loaded from an external source file at compile time. It is ephemeral and
not persisted when the document is saved.

# properties.references.description
References to other creative works, such as another publication, web page, scholarly article, etc.

# properties.text.description
The textual content of this creative work.

# properties.repository.description
URL of the repository where the un-compiled, human readable source of the work is located.

# properties.path.description
The file system path of the source of the work.

# properties.path.$comment
Usually only used when the work is within a Git (or other version control) repository,
and then is usually relative to the repository root.

# properties.commit.description
The commit hash (or similar) of the source of the work.

# properties.commit.$comment
Only used when the work's source file is within a Git (or other version control) repository.

# properties.worktreeStatus.description
The status of the source worktree relative to the commit.

# properties.worktreeStatus.$comment
Usually only used when the work's source file is within a Git (or other
version control) repository. This field records uncommitted or untracked
state that can not be represented by `commit` while preserving the commit
hash that the worktree state is relative to. Omit this field when status
was not checked or does not apply.

# properties.version.$comment
In this case `string` is listed as an alternative before `number` to
avoid semantic version numbers e.g. `1.0` being parsed, and subsequently
encoded, as `1` thereby resulting in loss of information.

# properties.subject.description
An absolute URI identifying the resource or scoped document node that the graph was generated for.