mash-core

The way Mash structures metadata makes it well-suited for creating interoperability tools. This can fall within the categories of visualization or documentation, can mean converting between different file formats and standards, loading data into tools you can work with, or really any task that benefits from well-described information.

Maplib

There is bundled a set of tools for loading RDF into maplib, and for storing RDF data using maplib. This is of course something maplib primarily does itself - what Mash adds onto it is a structured representation of which formats and standards the data uses, and the ability to store them in a well-described fashion on disk or in blob storage.

This is a pattern that will probably be followed by interoperability layers with other tools - Mash helps to describe, store, orchestate and translate rather than trying to replace any tools.

The specific tools interoperability tools are:

RDFS

RDF Schema is a simple schema specification for RDF. It allows you to describe your classes, their attributes and their inheritance.

Mash bundles a slighly extended RDFS profile which aims to contain the same information as a UML Class diagram as a form of lingua franca between different modelling paradigms.

The vision is to use the profile for code generation, visualization and translation between modelling paradigms. The primary tooling built around it right now is the Mash RDFS visualization tools described in the README, these specifically allow you to:

LinkML

LinkML is another tool that helps with describing information using different technologies. Mash allows you to translate a Mash profile into a LinkML schema, which can be used to generate a ton of different resources (validation schemas, SQL DDL statements, diagrams and so on).

This logic lives inside of mash.interop.linkml. Making a LinkML schema from a profile is done using schema_from_profile. At this point LinkML exporters can easily be used to generate other resources from them.

SHACL shapes are the only resource Mash currently bundles support for, through the tools:

Others

As a tool for describing information using RDF mash needs to understand multiple other technologies and profiles. These could be related technologies to RDF itself, like XML datatypes - or they could be common web standards like IANA Application types (formerly MIME types).