RDFlib Reasoning Profiles implementation


Supervisory Chair



The Resource Description Framework (RDF) is a data standard used to define Knowledge Graphs which can then be used in Semantic Web and Linked Data applications.

Systems can perform calculations on RDF data to build - infer - new knowledge. For example, if PersonA hasParent PersonB and PersonB hasParent PersonC, RDF reasoning can infer that PersonA hasGrandparent Person C and perhaps even that PersonC hasChild PersonB.

One of the widely-used toolkits for RDF manipulation is Python’s open source RDFlib. RDFlib is community-driven and adopts features that the community requests and that they create. Complex features sometimes require lots of skills and time to implement, due to the complex nature of some elements of RDF.

RDFlib includes an add-on package to do some forms of reasoning, but there are many forms of reasoning and the RDFlib maintainers want to implement some of the others. Currently supported are the “RDFS” and “OWL RL” profiles of reasoning, but we want “OWL EL” & “OWL QL” implemented also.

This project will see both implementations of OWL EL & QL and also a summary of the reasoning capabilities of RDFlib produced, so that the RL, EL & QL reasoning can be extended for other purposes.


  1. Implement OWL EL & QL reasoning in RDFlib’s reasoning toolkit
    1. Building on the OWL RL implementation
  2. Benchmark RDFlib’s reasoning performance with other non-RDFlib reasoning implementations
  3. Report on computational bottlenecks

Stretch goal:

  1. Explore SPARQL query rewriting using reasoning

Student Outcomes

  1. Deep technical understanding of RDF, OWL & Knowledge Graphs
  2. Understanding how some forms of rule-based reasoning is implemented
  3. Experience in implementing resource-intensive software and considerations of processing efficiency
  4. Contribution to Open Source software
  5. Experience dealing with open review of your work
    1. By other contributors to RDFlib


This is a highly challenging project and will require either an advanced undergraduate Computer Science or Software Engineering student, or a Masters-level student.

This task’s scope can be altered to meet a student’s availability, so a student will be selected on aptitude and qualifications (university scores) and the scope adjusted for the candidate.

Minimum Requirements:

- Deep understanding of Graphs and Graph Theory
- Advanced Math Skills, at least deep knowledge of logic and set theory, mathematical reasoning, mathematical induction
- Advanved Python Skills

- Prior knowledge of RDF/OWL and understanding of the formal semantics of OWL

Updated:  10 August 2021/Responsible Officer:  Dean, CECS/Page Contact:  CECS Marketing