🕸 Merweb
Merweb (Mermaid meets Semantic Web) is library and command line interface to
generate SHACL shapes and vocabularies from Mermaid class diagrams.
Usage
- Install via
npm i -g merweb
. - Execute tool via
merweb -f path/to/diagram -s path/to/jsonld
.
You can try
merweb -f examples/diagram.txt \
-s shapes.jsonld \
-b "sc=https://w3id.org/idlab/ns/supply-chain/#" \
-v "sc=https://w3id.org/idlab/ns/supply-chain/#" \
-p "swrl=http://www.w3.org/2003/11/swrl#;owl=http://www.w3.org/2002/07/owl#" \
-c vocab.jsonld
or
merweb -f examples/diagram_with_supertypes.txt \
-s shapes.jsonld \
-b "ex=https://example.org/examples#" \
-v "ex=https://example.org/examples#" \
-p "swrl=http://www.w3.org/2003/11/swrl#;owl=http://www.w3.org/2002/07/owl#" \
-c vocab.jsonld
Examples
You can find example diagrams in the folder examples
.
Annotations
Memweb reuses one existing Mermaid annotation and
uses five new annotations to generate the correct shapes and vocabularies
from the class diagrams.
Below you can find a table of these annotations.
Annotation | Description | Shape | Vocabulary | Existing or new annotation |
---|
@type | The type of a class | Object of sh:targetNode | A rdfs:Class | New |
@superTypes | The super-types of a class | N/A | Object(s) of rdfs:subClassOf | New |
@extraTypes | The extra types of a class | Object of sh:property with rdf:type as sh:path | A rdfs:Class | New |
@label | The label of a class or property | N/A | Object of rdfs:label | New |
@comment | The comment of a class or property | N/A | Object of rdfs:comment | New |
Cardinality on a class attribute | The cardinality of datatype property | Objects of sh:minCount and sh:maxCount | N/A | New |
Cardinality on a relationship between two classes | The cardinality of object property | Objects of sh:minCount and sh:maxCount | N/A | Existing |
Please note that the annotations @type
, @superTypes
, and @extraTypes
assume a strict ordering:
@type
should always be declared before @superTypes
and @extraTypes
are declared. The internal ordering of the latter two can be arbitrary.
Remove annotations from diagrams
You can remove the annotations starting with @
from diagrams via the -r, --remove-annotations
option.
The changed diagram is outputted to the terminal.
merweb -f examples/diagram.txt -r
License
This code is copyrighted by Ghent University – imec and
released under the MIT license.