$$%% examples \newcommand{\exGraph}{\graph_{\mathrm{ex}}} \newcommand{\exOnto}{\onto_{\mathrm{ex}}} \newcommand{\exMappings}{\mappings_{\mathrm{ex}}} \newcommand{\exExtensions}{\extensions_{\mathrm{ex}}} \newcommand{\exRule}{r_{\mathrm{ex}}} \newcommand{\RDFSrules}{\rules_{\mathrm{RDFS}}} %% RDF \newcommand{\triple}[3]{(#1, #2, #3)} \newcommand{\tuple}[1]{\langle #1 \rangle} \newcommand{\subject}{\mathtt{s}} \newcommand{\prop}{\mathtt{p}} \newcommand{\object}{\mathtt{o}} \newcommand{\blank}{\_{:}b} \newcommand{\blankn}[1]{\_{:}#1} \newcommand{\irin}[1]{{:}\mathrm{#1}} \newcommand{\class}{\mathtt{c}} \newcommand{\nsrdf}{\mathrm{rdf{:}}} \newcommand{\nsrdfs}{\mathrm{rdfs{:}}} \newcommand{\rdftype}{\mathrm{rdf{:}type}} \newcommand{\rdfLiteral}{\mathrm{rdf{:}Literal}} \newcommand{\rdfssubClassOf}{\mathrm{rdfs{:}subClassOf}} \newcommand{\rdfssubPropertyOf}{\mathrm{rdfs{:}subPropertyOf}} \newcommand{\rdfsdomain}{\mathrm{rdfs{:}domain}} \newcommand{\rdfsrange}{\mathrm{rdfs{:}range}} \newcommand{\rdfsClass}{\mathrm{rdfs{:}Class}} \newcommand{\rdfProperty}{\mathrm{rdf{:}Property}} \newcommand{\xsdint}{\mathrm{xsd{:}int}} %% \newcommand{\type}{\tau} \newcommand{\subclass}{\prec_{sc}} \newcommand{\subproperty}{\prec_{sp}} \newcommand{\domain}{\hookleftarrow_{d}} \newcommand{\range}{\hookrightarrow_{r}} \newcommand{\rdfentailment}{\vdash_{^\mathrm{RDF}}} \newcommand{\RDFS}[1]{\mathrm{RDFS}(#1)} \newcommand{\aka}{a.k.a.~} \newcommand{\etc}{etc} \newcommand{\wrt}{w.r.t.~} \newcommand{\st}{s.t.~} \newcommand{\ie}{i.e.,~} \newcommand{\eg}{e.g.,~} \newcommand{\graph}{G} \newcommand{\rules}{\mathcal{R}} \newcommand{\sources}{\mathcal{S}} \newcommand{\views}{\mathcal{V}} \newcommand{\extensions}{\mathcal{E}} \newcommand{\onto}{\mathcal{O}} \newcommand{\mappings}{\mathcal{M}} \newcommand{\modelsrdf}{\models_\rules} \newcommand{\bgp}{P} \newcommand{\Bl}[1]{\mathrm{Bl}(#1)} \newcommand{\Val}[1]{\mathrm{Val}(#1)} \newcommand{\Var}[1]{\mathrm{Var(#1)}} \newcommand{\ext}[1]{\mathrm{ext}(#1)} \newcommand{\cert}{\mathrm{cert}} \newcommand{\ans}{\mathrm{ans}} \newcommand{\query}{\leftarrow} \newcommand{\body}[1]{\textrm{body}(#1)} \newcommand{\head}[1]{\textrm{head}(#1)} \newcommand{\cs}{\mathrm{cs}} \newcommand{\lcs}{\mathrm{lcs}} \newcommand{\cl}{\mathrm{cl}} \newcommand{\lua}{\mathrm{lua}} \newcommand{\lur}{\mathrm{lur}} \newtheorem{lemma}{Lemma} \newtheorem{definition}{Definition} \newtheorem{problem}{Problem} \newtheorem{property}{Property} \newtheorem{corollary}{Corollary} \newtheorem{example}{Example} \newtheorem{theorem}{Theorem} \newcommand{\URIs}{\mathscr U} \newcommand{\IRIs}{\mathscr I} \newcommand{\BNodes}{\mathscr B} \newcommand{\Literals}{\mathscr L} \newcommand{\Variables}{\mathscr V} % DB \newcommand{\CQ}{\ensuremath{\mathtt{CQ}}\xspace} \newcommand{\UCQ}{\ensuremath{\mathtt{UCQ}}\xspace} \newcommand{\SQL}{\ensuremath{\mathtt{SQL}}\xspace} \newcommand{\rel}[1]{\mathsf{#1}} % Cost model \newcommand{\cans}[1]{|#1|_t} \newcommand{\cref}[1]{|#1|_r} \newcommand{\db}{\mathtt{db}} % DL \newcommand{\cn}{\ensuremath{N_{C}}\xspace} \newcommand{\rn}{\ensuremath{N_{R}}\xspace} \newcommand{\inds}{\ensuremath{N_{I}}\xspace} \newcommand{\ainds}{\ensuremath{\mathrm{Ind}}\xspace} \newcommand{\funct}{\mathit{funct} \ } \newcommand{\KB}{\mathcal{K}\xspace} \newcommand{\dlr}{DL-Lite$_{\mathcal{R}}$\xspace} % Logics \newcommand{\FOL}{\ensuremath{\mathtt{FOL}}\xspace} \newcommand{\datalog}{\ensuremath{\mathtt{Datalog}}\xspace} \newcommand{\dllite}{DL-Lite\xspace} \newcommand{\true}{\mathrm{true}} \newcommand{\false}{\mathrm{false}} \newcommand{\dis}{\mathtt{dis}} \newcommand{\vars}[1]{\ensuremath{\mathrm{vars}(#1)}} %\newcommand{\terms}[1]{\ensuremath{\mathrm{terms}(#1)}} %math \renewcommand{\phi}{\varphi} \newcommand\eqdef{\stackrel{\mathclap{\normalfont\mbox{def}}}{=}} \newcommand\restr[2]{#1_{|#2}} \newcommand{\ontoBody}[1]{\mathrm{body}_\onto(#1)} %proof of the rewriting theorem \newcommand{\rdfGraph}{\graph^{\mappings}_{\extensions}} \newcommand\systemGraph{\graph^{\mappings \cup \mappings^{\text{STD}}_\onto}_{\extensions \cup \extensions_\onto}} \newcommand\viewsGraph{\graph^{\mappings^{\rules,\onto} \cup \mappings^{\text{STD}}_\onto}_{\extensions \cup \extensions_\onto}} \newcommand{\standMappings}{\mappings^{\text{STD}}_\onto} \newcommand{\reminder}[1]{[\vadjust{\vbox to0pt{\vss\hbox to0pt{\hss{\Large $\Longrightarrow$}}}}{{\textsf{\small #1}}}]} %\newcommand{\FG}[1]{\textcolor{blue}{\reminder{FG:~#1}}} \newcommand{\extVersion}{false} \newcommand{\printIfExtVersion}[2] { \ifthenelse{\equal{\extVersion}{true}}{#1}{} \ifthenelse{\equal{\extVersion}{false}}{#2}{} } \newcommand{\bda}{\true} \newcommand{\ifBDA}[2]% {% \ifthenelse{\equal{\bda}{true}}{#1}{}% \ifthenelse{\equal{\bda}{false}}{#2}{}% } %%% Local Variables: %%% TeX-master: "paper" %%% End: $$

OBDA Sub-Problems

In this posts, we will explore the objects appearing in query answering in OBDA system. We have introduce what we call an RDF integration system denoted \(\langle \onto, \rules, \mappings, \extensions \rangle\), where \(\onto\) is an ontology, \(\rules\) is reasoning rules set, \(\mappings\) is a mappings set and \(\extensions\) is a set of RDF extensions.

Mappings

To define a OBDA system, it is easy to define each mapping as GLAV mapping of the form:

\[m: q_{1}(\bar x) \leadsto q_{2}(\bar x)\]

We will see in the following how we can benefit from a intermediate view \(V_{m}\), defining a new extension set, to split the mapping \(m\) into one LAV and one GAV mapping as follow:

  • a GAV mapping between the source query and the view \(q_{1}(\bar x) \leadsto V_{m}(\bar x)\);
  • a LAV mapping between the view and the query on the global schema, \(V_{m}(\bar x) \leadsto q_{2}(\bar x)\)

In this section, we will redefine previous GLAV mapping to common GLAV mappings on heterogeneous sources using the splitting GAV-LAV. Then, we will see how we can minimize mappings set using this new definition.

Definitions of View based GLAV Mappings

Traditionally in a GLAV mapping \(m\), \(q_{1}\) is a query in one data source, hence if we have two sources as follow:

  1. \(\mathrm{Collection}(user, doc)\) containing the collection of documents of each user;
  2. \(\mathrm{Topic}(doc, topic)\) containing the topic of each document.

It is not possible to define a GLAV mapping exposing the user documents topics of the users, without revealing the users collections. Such mapping would be the following: \[\mathrm{Collection}(user, doc) \wedge \mathrm{Topic}(doc, topic) \leadsto \triple{user}{\irin{haveDocumentOn}}{topic}\]

We notice that this mapping have a body joining two different sources, which is not supported by the GLAV mapping definition.

An view based GLAV mappings collection is a pair of mappings sets \(\mappings = (\mappings_{V}, \mappings_{G})\), where \(\mappings_{V}\) is a set of GAV mappings whose bodies are conjunctive queries on one sources, called the views definitions of \(\mappings\) and \(\mappings_{G}\) is a set of GLAV mappings whose bodies are conjunctive queries using predicates from mappings heads of \(\mappings_{V}\), it is called GLAV mappings set of \(\mappings\).

We can define \(\mappings = (\mappings_{V}, \mappings_{G})\) a view based GLAV mappings collection for defining the previous mapping example. We start by defining \(\mappings_V\) the views definitions containing the two following mappings:

  1. for a view of the \(\mathrm{Collection}\) relation \[\mathrm{Collection}(user, doc) \leadsto V_{C}(user, doc)\]
  2. for a view of the \(\mathrm{Topic}\) relation \[\mathrm{Topic}(doc, topic) \leadsto V_{T}(doc, topic)\]

Then, we definite \(\mappings_{G}\) the GLAV mappings set containing one mapping: \[V_{C}(user, doc) \wedge V_{T}(doc, topic) \leadsto \triple{user}{\irin{haveDocumentOn}}{topic}\]

Minimization of View based GLAV Mappings

Inspired from dipintoOptimizingQueryRewriting2013, we can take advantage of the view based GLAV mapping representation to optimized the mapping set, by minimizing it.

Mapping Creating Schema

Mappings Generation

  • look at the problem of generating mapping from spreadsheet (Question that comes up during Duc's defense)
  • look at the thesis of Ugo Camignani who investigate the problem of repairing mappings and rewriting mapppings in order that they respect some privacy constraints.

Query

Non Positive Query

OPTIONAL in SPARQL

SPARQL queries build with BGP and OPTIONAL operator are not positive queries, in the sense that we need the negation operator to express such queries. But OPTIONAL SPARQL queries are monotonous, which in OWA assumptions, means that the more the KB contains positive atoms, the more the query have answers and the number of its answers is independent of the number of negative atoms in the KB.

Update Query

The update query have been studied in:

Reasoning

Equality Dependency

Mediation