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')
def set(self): genealogy = Ontology(self.env, 'ns.service.genealogy', self.document['head']['genealogy']) genealogy.merge_all(self.ontology['genealogy']) self.document['head']['genealogy'] = genealogy.node # persist document self.env.resolver.save(self.document) # refetch the document self.document = self.env.resolver.resolve(self.uri, self.ontology['query'])