TL;DR: The Qanary framework takes a best-of-breed approach to the integration of Question Answering (QA) components. It enables rapid development of QA systems that are flexible, extensible, reusable and provide built-in features to measure the quality of the QA quality.
Qanary is a methodology for creating Question Answering Systems it is part of the WDAqua project where question answering systems are researched and developed. For all the publications related to Qanary please see the section publications. W.r.t. questions, ideas or any feedback related to Qanary please do not hesitate to contact the core developers. However, if you like to see a QA system built using the Qanary framework, one of our core developers has built a complete end-to-end QA system that allows to query several RDF data stores: http://wdaqua.eu/qa.
Please go to the GitHub Wiki page of this repository to get more insights on how to use this framework, how to add new components etc.
Here, we provide our key contributions on top of the RDF vocabulary qa: the reference implementation of the Qanary methodology. This repository contributes several sub-resources for the Question Answering Community to build knowledge-driven QA systems incorporating a standard RDF vocabulary named "qa".
All the resources are reusable. For a detailed description of individual resources, we kindly refer to the Wiki section of this repository. The Qanary Question Answering components maintained by the core developers are available here (in a separated Git repository); it contains typical components that where provided from and for the community. They are required to first clone the Qanary framework repository and execute mvn install
.
Although many components are available already, this is still just the beginning, many more components will be published soon.
The following sub-projects are part of the Qanary core frameworks:
- Qanary Pipeline implementation: a central component where components for question answering systems are connected automatically and can be called by Web UIs
- Qanary component implementations: components providing wrappers to existing functionality or implement new question answering approaches
- a Qanary component template implementation: use this to build you own component (howto) as it provides several features
- the additional resource QALD evaluator: a client for the Qanary Pipeline evaluating the capabilities w.r.t. named entity recognition and disambiguation of a given Qanary Pipeline configuration with the QALD benchmark (Question Answering over Linked Data) data
- QALD annotated with named entities: questions of QALD annotated with named entities containing
More details follow soon.
More details follow soon.
More details follow soon.
More details follow soon.
If you want to inform yourself about the Qanary methodology in general, please use this publication: Andreas Both, Dennis Diefenbach, Kuldeep Singh, Saedeeh Shekarpour, Didier Cherix and Christoph Lange: Qanary - A Methodology for Vocabulary-driven Open Question Answering Systems appearing in 13th Extended Semantic Web Conference, 2016.
For additional publications, we suggest to follow this list of publications
- Spring Boot project
How to build a complete tiny Question Answering system driven by Qanary is described here.
-
Clone the GitHub repository:
git clone https://github.com/WDAqua/Qanary
-
Install Java 8 or higher (see http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html for details)
-
Install Maven 3.5.2 or higher (see https://maven.apache.org/install.html for details)
-
Install Stardog Triplestore (http://stardog.com/) and start it in the background. Create a database with the name qanary. All the triples generated by the components will be stored in the qanary database. We use version 7 of Stardog.
-
Switch to Qanary directory:
cd Qanary
-
Configure your pipeline appropriately. A common pitfall is the Stardog Triplestore. If you're using a regular Stardog Triplestore running locally on port
5280
with the databaseqanary
and the credentialsadmin
/admin
, simply use the following configuration:
stardog.url=http://127.0.0.1:5820/qanary
stardog.username=admin
stardog.password=admin
- Build the components (creating Docker images and deployment to Maven central are skipped):
mvn clean install -Ddockerfile.skip=true -Dgpg.skip
- Run the pipeline component:
cd qanary_pipeline-template/target/
java -jar target/qa.pipeline-<version>.jar
- After running the corresponding component JAR files, you can see the Spring Boot application running on http://localhost:8080/#/overview that will tell the status of currently running components.
- To run components you need to build and run Qanary components, see the components repository for details: Qanary Question Answering components
- Now your pipeline is ready to use. Go to http://localhost:8080/startquestionansweringwithtextquestion. Here you can find a User Interface to interact for adding a question via web interface, and then select the components you need to include in the pipeline by checking a checkbox for each component. Press the start button and you are ready to go!
-
Follow the steps described in the previous section.
-
Install the Docker environment (see https://docs.docker.com/engine/installation/ for details)
-
Start the Docker service (see https://docs.docker.com/engine/admin/ for details)
-
Configure your pipeline as needed. Not doing so can cause the pipeline to fail.
-
Build your project using maven:
mvn clean install
(note: you might also add-Ddockerfile.skip=false
to express that Docker images are created)- The install goal will compile, test, and package your project’s code and then copy it into the local dependency repository. Additionally, it will generate docker images for each component that will be stored in your local repository.
-
Start the Qanary Docker containers.
-
Now your pipeline is ready to use. Go to http://localhost:8080/startquestionansweringwithtextquestion. Here you can find a User Interface to interact for adding a question via web interface, and then select the components you need to include in the pipeline by checking a checkbox for each component. Press the start button and you are ready to go!
- Our Wiki page contains all the information about how to integrate a new component and describes also the easy usability of the Qanary framework. We have illustrated the inclusion of a new component with an example on the Wiki page. Please take a look at it.