Define and run RedHandler red_exec red_import RFLO Init code Python Code code string Define and run RedHandler ") if isinstance(element_value, Literal): response.write("%s" % escape(element_value)) elif store.exists(element_value, TYPE, RDFNS["List"]): display(element_value) response.write("" % element_name) context["display_item"] = display_item def display(subject): for item in store.items(subject): outer_html = first(store.objects(item, RED2["outer_html"])) if outer_html: value = first(store.objects(outer_html, RED2["facet"])) or first(store.objects(outer_html, RED["codestr"])) value = "%s\n" % value context["inner_html"] = item exec_module(item, value) else: display_item(item) context["display"] = display path = URIRef("http://%s%s" % (request.get_header('Host'), request.get_path_info())) html = first(store.objects(path, ELEMENT["html"])) if html: response.write('''\ ''') display(html) response.write('''\ ''') else: response.set_reply_code(404) response.write("No XHTML found for %s" % path) response.close() ]]> Define and run RedHandler every: return 1 else: return 0 def update(self, url): if not isinstance(url, URIRef): url = URIRef(url) print " updating: %s" % url if not url in self.__stores: self.index.add(url, TYPE, SPIDER["URL"]) ts = TripleStore() ts.strict = 0 try: self.index.remove_triples(url, SPIDER["exception"], None) ts.load(url) if url.startswith("http://redfoot.net/") or url.startswith("http://eikeon.com/"): safe = 1 else: safe = 0 if not safe: FACET = URIRef("http://redfoot.net/2002/08/XHTMLinRDF#facet") CODESTR = URIRef("http://redfoot.net/2002/10/red#codestr") for s, p, o in ts: if p==FACET or p==CODESTR: ts.remove(s, p, o) self.__stores[url] = ts self.cache = None ts.save(self.path(str(hash(url)))) except Exception, e: print e self.index.add(url, SPIDER["exception"], Literal("%s" % e)) self.index.remove_triples(url, SPIDER["cached_on"], None) self.index.add(url, SPIDER["cached_on"], Literal(date_time())) def remove(self, url): if not isinstance(url, URIRef): url = URIRef(url) if url in self.__stores: del self.__stores[url] self.cache = None def triples(self, subject, predicate, object): if self.cache==None: self.cache = cache = TripleStore() for s, p, o in self.index.triples(None, None, None): cache.add(s, p, o) for store in self.__stores.values(): for s, p, o in store.triples(None, None, None): cache.add(s, p, o) for triple in self.cache.triples(subject, predicate, object): yield triple def save(self, location=None, uri=None): self.index.save(location, uri) ]]>