def tag(self, task): update = Ontology(self.env, 'ns.medium.resource.meta.tag') meta = self.meta.project('ns.medium.resource.meta.tag') knowledge = Ontology(self.env, 'ns.medium.resource.meta.tag', self.knowledge['body']) genealogy = Ontology(self.env, 'ns.service.genealogy', self.knowledge['head']['genealogy']) knowledge.merge_all(genealogy) # Everything that is in meta but doesn't fit knowledge # should be replaced with the value in knowledge for i in meta.keys(): if meta[i] != knowledge[i]: update[i] = knowledge[i] # Everything that is in knowledge but not in meta # should be set to the value in knowledge for i in knowledge.keys(): if i not in meta: update[i] = knowledge[i] modify = [] for k,v in update.iteritems(): prototype = update.namespace.find(k) if prototype and prototype.node['subler']: modify.append(u'{{{}:{}}}'.format(prototype.node['subler'],v)) print unicode(modify).encode('utf-8')