# -*-python-*- #!/usr/bin/python # $Id: ingdump.py,v 1.2 2006/03/15 16:50:52 asc Exp $ from rdflib import Graph from rdflib import Namespace from rdflib import RDF RDF = Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#") ERDFG = Namespace("http://eatdrinkfeelgood.org/2.0#") ATOM = Namespace("http://purl.org/atom/1.0/") # # # class erdfg : def __init__ (self, recipe) : gr = Graph() gr.load(recipe, format="n3"); self.__graph = gr # # # # # # def dump_ingredients (self) : parts = ("ingredients",) for label in parts : print label.upper() print "" for list in self.__graph.objects(None, ERDFG[label]) : self.process_ing_objects(list) print "" # def process_ing_objects (self, obj) : if obj == RDF["nil"] : return if len(list(self.__graph.objects(obj, ERDFG["foodstuff"]))) : self.process_ing_node(obj) for p, o in self.__graph.predicate_objects(obj) : if p == RDF["first"] : self.process_ing_objects(o) elif p == RDF["rest"] : self.process_ing_objects(o) else : pass # def process_ing_node (self, node) : properties = ("amount", "measure", "foodstuff", "detail") values = [] for label in properties : res = list(self.__graph.objects(node, ERDFG[label])) if len(res) : ima = res[0].__class__.__name__ if ima == "URIRef" : values.append(res[0].rsplit("#")[1].strip()) else : values.append(res[0].strip()); print " ".join(values) # # # def dump_guidelines (self) : guidelines = ("directions", "notes") for label in guidelines : print label.upper() print "" for list in self.__graph.objects(None, ERDFG[label]) : self.process_guideline_objects(list) # def process_guideline_objects (self, obj) : if obj == RDF["nil"] : return if len(list(self.__graph.objects(obj, ATOM["content"]))) : return self.process_guideline_node(obj) for p, o in self.__graph.predicate_objects(obj) : if p == RDF["first"] : self.process_guideline_objects(o) elif p == RDF["rest"] : self.process_guideline_objects(o) else : pass # def process_guideline_node (self, node) : properties = ("content", ) values = [] for label in properties : res = list(self.__graph.objects(node, ATOM[label])) if len(res) : values.append(res[0].strip().encode("ascii", "replace")); print " ".join(values) # # # if __name__ == "__main__" : from sys import argv e = erdfg(argv[1]) e.dump_ingredients() e.dump_guidelines()