Warning: This document is for an old version of RDFox.

1. Introduction

RDFox is a main-memory, scalable, centralized data store that allows users to efficiently manage graph-structured data represented according to the RDF data model and query that data using the SPARQL 1.1 query language.

RDFox also enables intelligent information processing by providing means for representing and reasoning with domain knowledge in the form of rules and ontological axioms. Rules in RDFox can be represented using a powerful extension of the well-understood Datalog language, whereas ontology axioms can be represented in the standard ontology language OWL 2.

RDFox runs on Linux, macOS, and Windows. It can be integrated as a library into Java applications using an efficient native API. It can also be used as a standalone server accessible via a RESTful API. These versatile modes of use, combined with the very efficient storage and reasoning capabilities, make RDFox suitable for a wide range of application scenarios.

1.1. How to Read this Documentation

We next provide a brief overview of each section in the documentation.

  • Section 2 details the main features of RDFox along with the requirements for running the software.

  • Section 3 contains our Getting Started guide, which will walk you through your first experience with RDFox. The section covers three different ways of interacting with RDFox: using the shell commands, using an API (the section covers the REST API, but a Java API is also available for programmatic access), and using our visual Web console. For each mode of interaction, you will learn how to create a data store, load some sample data from a file, import rules and additional data, perform reasoning, query the store using SPARLQ, and delete information from the store. Read this section if you have never used RDFox before.

  • Section 4 describes querying in RDFox. It assumes that readers are familiar with the RDF 1.1 and SPARQL 1.1 standards, and hence the focus is on describing how the standards are supported rather than on describing the standards themselves. We also provide a detailed description of the proprietary extensions of SPARQL 1.1 provided in RDFox and illustrate their use by means of examples. Finally, this section also describes how to access and visualize query plans in RDFox as well as how to monitor query execution. If you are unfamiliar with RDF 1.1 and SPARQL 1.1, please take a look at the corresponding specification documents for RDF 1.1 and SPARQL 1.1; there also quite a number of tutorials on RDF and SPARQL available on the Web.

  • Section 5 focuses on reasoning. In contrast with Section 4, we do not assume in this section any prior knowledge about reasoning, ontologies, or rules. It is written in a tutorial style with many examples that you can readily execute using RDFox. This section will

    • walk you through the main concepts underpinning reasoning in RDF;

    • introduce the core Datalog rule language and its extensions;

    • define the rule language supported in RDFox;

    • describe common uses of rules in practice;

    • describe the support for OWL 2 ontologies in RDFox and clarify the relationships and differences between rules and ontologies;

    • describe how the results of reasoning can be explained using proofs; and

    • show how the process of reasoning can be monitored.

  • Section 6 describes how information is structured in RDFox at a conceptual (i.e., API-independent) level. In particular, it describes the relationships between the different elements of information stored in the system (e.g., data stores, tuple tables, and so on) and how these can be accessed. This section provides the basis for understanding the functionality provided by both the APIs and the shell and will give you an insight on the design choices made in RDFox.

  • Section 8 provides a detailed reference to the Java and the REST APIs and how they can be used to access the different information elements in a data store as described in Section 6. This section should be used as a reference and can be skipped on a first read of the docs.

  • Section 7 describes transactions in RDFox both conceptually and at the API level. RDFox supports transactions with ACID properties. This section describes the different types of transactions available in RDFox, how they can be executed concurrently and how their results can be persisted on disk.

  • Section 9 describes the role-based access control model in RDFox. In RDFox we can define groups of users and assign to each group access privileges over the different information resources described in Section 6 (e.g., data stores, tuple tables, and so on). This section provides a detailed overview of the types of access privileges that can be assigned to resources and how these are managed.

  • Section 10 provides a detailed reference to the shell commands available in RDFox. This section should be used as a reference and can be skipped on a first read of the docs.