Hyperlog is a declarative, graph-based language that supports database quer
ying and update. It visualizes schema information, data, and query output a
s sets of nested graphs, which can be stored, browsed, and queried in a uni
form way. Thus, the user need only be familiar with a very small set of syn
tactic constructs. Hyperlog queries consist of a set of graphs that are mat
ched against the database. Database updates are supported by means of progr
ams consisting of a set of rules. This paper discusses the formulation. eva
luation, expressiveness, and optimization of Hyperlog queries and programs.
We also describe a prototype implementation of the language and we compare
and contrast our approach with work in a number of related areas, includin
g visual database languages, graph-based data models, database update langu
ages, and production rule systems.