# \[ANN\] Schemata.jl (alpha)

**URL:** https://discourse.julialang.org/t/ann-schemata-jl-alpha/7287
**Category:** Data
**Created:** [November 24, 2017, 11:56am UTC](https://discourse.julialang.org/t/ann-schemata-jl-alpha/7287 "2017-11-24T11:56:25Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![jocklawrie](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jocklawrie/32/33616_2.png) [@jocklawrie](https://discourse.julialang.org/u/jocklawrie)
#### Post date: [November 24, 2017, 11:56am UTC](https://discourse.julialang.org/t/ann-schemata-jl-alpha/7287/1 "2017-11-24T11:56:25Z")

</div>

Hi all,

Here’s a package I’ve started as part of a larger project that I am beating into shape. It’s not yet registered, so you’ll need to clone it from [here](https://github.com/JockLawrie/Schemata.jl).

I thought I’d put it out early because there has been much discussion about missing data, non-existent values (nothing) and invalid values, and this package provides one way to think about invalid values. More precisely, it requires that you specify valid values.

From the README:

A `Schema` is a specification of a data set.

It exists independently of any particular data set, and therefore can be constructed and modified in the absence of a data set.

This package facilitates 3 use cases:

1. Read/write a schema from/to a yaml file. Thus schemata are portable, and a change to a schema does not require recompilation.

2. Compare a data set to a schema and list the non-compliance issues.

3. Transform an existing data set in order to comply with a schema as much as possible (then run the compare function on the result).

Feedback most welcome. Enjoy!

Jock
