tiny algebraic schema langauge

tasl is a schema language for datasets. It represents a generalization of the relational data model based on algebraic data types, and resembles a strongly-typed version of RDF.

# This is a tasl schema! namespace s http://schema.org/ # classes are like tables, except they # can be arbitrary algebraic data types, # not just columns of primitives. class s:Person { s:name -> string s:email -> uri s:gender -> [ s:Male s:Female s:value <- string ] } # references are a primitive type that # point to other classes in the schema, # just like foreign keys. class s:Book { s:name -> string s:isbn -> uri s:author -> * s:Person }

tasl also has a binary format for serialized instances of schemas. Together, you can use tasl to model and publish data in the same way you might use CSVs, JSON, or SQLite snapshots, although tasl is designed to make this entire process more structured and reusable.

tasl is part of the Underlay, a project to create a distributed public knowledge graph. Development is supported by Protocol Labs Research and the Knowledge Futures Group. tasl is heavily inspired by RDF, IPLD, this paper from Shinavier and Wisnesky, and the Typedefs project from the Statebox team.