25 lines
510 B
Text
25 lines
510 B
Text
# 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:spouse -> ? * s:Person
|
|
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
|
|
}
|