In a relational database, a view is a query that is stored in the database and it is queried as if it were a stored relation. In some situations, the user is allowed to perform updates on the view and these updates are reflected back to the query source; this process is called view update.
The view update problem is the problem to decide if and how a set of updates performed on a view can be reflected to the original database. This problem has been studied in literature for more than thirty years over relational and XML data but there aren't strong results for this problem over graph data.
Bidirectional programming is a recent strategy to approach the view update problem. It is based on operators that define two different functions at the same time: the first one (get) computes a view from the original data and the second one (put) compute an updated version of the original data starting from an updated view and the original data.
Resource Description Framework (RDF) is a set of specifications used to describe graph models. SPARQL is the query language for RDF. RDF and SPARQL are both recommended by W3C.
We want to study is the application of the bidirectional programming strategy to the view update problem for SPARQL views defined over RDF data.
The idea is to use a relational representation of SPARQL queries. In this representation the RDF data is described by a table with tree attributes: subject, predicate and object; the SPARQL queries are translated by relational expressions, expressed in a bidirectional language.
Unfortunately, the bidirectional versions of some relational operators have strong restrictions and can't be used in typical graph queries. Moreover there are some relational operators where a bidirectional semantic has not yet been defined.
In this work we approach these two problems; we study how to relax the restrictions defined on some bidirectional operators, and we define a bidirectional version of operators that do not have one. The aim of our work is to produce a set of bidirectional operators that can handle most of the real world scenarios of view update over graph data.