J. Logic Programming · 2000

Recursive Query Plans for Data Integration

Recursive query plans settle three open problems in data integration: maximal answers for arbitrary recursive queries, exploiting functional dependencies, and handling binding-pattern limitations.

Abstract

Generating query-answering plans for data integration systems requires to translate a user query, formulated in terms of a mediated schema, to a query that uses relations that are actually stored in data sources. Previous solutions to the translation problem produced sets of conjunctive plans, and were therefore limited in their ability to handle recursive queries and to exploit data sources with binding-pattern limitations and functional dependencies that are known to hold in the mediated schema. As a result, these plans were incomplete w.r.t. sources encountered in practice (i.e., produced only a subset of the possible answers). We describe the novel class of recursive query answering plans, which enables us to settle three open problems. First, we describe an algorithm for finding a query plan that produces the maximal set of answers from the sources for arbitrary recursive queries. Second, we extend this algorithm to use the presence of functional and full dependencies in the mediated schema. Third, we describe an algorithm for finding the maximal query plan in the presence of binding-pattern restrictions in the sources. In all three cases, recursive plans are necessary in order to obtain a maximal query plan.

Publication details

Venue
Journal of Logic Programming
Year
2000
Authors
Oliver M. Duschka, Michael R. Genesereth, Alon Y. Levy
Volume
43(1)
Pages
49–73
Citations
263 Google Scholar, August 2026
DOI
10.1016/S0743-1066(99)00025-4

Cite this paper

@article{duschka2000recursive,
  author  = {Oliver M. Duschka and Michael R. Genesereth and Alon Y. Levy},
  title   = {Recursive Query Plans for Data Integration},
  journal = {Journal of Logic Programming},
  volume  = {43},
  number  = {1},
  pages   = {49--73},
  year    = {2000},
  doi     = {10.1016/S0743-1066(99)00025-4}
}

Elsewhere