def addEvent(eventType, dataValue=None, duration=None, additionalEventType=None): """Adds new event with metadata (generatedBy, datetime) to smart space""" global ts print "Adding event: " + eventType t = RDFTransactionList() u1 = ie_ns + "event" + str(uuid.uuid4()) t.setType(u1, ie_ns + eventType) t.add_uri(u1, ie_ns + "generatedBy", ie_ns + deviceID) dt = datetime.now() xsddt = ( '"' + dt.strftime("%Y-%m-%dT%H:%M:%S%z") + '"^^<http://www.w3.org/2001/XMLSchema#dateTime>' ) # e.g. "2011-01-19T16:10:23"^^<http://www.w3.org/2001/XMLSchema#dateTime> t.add_literal(u1, ie_ns + "inXSDDateTime", xsddt) if dataValue != None: print "Data value: " + str(dataValue) t.add_literal(u1, ie_ns + "dataValue", str(dataValue)) # if type(dataValue).__name__=='int': # t.add_literal(u1, ie_ns + "dataValue", str(dataValue) + '^^<http://www.w3.org/2001/XMLSchema#integer>') if duration != None: print "Duration: " + str(duration) t.add_literal(u1, ie_ns + "duration", str(duration)) # for xsd:duration, this should be declared as PT3S^^xsd:duration, where P=Period, T=Time and S=Seconds if additionalEventType != None: print "Additional event type: " + str(additionalEventType) t.add_uri(u1, "rdf:type", ie_ns + str(additionalEventType)) ts.insert(t.get()) return u1
def addEvent(self, eventType): """Adds new event with metadata (generatedBy, datetime) to smart space""" t = RDFTransactionList() u1 = ns + "event" + str(uuid.uuid4()) t.setType(u1, ns + eventType) t.add_uri(u1, ns + "generatedBy", ns + self.deviceID) dt = datetime.now() xsddt = '"'+dt.strftime('%Y-%m-%dT%H:%M:%S%z') + '"^^<http://www.w3.org/2001/XMLSchema#dateTime>' # e.g. "2011-01-19T16:10:23"^^<http://www.w3.org/2001/XMLSchema#dateTime> t.add_literal(u1, ns + "inXSDDateTime", xsddt) self.ts.insert(t.get()) return u1
def connect(device1,device2, make): """Adds or removes a **connectedTo** relationship between *device1* and *device2* based on whether *make* is ``True`` or ``False``""" if make: print "Connecting " + device1.split("#")[1] + " to " + device2.split("#")[1] pro = node.CreateInsertTransaction(smartSpace) triple = [((device1, ns+'connectedTo', device2), 'uri', 'uri')] pro.send(triple, confirm = True) node.CloseInsertTransaction(pro) else: print "Disconnecting " + device1.split("#")[1] + " from " + device2.split("#")[1] t = RDFTransactionList() t.add_uri(device1,ns+'connectedTo', device2) t.add_uri(device2,ns+'connectedTo',device1) ds = node.CreateRemoveTransaction(smartSpace) ds.remove(t.get(), confirm = True) node.CloseRemoveTransaction(ds)
def createDevices(self): t = RDFTransactionList() ns="http://hss.nrc.nokia.com/device#" u1 = ns + str(uuid.uuid4()) u2 = ns + str(uuid.uuid4()) u3 = ns + str(uuid.uuid4()) u4 = ns + str(uuid.uuid4()) u5 = ns + str(uuid.uuid4()) u6 = ns + str(uuid.uuid4()) u7 = ns + str(uuid.uuid4()) u8 = ns + str(uuid.uuid4()) t.setType(u1, ns + "TV") t.setType(u2, ns + "TV") t.setType(u3, ns + "Radio") t.setType(u4, ns + "Radio") t.setType(u5, ns + "CDPlayer") t.setType(u6, ns + "DVDPlayer") t.setType(u7, ns + "ExternalSpeaker") t.setType(u8, ns + "ExternalSpeaker") t.add_uri(u6, ns + "connectedTo", u2) t.add_uri(u5, ns + "connectedTo", u7) t.add_uri(u5, ns + "connectedTo", u8) t.add_literal(u1, ns + "status", "StandBy") t.add_literal(u2, ns + "status", "Off") t.add_literal(u3, ns + "status", "On") t.add_literal(u4, ns + "status", "Off") t.add_literal(u5, ns + "status", "On") t.add_literal(u6, ns + "status", "Off") t.add_literal(u7, ns + "status", "On") t.add_literal(u8, ns + "status", "On") t.add_literal(u1, ns + "manufacturer", "Nokia") t.add_literal(u2, ns + "manufacturer", "Sony") t.add_literal(u3, ns + "manufacturer", "Sony") t.add_literal(u4, ns + "manufacturer", "Toshiba") t.add_literal(u5, ns + "manufacturer", "Toshiba") t.add_literal(u6, ns + "manufacturer", "Sanyo") t.add_literal(u7, ns + "manufacturer", "Bose") t.add_literal(u8, ns + "manufacturer", "Genelec") p1 = self.theNode.CreateInsertTransaction(self.theSmartSpace) p1.send( t.get() ) self.theNode.CloseInsertTransaction(p1)
def addEvent(eventType, dataValue=None): """Adds new event with metadata (generatedBy, datetime) to smart space""" global ts t = RDFTransactionList() u1 = ie_ns + "event" + str(uuid.uuid4()) t.setType(u1, ie_ns + eventType) t.add_uri(u1, ie_ns + "generatedBy", ie_ns + deviceID) dt = datetime.now() xsddt = '"'+dt.strftime('%Y-%m-%dT%H:%M:%S%z') + '"^^<http://www.w3.org/2001/XMLSchema#dateTime>' # e.g. "2011-01-19T16:10:23"^^<http://www.w3.org/2001/XMLSchema#dateTime> t.add_literal(u1, ie_ns + "inXSDDateTime", xsddt) if(dataValue != None): print "Data value: " + str(dataValue) t.add_literal(u1, ie_ns + "dataValue", str(dataValue)) # if type(dataValue).__name__=='int': # t.add_literal(u1, ie_ns + "dataValue", str(dataValue) + '^^<http://www.w3.org/2001/XMLSchema#integer>') ts.insert(t.get()) return u1
def registerDevice(): t = RDFTransactionList() u1 = ie_ns + deviceID t.setType(u1,sofia_ns + "SmartObject") t.add_uri(u1,ie_ns + "functionalitySource",ie_ns + "Alarm") t.add_uri(u1,ie_ns + "functionalitySink",ie_ns + "Alarm") t.add_uri(u1,ie_ns + "functionalitySink",ie_ns + "Music") u2 = ns + "id" + str(uuid.uuid4()) t.add_uri(u1, sofia_ns + "hasIdentification",u2) t.add_uri(u2, semint_ns + "ofIDType", semint_ns + "RFID_Mifare") t.add_literal(u2, semint_ns + "idValue", "\"" + RFID + "\"^^<http://www.w3.org/2001/XMLSchema#string>") #infers hasRFIDTag ts.insert(t.get()) print "Device registered."
''' u1 = ns + "event" + str(uuid.uuid4()) #t.setType(u1, ns + "PlayEvent") t.setType(u1, ns + "CueEvent") t.add_literal(u1, ns + "generatedBy", ns+"nokiaN95") t.add_literal(u1, ns + "cueAt", '"5000"^^<http://www.w3.org/2001/XMLSchema#integer>') dt = datetime.now() xsddt = '"'+dt.strftime('%Y-%m-%dT%H:%M:%S%z') + '"^^<http://www.w3.org/2001/XMLSchema#dateTime>' t.add_literal(u1, ns + "inXSDDateTime", xsddt) ts.insert(t.get()) ''' prop = ns+"connectedTo" #prop = ns+"is" update_ins = [] t.add_uri(ns+"woop",prop,ns+"func") t.add_uri(ns+"func",prop,ns+"woop") ''' upd = node.CreateUpdateTransaction(smartSpace) upd.update(update_ins, "RDF-M3", t.get(), "RDF-M3", confirm = True) node.CloseUpdateTransaction(upd) ''' ''' triple = [((None, ns+'xsd', None), 'uri', 'literal')] ds = node.CreateRemoveTransaction(smartSpace) ds.remove(triple, confirm = True) node.CloseRemoveTransaction(ds) '''
class MakeTransactionsDialogUI(QtGui.QMainWindow): def __init__(self, ssd, parent=None): QtGui.QWidget.__init__(self, parent) self.trans = RDFTransactionList() self.smartSpaceData = ssd self.makeTransactionDialogUi = Ui_DialogMakeTransaction() self.makeTransactionDialogUi.setupUi(self) self.connect(self.makeTransactionDialogUi.pushButtonGenUUID4Subject, QtCore.SIGNAL('clicked()'), self.genUUID4subject ) self.connect(self.makeTransactionDialogUi.pushButtonPopulate, QtCore.SIGNAL('clicked()'), self.populateComboBoxesWithURIs ) self.connect(self.makeTransactionDialogUi.pushButtonPopulateNS, QtCore.SIGNAL('clicked()'), self.populateComboBoxesWithNSs ) self.connect(self.makeTransactionDialogUi.pushButtonAdd, QtCore.SIGNAL('clicked()'), self.add ) def reject(self): self.hide() def genUUID4subject(self): u=str(uuid.uuid4()) self.makeTransactionDialogUi.lineEditSubject.setText(u) def add(self): #the rule is,: #if ns box is checked then prepend the nsuri combo box to the user entered data with a # subNS = str(self.makeTransactionDialogUi.comboBoxSubjectNS.currentText()) preNS = str(self.makeTransactionDialogUi.comboBoxPredicateNS.currentText()) objNS = str(self.makeTransactionDialogUi.comboBoxObjectNS.currentText()) subU = str(self.makeTransactionDialogUi.lineEditSubject.text()) preU = str(self.makeTransactionDialogUi.lineEditPredicate.text()) objU = str(self.makeTransactionDialogUi.lineEditObject.text()) #0 = not checked, 2=checked, 1 is for tristate boxes which we do not use subC = self.makeTransactionDialogUi.checkBoxSubjectUse.checkState() preC = self.makeTransactionDialogUi.checkBoxPredicateUse.checkState() objC = self.makeTransactionDialogUi.checkBoxObjectUse.checkState() #true if checked, False otherwise - these belong to the same parent widget so they're #guaranteed to be mutually exclusive....hopefully QT4 got it right ;-) olit = self.makeTransactionDialogUi.radioButtonLiteral.isChecked() ouri = self.makeTransactionDialogUi.radioButtonLiteral.isChecked() print "+->",olit,subNS,subU,subC transSubject = subU transPredicate = preU transObject = objU if subC==2: transSubject = subNS + "#" + transSubject if preC==2: transPredicate = preNS + "#" + transPredicate if objC==2: transObject = objNS + "#" + transObject print "-->", transSubject, transPredicate, transObject if olit==True: self.trans.add_literal(transSubject, transPredicate, transObject) else: self.trans.add_uri(transSubject, transPredicate, transObject) self.updateList() def updateList(self): self.makeTransactionDialogUi.listWidgetTriples.setColumnCount(4) self.makeTransactionDialogUi.listWidgetTriples.clear() tablerow=1 for i in self.trans.get(): lws = QtGui.QTableWidgetItem() lwp = QtGui.QTableWidgetItem() lwo = QtGui.QTableWidgetItem() lwot = QtGui.QTableWidgetItem() lws.setText(i[0][0]) lws.setTextColor(QtGui.QColor(0, 0, 0)) lwp.setText(i[0][1]) lwp.setTextColor(QtGui.QColor(0, 0, 0)) lwo.setText(i[0][2]) lwo.setTextColor(QtGui.QColor(0, 0, 0)) lwot.setText(i[1]) lwot.setTextColor(QtGui.QColor(0, 128, 0)) if i[1]=="literal": lwo.setTextColor(QtGui.QColor(32, 0, 255)) print tablerow self.makeTransactionDialogUi.listWidgetTriples.setItem(tablerow,0,lws) self.makeTransactionDialogUi.listWidgetTriples.setItem(tablerow,1,lwp) self.makeTransactionDialogUi.listWidgetTriples.setItem(tablerow,2,lwo) self.makeTransactionDialogUi.listWidgetTriples.setItem(tablerow,3,lwot) tablerow = tablerow + 1 def populateComboBoxesWithNSs(self): q = self.smartSpaceData.getNode().CreateQueryTransaction(self.smartSpaceData.getSmartSpace()) r_properties = q.wql_values_query(("rdf:Property", False),"['inv', 'rdf:type']") r_allUris= subjectsRDF(q.rdf_query(((None, None, None), "uri"))) r_namespaces = self.extractNamespaces(r_allUris + r_properties) for i in r_properties: self.makeTransactionDialogUi.comboBoxPredicateNS.addItem(i) for i in r_namespaces: self.makeTransactionDialogUi.comboBoxSubjectNS.addItem(i) self.makeTransactionDialogUi.comboBoxObjectNS.addItem(i) self.makeTransactionDialogUi.comboBoxPredicateNS.addItem(i) def populateComboBoxesWithURIs(self): q = self.smartSpaceData.getNode().CreateQueryTransaction(self.smartSpaceData.getSmartSpace()) r_properties = q.wql_values_query(("rdf:Property", False), "['inv', 'rdf:type']") r_allUris= subjectsRDF(q.rdf_query(((None, None, None), "uri"))) r_namespaces = self.extractNamespaces(r_allUris+r_properties) for i in r_properties: self.makeTransactionDialogUi.comboBoxPredicateNS.addItem(i) for i in r_allUris: self.makeTransactionDialogUi.comboBoxSubjectNS.addItem(i) self.makeTransactionDialogUi.comboBoxObjectNS.addItem(i) for i in r_namespaces: self.makeTransactionDialogUi.comboBoxSubjectNS.addItem(i) self.makeTransactionDialogUi.comboBoxObjectNS.addItem(i) self.makeTransactionDialogUi.comboBoxPredicateNS.addItem(i) def extractNamespaces(self,ls): print ls ns = [] for i in ls: istr = str(i) if "#" in istr: n = istr.split("#") if n not in ns: ns.append(n[0]) return ns