YAML
A human-readable data serialization format
Introduction
YAML (YAML Ain't Markup Language) is a human-readable data serialization format commonly used for configuration files and data representation. It is known for its simplicity and readability, making it a preferred choice for settings and data structures. YAML's structure is based on indentation, allowing users to represent data hierarchies in an easily understandable manner.
Stencila provides support for YAML as a more human-readable, while still lossless, alternative to JSON for storing documents.
Usage
Use the .yaml file extension, or the --to yaml or --from yaml options, when converting to/from YAML e.g.
stencila convert doc.smd doc.yamlImplementation
Stencila support lossless, bi-directional conversion between Stencila documents and YAML. The codec-yaml Rust crate implements from_yaml and to_yaml methods for all node types in Stencila Schema, powered by serde_yaml.
When the --standalone option is used (the default for encoding to files), two properties are added to the YAML encoding of root nodes to improve interoperability:
- a
$schemaproperty which links to the JSON Schema for the node type - a
@contextproperty which links to the JSON-LD context for the Stencila Schema
For example,
$schema: https://stencila.org/Article.schema.json
"@context": https://stencila.org/context.jsonld
type: Article
Support
Stencila supports these operations for YAML:
- decoding from a file
- decoding from a string
- encoding to a file
- encoding to a string
Support and degree of loss by node type:
| Node type | Encoding | Decoding | Notes |
|---|---|---|---|
| Works | |||
| Article | 🟢 No loss | 🟢 No loss | |
| AudioObject | 🟢 No loss | 🟢 No loss | |
| AuthorRole | 🟢 No loss | 🟢 No loss | |
| Chat | 🟢 No loss | 🟢 No loss | |
| ChatMessage | 🟢 No loss | 🟢 No loss | |
| ChatMessageGroup | 🟢 No loss | 🟢 No loss | |
| Claim | 🟢 No loss | 🟢 No loss | |
| Collection | 🟢 No loss | 🟢 No loss | |
| Comment | 🟢 No loss | 🟢 No loss | |
| CreativeWork | 🟢 No loss | 🟢 No loss | |
| Directory | 🟢 No loss | 🟢 No loss | |
| Figure | 🟢 No loss | 🟢 No loss | |
| File | 🟢 No loss | 🟢 No loss | |
| ImageObject | 🟢 No loss | 🟢 No loss | |
| MediaObject | 🟢 No loss | 🟢 No loss | |
| Periodical | 🟢 No loss | 🟢 No loss | |
| Prompt | 🟢 No loss | 🟢 No loss | |
| PublicationIssue | 🟢 No loss | 🟢 No loss | |
| PublicationVolume | 🟢 No loss | 🟢 No loss | |
| Review | 🟢 No loss | 🟢 No loss | |
| SoftwareApplication | 🟢 No loss | 🟢 No loss | |
| SoftwareSourceCode | 🟢 No loss | 🟢 No loss | |
| Table | 🟢 No loss | 🟢 No loss | |
| TableCell | 🟢 No loss | 🟢 No loss | |
| TableRow | 🟢 No loss | 🟢 No loss | |
| VideoObject | 🟢 No loss | 🟢 No loss | |
| Prose | |||
| Admonition | 🟢 No loss | 🟢 No loss | |
| Annotation | 🟢 No loss | 🟢 No loss | |
| Cite | 🟢 No loss | 🟢 No loss | |
| CiteGroup | 🟢 No loss | 🟢 No loss | |
| DefinedTerm | 🟢 No loss | 🟢 No loss | |
| Emphasis | 🟢 No loss | 🟢 No loss | |
| Heading | 🟢 No loss | 🟢 No loss | |
| Link | 🟢 No loss | 🟢 No loss | |
| List | 🟢 No loss | 🟢 No loss | |
| ListItem | 🟢 No loss | 🟢 No loss | |
| Note | 🟢 No loss | 🟢 No loss | |
| Paragraph | 🟢 No loss | 🟢 No loss | |
| QuoteBlock | 🟢 No loss | 🟢 No loss | |
| QuoteInline | 🟢 No loss | 🟢 No loss | |
| Section | 🟢 No loss | 🟢 No loss | |
| Strikeout | 🟢 No loss | 🟢 No loss | |
| Strong | 🟢 No loss | 🟢 No loss | |
| Subscript | 🟢 No loss | 🟢 No loss | |
| Superscript | 🟢 No loss | 🟢 No loss | |
| Text | 🟢 No loss | 🟢 No loss | |
| ThematicBreak | 🟢 No loss | 🟢 No loss | |
| Underline | 🟢 No loss | 🟢 No loss | |
| Math | |||
| MathBlock | 🟢 No loss | 🟢 No loss | |
| MathInline | 🟢 No loss | 🟢 No loss | |
| Code | |||
| CodeBlock | 🟢 No loss | 🟢 No loss | |
| CodeChunk | 🟢 No loss | 🟢 No loss | |
| CodeExpression | 🟢 No loss | 🟢 No loss | |
| CodeInline | 🟢 No loss | 🟢 No loss | |
| CompilationMessage | 🟢 No loss | 🟢 No loss | |
| ExecutionMessage | 🟢 No loss | 🟢 No loss | |
| Data | |||
| Array | 🟢 No loss | 🟢 No loss | |
| ArrayHint | 🟢 No loss | 🟢 No loss | |
| ArrayValidator | 🟢 No loss | 🟢 No loss | |
| Boolean | 🟢 No loss | 🟢 No loss | |
| BooleanValidator | 🟢 No loss | 🟢 No loss | |
| ConstantValidator | 🟢 No loss | 🟢 No loss | |
| Cord | 🟢 No loss | 🟢 No loss | |
| Datatable | 🟢 No loss | 🟢 No loss | |
| DatatableColumn | 🟢 No loss | 🟢 No loss | |
| DatatableColumnHint | 🟢 No loss | 🟢 No loss | |
| DatatableHint | 🟢 No loss | 🟢 No loss | |
| Date | 🟢 No loss | 🟢 No loss | |
| DateTime | 🟢 No loss | 🟢 No loss | |
| DateTimeValidator | 🟢 No loss | 🟢 No loss | |
| DateValidator | 🟢 No loss | 🟢 No loss | |
| Duration | 🟢 No loss | 🟢 No loss | |
| DurationValidator | 🟢 No loss | 🟢 No loss | |
| EnumValidator | 🟢 No loss | 🟢 No loss | |
| Integer | 🟢 No loss | 🟢 No loss | |
| IntegerValidator | 🟢 No loss | 🟢 No loss | |
| Null | 🟢 No loss | 🟢 No loss | |
| Number | 🟢 No loss | 🟢 No loss | |
| NumberValidator | 🟢 No loss | 🟢 No loss | |
| Object | 🟢 No loss | 🟢 No loss | |
| ObjectHint | 🟢 No loss | 🟢 No loss | |
| String | 🟢 No loss | 🟢 No loss | |
| StringHint | 🟢 No loss | 🟢 No loss | |
| StringValidator | 🟢 No loss | 🟢 No loss | |
| Time | 🟢 No loss | 🟢 No loss | |
| TimeValidator | 🟢 No loss | 🟢 No loss | |
| Timestamp | 🟢 No loss | 🟢 No loss | |
| TimestampValidator | 🟢 No loss | 🟢 No loss | |
| TupleValidator | 🟢 No loss | 🟢 No loss | |
| Unknown | 🟢 No loss | 🟢 No loss | |
| UnsignedInteger | 🟢 No loss | 🟢 No loss | |
| Flow | |||
| Button | 🟢 No loss | 🟢 No loss | |
| CallArgument | 🟢 No loss | 🟢 No loss | |
| CallBlock | 🟢 No loss | 🟢 No loss | |
| CodeLocation | 🟢 No loss | 🟢 No loss | |
| CompilationDigest | 🟢 No loss | 🟢 No loss | |
| ExecutionDependant | 🟢 No loss | 🟢 No loss | |
| ExecutionDependency | 🟢 No loss | 🟢 No loss | |
| ExecutionTag | 🟢 No loss | 🟢 No loss | |
| ForBlock | 🟢 No loss | 🟢 No loss | |
| Form | 🟢 No loss | 🟢 No loss | |
| Function | 🟢 No loss | 🟢 No loss | |
| IfBlock | 🟢 No loss | 🟢 No loss | |
| IfBlockClause | 🟢 No loss | 🟢 No loss | |
| IncludeBlock | 🟢 No loss | 🟢 No loss | |
| Parameter | 🟢 No loss | 🟢 No loss | |
| Variable | 🟢 No loss | 🟢 No loss | |
| Walkthrough | 🟢 No loss | 🟢 No loss | |
| WalkthroughStep | 🟢 No loss | 🟢 No loss | |
| Style | |||
| StyledBlock | 🟢 No loss | 🟢 No loss | |
| StyledInline | 🟢 No loss | 🟢 No loss | |
| Edits | |||
| InstructionBlock | 🟢 No loss | 🟢 No loss | |
| InstructionInline | 🟢 No loss | 🟢 No loss | |
| InstructionMessage | 🟢 No loss | 🟢 No loss | |
| PromptBlock | 🟢 No loss | 🟢 No loss | |
| SuggestionBlock | 🟢 No loss | 🟢 No loss | |
| SuggestionInline | 🟢 No loss | 🟢 No loss | |
| Config | |||
| Config | 🟢 No loss | 🟢 No loss | |
| Other | |||
| Brand | 🟢 No loss | 🟢 No loss | |
| ContactPoint | 🟢 No loss | 🟢 No loss | |
| Enumeration | 🟢 No loss | 🟢 No loss | |
| Grant | 🟢 No loss | 🟢 No loss | |
| ModelParameters | 🟢 No loss | 🟢 No loss | |
| MonetaryGrant | 🟢 No loss | 🟢 No loss | |
| Organization | 🟢 No loss | 🟢 No loss | |
| Person | 🟢 No loss | 🟢 No loss | |
| PostalAddress | 🟢 No loss | 🟢 No loss | |
| Product | 🟢 No loss | 🟢 No loss | |
| PropertyValue | 🟢 No loss | 🟢 No loss | |
| ProvenanceCount | 🟢 No loss | 🟢 No loss | |
| RawBlock | 🟢 No loss | 🟢 No loss | |
| Thing | 🟢 No loss | 🟢 No loss |
See the Rust crate codec-yaml for more details.