Ensures a fresh-enough RDF file is downloaded and extracted.

        Returns True on error.

def download_rdf(self, force=False):
        """Ensures a fresh-enough RDF file is downloaded and extracted.

        Returns True on error."""
        if self.downloading:
            return True

        if not force and (os.path.exists(RDF_PATH) and
                (time.time() - os.path.getmtime(RDF_PATH)) < RDF_MAX_AGE):
            return False
        self.downloading = True
        logging.info('Re-downloading RDF library from %s' % RDF_URL)
        try:
            shutil.rmtree(os.path.join(self.rdf_library_dir, 'cache'))
        except OSError as e:
            # Ignore not finding the directory to remove.
            if e.errno != errno.ENOENT:
                raise

        try:
            with open(RDF_PATH, 'w') as f:
                with requests.get(RDF_URL, stream=True) as r:
                    shutil.copyfileobj(r.raw, f)
        except requests.exceptions.RequestException as e:
            logging.error(e)
            return True

        try:
            with tarfile.open(RDF_PATH, 'r') as f:
                f.extractall(self.rdf_library_dir)
        except tarfile.TarError as e:
            logging.error(e)
            try:
                os.unlink(RDF_PATH)
            except:
                pass
            return True
        self.downloading = False
        return False