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 and in the Semantic Web Rule Language SWRL.
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 5 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 4 introduces the basic concepts of RDFox (e.g., data stores, tuple tables, and so on), and it describes the general principles that RDFox uses to store information. This section provides the basis for understanding the functionality provided by the RDFox APIs and the shell, and it will give you an insight into the design choices made in RDFox.
Section 6 focuses on reasoning. In contrast with Section 5, 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 7, Section 8, and Section 9 describe in more detail the server, data store, and tuple table components of RDFox. This includes discussing issues such as components’ internal structure, life cycle, and operations supported by the component. Moreover, these sections also document all configuration parameters that can be used to customize the respective components.
Section 10 describes the features of RDFox that can be used to access data stored in non-RDF data sources, such as CSV files, relational databases, and the Apache Solr index.
Section 11 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 4 (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 12 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 14 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 4. This section should be used as a reference and can be skipped on a first read of the documentation.
Section 15 provides a link to the Javadoc documentation for the Java API of RDFox.
Section 16 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 documentation.
Section 17 documents the official Docker images that can be used to run RDFox in a containerized application.