def deleteGraphs(self, wrapper):
     graphNames = wrapper.getGraphName()
     if type(graphNames) is str:  # abstract wrapper returns one graph name
         ThreadedTriplestoreAdapter.getOrMake(graphNames).deleteGraph(graphNames)
     else:
         for graphName in graphNames:  # composed abstract wrapper returns set with graph names
             ThreadedTriplestoreAdapter.getOrMake(graphName).deleteGraph(graphName)
 def updateAverageQuality(self):
     job = self.getAvgQualities()
     graphs = self.createGraph(job)
     # save graph
     if self.rm.args.triplestore:
         ThreadedTriplestoreAdapter.getOrMake("citypulse/avgquality").deleteGraph("citypulse/avgquality")
         for graph in graphs:
             ThreadedTriplestoreAdapter.getOrMake("citypulse/avgquality").addGraph(graph)
 def annotateEvent(self, event):
     """
     Annotates the event and saves the graph in the triple store
     :param event:
     :return: returns the annotated graph of the event
     """
     graph = self.annotator.annotateEvent(event, self.getEventDescription())
     ThreadedTriplestoreAdapter.getOrMake(self.getEventDescription().graphname)
     return graph
    def persist(self, observationIdList):
      
        graphList = []
           
        if not self.GRAPH_BASE_URI:
            self.GRAPH_BASE_URI = self.reputationsystem.description.fullSensorID + "/Quality-"

        for observationId in observationIdList:
            saoOut = saopy.SaoInfo()
            saoOut.namespaceBindings = VirtuosoSink.namespaceBindings
            observation = saopy.sao.Point(self.reputationsystem.description.fullSensorID + "/Observation-" + str(observationId))
            saoOut.add(observation)
            
            mName = self.GRAPH_BASE_URI + "%s-" + str(observationId)

            for metricName in self.metrics:
                m = self.metrics[metricName]

                if m.name == "Latency":
                    latency = saopy.qoi.Latency(mName % m.name)
                    latency.hasLatency = "%f" % (m.ratedValue)
                    observation.hasQuality.add(latency)
                    saoOut.add(latency)
                elif m.name == "Age":
                    age = saopy.qoi.Age(mName % m.name)
                    age.hasAge = "%f" % (m.ratedValue)
                    observation.hasQuality.add(age)
                    saoOut.add(age)
                elif m.name == "Frequency":
                    frequency = saopy.qoi.Frequency(mName % m.name)
                    frequency.hasFrequency = "%f" % (m.ratedValue)
                    observation.hasQuality.add(frequency)
                    saoOut.add(frequency)
                elif m.name == "Completeness":
                    completeness = saopy.qoi.Completeness(mName % m.name)
                    completeness.hasCompleteness = "%f" % (m.ratedValue)
                    observation.hasQuality.add(completeness)
                    saoOut.add(completeness)
                elif m.name == "Correctness":
                    correctness = saopy.qoi.Correctness(mName % m.name)
                    correctness.hasCorrectness = "%f" % (m.ratedValue)
                    observation.hasQuality.add(correctness)
                    saoOut.add(correctness)

            graph = saopy.RDFInterface.exportRDFGraph(saoOut)
#             print graph.serialize(format="n3")
            graphList.append(graph)
        
        if ThreadedTriplestoreAdapter.triplestore:
            virtuosoWriter = ThreadedTriplestoreAdapter(self.reputationsystem.description.graphName)
            virtuosoWriter.addGraphList(graphList)
            
        #check if message bus is used and send graphs to bus
        if self.messageBusQueue:
            for graph in graphList:
                self.messageBusQueue.add((graph.serialize(format="n3"), RabbitMQ.exchange_quality, self.reputationsystem.description.messagebus.routingKey))
 def end(self):
     for w in self.wrappers:
         w.stop()
     if ResourceManagement.args.messagebus:
         self.messageBusQueue.stop()
     if ResourceManagement.args.aggregate:
         self.aggregationQueue.stop()
     if self.eventWrapper:
         self.eventWrapper.stop()
     self.receiverQueue.stop()
     if ResourceManagement.args.triplestore:
         ThreadedTriplestoreAdapter.stop()
     self.stopInterface()
     L.i("REPLAY ENDED")
 def staticAnnotationEvent(cls, wrapper, configuration, messageBusQueue):
     sd = wrapper.getSensorDescription()
     if isinstance(sd, list):
         for _sd in sd:
             graph = StaticEventAnnotator.__staticAnnotationEvent(_sd, configuration)
             #TODO send graph over messagebus?
             # if messageBusQueue:
             #     msg = graph.serialize(format='n3')
             #     messageBusQueue.add((msg, RabbitMQ.exchange_wrapper_registration, _sd.messagebus.routingKey))
             ThreadedTriplestoreAdapter.getOrMake(StaticEventAnnotator.event_repository_name).saveGraph(graph, StaticEventAnnotator.event_repository_name)
     else:
         graph = StaticEventAnnotator.__staticAnnotationEvent(sd, configuration)
         # if messageBusQueue:
         #     msg = graph.serialize(format='n3')
         #     messageBusQueue.add((msg, RabbitMQ.exchange_wrapper_registration, sd.messagebus.routingKey))
         ThreadedTriplestoreAdapter.getOrMake(StaticEventAnnotator.event_repository_name).saveGraph(graph, StaticEventAnnotator.event_repository_name)
    def __run(self):
        while not self.stop:
            sleep(self.delay)
            Log.i(self.counter, self.txt)
#             print self.counter, self.txt
#             print "ThreadedTriplestoreAdapter Buffer Size:", ThreadedTriplestoreAdapter.getTotalBufferSize()
            Log.i("ThreadedTriplestoreAdapter Buffer Size:", ThreadedTriplestoreAdapter.getTotalBufferSize())
            self.counter = 0
    def receiveEventHandler(self, channel, method, properties, body):

        """
        Receives messages through the message bus, annotates the event
         and sends the annotated event
        :param channel:
        :param method:
        :param properties:
        :param body:
        :return:
        """
        event = JSONObject(str(body))
        if event.ceType in self.eventDescriptions:
            # annotatedevent = self.annotator.annotateEvent(event, self.eventDescriptions[event.ceType])
            # if self.rm.args.messagebus and self.messageBusSendQueue:
            #     message = annotatedevent.serialize(format='n3')
            #     self.messageBusSendQueue.add((message, RabbitMQ.exchange_annotated_event, event.ceType))
            if self.rm.args.triplestore:
                ThreadedTriplestoreAdapter.getOrMake(self.eventDescriptions[event.ceType].graphName)
 def staticAnnotationSensor(cls, wrapper, configuration, messageBusQueue, api=None):
     sd = wrapper.getSensorDescription()
     if isinstance(sd, list):
         for _sd in sd:
             graph = StaticAnnotator.__staticAnnotationSesnor(_sd, configuration)
             if messageBusQueue or api:
                 msg = graph.serialize(format='n3')
             if messageBusQueue:
                 messageBusQueue.add((msg, RabbitMQ.exchange_wrapper_registration, _sd.messagebus.routingKey))
             if api:
                 api.set_static_stream_data(str(_sd.uuid), msg)
             if ThreadedTriplestoreAdapter.triplestore:
                 ThreadedTriplestoreAdapter.getOrMake(StaticAnnotator.service_repository_name).saveGraph(graph, StaticAnnotator.service_repository_name)
     else:
         graph = StaticAnnotator.__staticAnnotationSesnor(sd, configuration)
         if messageBusQueue or api:
             msg = graph.serialize(format='n3')
         if messageBusQueue:
             messageBusQueue.add((msg, RabbitMQ.exchange_wrapper_registration, sd.messagebus.routingKey))
         if api:
             api.set_static_stream_data(str(sd.uuid), msg)
         if ThreadedTriplestoreAdapter.triplestore:
             ThreadedTriplestoreAdapter.getOrMake(StaticAnnotator.service_repository_name).saveGraph(graph, StaticAnnotator.service_repository_name)