FAQ

General

What is OWLIM?

OWLIM is the former name of GraphDB, which originally came from the term “OWL In Memory” and was fitting for what later became OWLIM-Lite. However, OWLIM-SE used a transactional, index-based file-storage layer where “In Memory” was no longer appropriate. Nevertheless, the name stuck and it was rarely asked where it came from.

Why a solid-state drive and not a hard-disk one?

We recommend using enterprise-grade SSDs whenever possible as they provide a significantly faster database performance compared to hard-disk drives.

Unlike relational databases, a semantic database needs to compute the inferred closure for inserted and deleted statements. This involves making highly unpredictable joins using statements anywhere in its indexes. Despite utilizing paging structures as best as possible, a large number of disk seeks can be expected and SSDs perform far better than HDDs in such a task.

Is GraphDB Jena-compatible?

Yes, GraphDB provides a standard SPARQL 1.1 endpoint so it is fully interoperable with any SPARQL 1.1 client, including Jena.

Can GraphDB run on Redhat or Centos?

Yes. GraphDB can run on any Linux distribution.

Can GraphDB load archived files?

GraphDB supports importing gzip and zip compressions.

Can I have a GraphDB Free Docker image?

Yes, but this is something you have to do manually, since GraphDB Free requires a request form. If you don’t have Makefile, you can run the docker build command directly:

docker build --no-cache --pull --build-arg edition=free --build-arg version=${VERSION} -t ontotext/graphdb:${VERSION}-free free-edition

Is there a Python/Java/C#/Javascript/REST API?

Configuration

How do I find out the exact version number of GraphDB?

The major/minor version and patch number are part of the GraphDB distribution .zip file name. They can also be seen at the bottom of the GraphDB Workbench home page, together with the RDF4J, Connectors, and Plugin API’s versions.

A second option is to run the graphdb -v startup script command if you are running GraphDB as a standalone server (without Workbench). It will also return the build number of the distribution.

Another option is to run the following DESCRIBE query in the Workbench SPARQL editor:

DESCRIBE <http://www.ontotext.com/SYSINFO> FROM <http://www.ontotext.com/SYSINFO>

It returns pseudo-triples providing information on various GraphDB states, including the number of triples (total and explicit), storage space (used and free), commits (total and whether there are any active ones), the repository signature, and the build number of the software.

What is a repository?

A repository is essentially a single GraphDB database. Multiple repositories can be active at the same time and they are isolated from each other.

How do I create a repository?

Go to Setup ‣ Repositories, and follow the instructions.

How do I retrieve repository configurations?

To see what configuration data is stored in a GraphDB repository, go to Repositories and use the Download repository configuration as Turtle icon.

_images/Repository_configuration.png

Then open the result file named repositoryname-config.ttl, which contains this information.

What is a location?

A location is either a local (to the Workbench installation) directory where your repositories will be stored or a remote instance of GraphDB. You can have multiple attached locations but only a single location can be active at a given time.

How do I attach a location?

Go to Setup ‣ Repositories. Click Attach remote location. For a location on the same machine, provide the absolute path name to a directory, and for a remote location, provide a URL through which the server running the Workbench can see the remote GraphDB instance.

Does GraphDB do backups on its own?

No, you have to automate the backup. GraphDB has full and incremental backup options. A cron job is reliable and easy to set up.

RDF and SPARQL

What does it mean when an IRI starts with urn:rdf4j:triple:?

When RDF-star (formerly RDF*) embedded triples are serialized in formats (both RDF and query results) that do not support RDF-star, they are serialized as special IRIs starting with urn:rdf4j:triple: followed by Base64 URL-safe encoding of the N-Triples serialization of the triple. This is controlled by a boolean writer setting, and is ON by default. The setting is ignored by writers that support RDF-star natively.

Such special IRIs are converted back to triples on parsing. This is controlled by a boolean parser setting, and is ON by default. It is respected by all parsers, including those with native RDF-star support.

See RDF-star and SPARQL-star.

Can I use SHACL with a specific context only?

No. Using SHACL with a specific context only is outside of the scope for standard SHACL. In the future, we may have a SHACL specification extension that covers this functionality.

Can I have partial inserts with SHACL?

No. Partial inserts support — such as blocking only the problematic data and letting the “good” data in — is unlikely to ever be implemented. If you allow partial insert, you limit traceability. There’s also the issue that your data may be recursively dependent, resulting in the need for extra checks.

Can I get performance information about my queries?

Press Shift-[Ctrl|Cmd]-Enter to get the explain plan, and see how the query would get evaluated.

Can I create groups of saved queries?

No. If you want different users to have access to different queries, you can do it by creating separate users.

Can I export a single named graph?

Yes. This can be done through the workbench UI or through the RDF4J’s REST API.

Security

Does GraphDB have any security vulnerabilities?

Every software potentially exposes security vulnerabilities, mainly when it depends on several third-party libraries like Spring, Apache Tomcat, JavaScript frameworks, etc. The GraphDB team does everything possible to constantly fix and discover new vulnerabilities using OWASP dependency check, Trivy, and Snyk packages. In addition, every GraphDB release is checked for any publicly known vulnerabilities and all suspected issues with score High are investigated.

Does the Log4Shell issue (CVE-2021-44228) affect GraphDB?

No, it is not affected. All GraphDB editions and plugins between 6.x and 9.x use Logback, but not Apache Log4j 2; thus, our users are safe in terms of CVE-2021-44228 (aka Log4Shell).

Troubleshooting

Why can’t I use custom rule file (.pie) — an exception occurred?

To use custom rule files, GraphDB must be running in a JVM that has access to the Java compiler. The easiest way to do this is to use the Java runtime from a Java Development Kit (JDK).

Why can’t I open GraphDB in MacOS?

If you receive an error message saying that MacOS cannot open GraphDB since it cannot be checked for malicious software, this is because the security settings of your Mac are configured to only allow apps from the App Store.

GraphDB is a developer-signed software, so in order to install it, you need to modify these settings to allow apps from both the App Store and identified developers.

You can find detailed assistance on how to configure them in the Apple support pages.

How to workaround “Insufficient disk space to start a transaction for repository” error?

GraphDB prevents you from starting transactions while you have critically low disk space. To disable this protection check, set graphdb.health.minimal.free.storage.enabled to false. Check the low disk space parameters documentation for more information.

The login form does not show up, security is on, and I cannot log in. What to do?

The login form is set to appear when graphdb.auth.methods is set to “gdb” or “openid”, or both. If you only have “basic”, this means that the database expects you to pass your username and password in the URL.

Why is the database storage not getting smaller when I delete triples?

Deleted data is kept inside the database, but marked as unavailable, so if you reload it, it would be fast. You can compact the indexes by using the rebuild option of the storage tool.