def _read_schema(self):
cache_filename = os.path.join(<EOL>CACHE_ROOT, "<STR_LIT>" % self._representation)<EOL>log.info("<STR_LIT>" % cache_filename)<EOL>try:<EOL><INDENT>if time.time() - os.stat(cache_filename).st_mtime > CACHE_EXPIRY:<EOL><INDENT>log.warning("<STR_LIT>")<EOL>self._pull_schema_definition(cache_filename)<EOL><DEDENT><DEDENT>except OSError:<EOL><INDENT>log.warning("<STR_LIT>")<EOL>self._pull_schema_definition(cache_filename)<EOL><DEDENT>else:<EOL><INDENT>log.info("<STR_LIT>")<EOL><DEDENT>return cache_filename<EOL>
return the local filename of the definition file for this schema
        if not present or older than expiry, pull the latest version from
        the web at self._ontology_file