A prototype implementation of the query-comparison approach presented in "Graph-based QSS: A Graph-based Approach to Quantifying Semantic Similarity for Automated Linear SQL Grading" (will be published at the 21st Conference on Database Systems for Business, Technology and Web (BTW25)).
The prototype is written in Javascript and is made available via GitHub Pages.
The latest web version of the prototype can be found here.
Please note that with this type of deployment, the code runs entirely in your browser and, depending on the device you are using, execution may therefore be faster or slower.
The prototype can be built and used manually. To do this, the following steps must be followed:
In order to build the project, Node.js and its package manager NPM are required. Both can be found at the Node.js website.
After cloning the repository, the npm dependencies have to be installed.
This can be done by navigating the terminal to the repository's root directory and executing: npm install
In case of problems because of out-of-date dependencies, try running npm update
first.
It may take up to a few minutes.
There are several npm scripts provided for building and running the project.
-
npm run build-web
: Compiles the project into a browser-compatible JavaScript filehtml/js/index.js
. After this,html/index.html
can be opened with a browser to use the project in standalone mode. Or,html/js/index.js
can be copied into or referenced by a web-app intending to use it. -
npm run build-node
: Compiles the project into JavaScript files for Node.js into the createddist/
folder. After this, the project can be imported and used in other Node.js projects. -
npm test
ornpm run test
: Compiles the project likenpm run build-node
and then tests certain example calculations. If you are interested in examples for how to use this project, have a look intotest.js
. -
npm start
ornpm run start
: Starts a small HTTP server and opens a browser with the project in standalone mode. It has an auto-reload feature, automatically reloading the site when project files are altered, which is especially useful during development. Firefox is recommended over Chrome for this, because it automatically keeps the content of text fields across reloads. Note that this also applies to the edit cost configuration, so in order to reset it, the respective text field must first be cleared, followed by a reload. Also note that the server compiles the project internally, but does not generate the filehtml/js/index.js
, likenpm run build-web
does. -
npm run doc
: Generates a TypeDoc documentation of the project inside thedocs/
folder.
As part of the publication of our approach at BTW25, we are also taking part in the conference's reproducibility track.
Unfortunately, we can only offer certain aspects in our reproducibility efforts:
What we cannot offer:
- An automated method to repeat our survey, as a survey is dependent on human participants.
- An automated method to reproduce the manual corrections used in the survey, as they were created by humans with experience in grading exams.
- An automated method to reproduce the results of the dynamic analysis tool used in the survey, as it is currently heavily dependent on a GUI and therefore cannot be directly accessed via an API.
What we can offer:
-
All questions and unaggregated results of our survey. Since the survey was conducted in German, we also provide an English translation: Link to the survey
-
All manual corrections we had created, as they were used in the survey: Link to the manual corrections
-
The source code of the dynamic analysis tool, along with an explanation of how it can be deployed and used via a Docker container: Link to the dynamic analysis tool
-
(Our focus) A container that contains our graph-based QSS tool and with which our tool can be run again on the 11 pairs of student answers and sample solutions from the survey. With this we want to show that our prototype can really generate the results that were ultimately evaluated in the study: See next subsection.
To be able to use the container, you must have a containerization tool such as Docker or Podman installed. The container was mainly tested on Docker, but a test using Podman was also successful.
The container can be built using the following command (execute in the main folder of the repository):
docker build -t sql-query-distance .
(Replace docker
with podman
if you prefer to use Podman)
As part of our study, we ran our graph-based QSS tool on pairs of student answers and sample solutions for 11 scenarios.
With the following command, you can run the tool again on the scenarios used in the study and thus reproduce the results we evaluated with our survey:
docker run sql-query-distance