def accept_pingback(pingback): uploader = Uploader() uploader.upload(store=pingback.store, graph_name=pingback.graph_name, data=pingback.data, mimetype='text/n3') pingback.mark_published()
def execute(self, transform_manager, input): transform_manager.start(self, [input]) logger.debug("Starting upload of %r", input) extension = input.rsplit('.', 1)[-1] try: serializer = self.formats[extension] except KeyError: logger.exception("Unrecognized RDF extension: %r", extension) raise graph = rdflib.ConjunctiveGraph() graph.parse(open(input, 'r'), format=serializer, publicID=self.graph_name) logger.debug("Parsed graph") datetime_now = self.site_timezone.localize( datetime.datetime.now().replace(microsecond=0)) modified = graph.value(self.graph_name, NS['dcterms'].modified, default=rdflib.Literal(datetime_now)) created = graph.value(self.graph_name, NS['dcterms'].created) if not created: logger.debug("Getting created date from %r", transform_manager.store.query_endpoint) endpoint = Endpoint(transform_manager.store.query_endpoint) results = list( endpoint.query(self.created_query % {'graph': self.graph_name.n3()})) if results: created = results[0].date else: created = modified graph += ( (self.graph_name, NS.rdf.type, NS.sd.Graph), (self.graph_name, NS.dcterms.modified, modified), (self.graph_name, NS.dcterms.created, created), ) logger.debug("About to serialize") output = transform_manager('rdf') with open(output, 'w') as f: graph.serialize(f) logger.debug("Serialization done; about to upload") uploader = Uploader() uploader.upload(stores=(transform_manager.store, ), graph_name=self.graph_name, filename=output, method=self.method, mimetype='application/rdf+xml') logger.debug("Upload complete") transform_manager.end([self.graph_name]) transform_manager.touched_graph(self.graph_name)