Awesome
UnSHACLed
Visual editor for shape constraint languages.
Contents
Overview
At the time of writing this editor supports SHACL, future support for ShEx is envisioned. This editor makes abstraction of specific constraint languages and exposes concepts in a simple visual interface.
Functionalities
- Drag and drop to rearrange the visualized shapes
- Add, remove and edit shapes, constraints and relationships
- View and edit namespaces and prefixes
- Import SHACL files in JSON and Turtle
- Export SHACL files in JSON and Turtle
- Import data files in JSON and Turtle
- View and edit data files in JSON format
- Validate data files
Concepts
An internal model is used to represent shapes which can be edited in the browser. Using existing shape files requires these to be imported and translated to this model before use. Editing is done in a visual editor.
Setup
To start the application, run the following commands:
- Install dependencies
npm install
- Compile and hot-reload for development
npm run serve
The documentation can be generated in /docs
using the following command:
npm run docs
Useful while developing: testing and linting
npm run test // Run tests
npm run lint // Check and fix code style
Compile and minify for production
Execute this command, then move the contents of /dist
into the gh-pages
branch. The application will be automatically deployed to UnSHACLed.com.
npm run build
Contribute
This section contains information to help contribute to this project. For more information about the project structure, the internal model et cetera, please consult the wiki.
Linting
To ensure code style consistency we use ESLint and Prettier which are configured in .eslintrc.js
.
Testing
Testing is done with Jest.js and Vue Jest. Unit tests are kept in the same directory as the classes they test and share the same filename but with extension e.g. somefile.js
and somefile.test.js
. All tests can be executed using the following command:
npm run test
Documentation
Make sure to document your code in JSDoc style. Documentation is generated using the command:
npm run docs
/* This comment should appear in the HTML documentation. */
// This is just a comment and should not be added to the HTML documentation.