calamus is a library built on top of marshmallow to allow (de-)Serialization of Python classes to JSON-LD
calamus releases and development versions are available from PyPI. You can install it using any tool that knows how to handle PyPI packages.
With pip:
$ pip install calamus
Assuming you have a class like
class Book: def __init__(self, _id, name): self._id = _id self.name = name
You can declare a schema for serialization like
schema = fields.Namespace("http://schema.org/") class BookSchema(JsonLDSchema): _id = fields.Id() name = fields.String(schema.name) class Meta: rdf_type = schema.Book model = Book
The fields.Namespace
class represents an ontology namespace.
Make sure to set rdf_type
to the RDF triple type you want get and
model
to the python class this schema applies to.
You can now easily serialize python classes to JSON-LD
book = Book(_id="http://example.com/books/1", name="Ilias") jsonld_dict = BookSchema().dump(book) #{ # "@id": "http://example.com/books/1", # "@type": "http://schema.org/Book", # "http://schema.org/name": "Ilias", #} jsonld_string = BookSchema().dumps(book) #'{"@id": "http://example.com/books/1", "http://schema.org/name": "Ilias", "@type": "http://schema.org/Book"}')
You can also easily deserialize JSON-LD to python objects
data = { "@id": "http://example.com/books/1", "@type": "http://schema.org/Book", "http://schema.org/name": "Ilias", } book = BookSchema().load(data) #<Book(_id="http://example.com/books/1", name="Ilias")>
You can reach us on our Gitter Channel.