Skip to content

Release notes

mweyns edited this page Mar 18, 2018 · 37 revisions

This page contains for each release the following items:

  • A reference to the release
  • How the release can be tested
  • What new functionality is featured

Release 0.1

This release can be found here.

The app can accessed at http://193.190.127.184/. Should these be desired, the release referenced above also contains build instructions.

The current release features a basic setup, which contains both a functional model and the skeleton of a GUI. Specifically, the model provides the following functionality:

  • Register observers and notify these observers of any changes to the model data (upon the completion of a task).
  • Change the model state by setting components; any changes are added to a change buffer, which is used to notify observers.
  • Schedule tasks for execution and execute these tasks in a FIFO manner.

While it has been implemented, as of yet none of the model's functionality actually impacts what the user can do. Later on, interactions between users and the graphical user interface will percolate throughout the architecture, requiring functionality offered by the model, persistence layer, etc. but for now, interaction is limited to the GUI component alone. Functionality offered by the GUI is the following:

  • A zoom slider which can be moved, but otherwise does not have any use as of yet.
  • A side menu which can be toggled in the upper left corner of the screen, containing a few mock building blocks.
  • Four buttons (Import Project, Save Project, Import Graph, Save Graph) which can all be clicked, but only Import Graph is already partially implemented and causes a file picker to pop up, limiting the available extension types to .n3, .rdf, and .ttl, which are the only graph formats we support.

Release 0.2

This release can be found here.

The app (in its released version) can still be accessed at http://193.190.127.184/. And should these be desired, the release referenced above also contains build instructions. It is also worth noting that we now have 'nightly' builds set up, which contains whatever is currently merged into the master branch of the UnSHACLed repository. This version can be found at http://193.190.127.184:8800. At the time of this release, the app and the 'nightly' build of the app will of course coincide.

The current release features a much improved GUI with the following functionality:

  • On the main page
    • A link to an "About" page. As of yet, this "About" page contains only placeholder text.
    • A link to a "Contact" page. As of yet, this "Contact" page does not contain any actual contact information.
    • A link to the UnSHACLed repository.
    • A link to these release notes.
    • A link to the main page.
    • A "Sign-up" button, which does not work yet.
    • A "Login" button, which redirects the user to the login page.
  • On the login page
    • Again, a "Login" button and a "Sign-up" button. The "Login" button redirects the user to the visual editor, given that he/she has filled in something in both the "Username and Password" fields. The "Sign-up" button has the same functionality as before.
    • "Username" and "Password" fields, which both do not support actual authentication and authorization yet and display messages to that effect.
  • On the visual editor page
    • The same four buttons as in the previous release are displayed at the top, with the same functionality. Additionally, there are buttons linking to the UnSHACLed repository and to these release notes, as well as a "Logout" button which returns the user to the login page.
    • The side menu containing the mock building blocks no longer has to be toggled and also features a search bar, allowing the user to easily filter the building blocks based on a search string.
    • An drop down menu just above the side menu, allowing the user to switch between the building blocks and a mock project structure.
    • A canvas containing two connected nodes, which can be dragged either individually or together.

The model functionality has remained unchanged since the last release.

While not yet integrated with the GUI (this should be happening very soon), a big addition to this release is the persistence layer, which now fully provides functionality for loading from and saving to files containing RDF code in four different formats: Tutrle, N-Quads, N-Triples, and TriG. The functionality of the persistence layer is best understood in terms of these two functions (here explained in terms of graphs, but this can be extended to any sort of file content):

  • Loading a file as a Graph into the Model
    1. find(module) is called by the GUI with module being an object of type Module containing three parts: a type which indicates the ModelComponent type under to which the component must be mapped in the Model; a name which functions as identifier when one wants to retrieve the specific graph from the Component of which it is a part; and a target, which is the Blob representing the file chosen by the user.
    2. readFromFile(module, save) is called by the Data Access Object on the IOFacilitator. Here, save is a callback containing the actual task of saving the loaded data to the Model.
    3. The FileReader API is used to read the contents of the Blob.
    4. The contents of the file are parsed by the GraphParser using the N3.js library.
    5. The parsed Graph object is stored into a Component, which is then stored into the model using the callback provided in step 2 (which contains calls to the Model's schedule(task) and processTask() functions).
  • Saving a Graph to a file from the Model
    1. insert(module) is called by the GUI with the module being the same as previously described. However, this time the target will contain an empty Blob, containing only the correct Mime type.
    2. schedule(task) and processTask() are called to retrieve the correct Component from the Model, from which then the Graph can be retrieved using the identifier from the Module.
    3. writeToFile(module, data) is called by the Data Access Object on the IOFacilitator. Here, data is the Graph retrieved from the Model in the previous step.
    4. The Graph object is serialized by the GraphParser to a string containing its encoded representation using the N3.js library.
    5. The string representation is saved to a file using the FileSaver API.
Clone this wiki locally