Introduction

Extended Property Paths (EPPs) are a significant enhancement of SPARQL 1.1s property paths (PPs). Like PPs, EPPs allow writing navigational queries concisely, but EPPs offer novel features that allow expressing a larger class of navigational queries.  In particular, EPPs enhance the expressiveness of Nested Regular Expressions and property paths with path conjunction, negation and powerful types of tests while preserving compatibility with the standard. With EPPs we formalize the informal description about translating property paths into triple patterns provided in the W3C specification. Our formalization enables to precisely characterize a larger fragment of SPARQL that can be captured in a succinct way via EPPs.

The following figure shows the syntax of EPPs.

The syntax of EPPs is specified in the grammar reported in Table 1. EPPs extend property paths with new constructs to express paths  involving path conjunction (epp1&epp2), path negation (epp1epp2) and different types of tests (test) within an expression, also by specifying the starting and ending positions (pos). EPPs enable to test from each of the subject, predicate and object positions in RDF triples, mapped in the syntax to the position symbols _s, _and _o, respectively.

In the production rule base, EExp (not reported here for sake of space) represents an extension of the production rule [110] in the SPARQL grammar (http://www.w3.org/TR/sparql11-query/#rExpression) where BuiltInCall (http://www.w3.org/TR/sparql11-query/#rBuiltInCall) is substituted with EBuiltInCall , which enables to use in EPPs several types of tests available in SPARQL (e.g., built-in calls). Starting and ending positions for a test do not need to be always specified; by default a test starts from the subject (_s) and ends on the object (_o). Tests (test) can be of different types: a simple checking for the existence of a URI or a nested EPP TP(pos,epp), which corresponds to the evaluation of epp starting from a position pos. A test can also be of type T, which is a SPARQL boolean expression.  As for the nested expressions, the evaluation returns true if there exists at least one node that can be reached via epp, false otherwise. Tests can also be combined by using the logical operators and (&&), or (||) and not (!).  Tests (and paths) have a starting and ending position. A test by default starts on the subject of a triple and ends on the object of the last triple involved in the test. A test over a single predicate corresponds to the traversal of an edge. Positions in a pos test pos enable to perform joins starting from and ending to any position of an RDF triple.