  Modern, inherently dynamic systems are usually characterized by a network
structure, i.e. an underlying graph topology, which is subject to discrete
changes over time. Given a static underlying graph $G$, a temporal graph can be
represented via an assignment of a set of integer time-labels to every edge of
$G$, indicating the discrete time steps when this edge is active. While most of
the recent theoretical research on temporal graphs has focused on the notion of
a temporal path and other "path-related" temporal notions, only few attempts
have been made to investigate "non-path" temporal graph problems. In this
paper, motivated by applications in sensor and in transportation networks, we
introduce and study two natural temporal extensions of the classical problem
Vertex Cover. In both cases we wish to minimize the total number of "vertex
appearances" that are needed to "cover" the whole temporal graph. In our first
problem, Temporal Vertex Cover, the aim is to cover every edge at least once
during the lifetime of the temporal graph, where an edge can be covered by one
of its endpoints, only at a time step when it is active. In our second, more
pragmatic variation Sliding Window Temporal Vertex Cover, we are also given a
natural number $\Delta$, and our aim is to cover every edge at least once at
every $\Delta$ consecutive time steps. We present a thorough investigation of
the computational complexity and approximability of these two temporal covering
problems. In particular, we provide strong hardness results, complemented by
various approximation and exact algorithms. Some of our algorithms are
polynomial-time, while others are asymptotically almost optimal under the
Exponential Time Hypothesis (ETH) and other plausible complexity assumptions.
