def forwardSong(self, event=None): """Forwards song 5s and adds **CueEvent** to smart space.""" global playing sound.set_position(5000000) print(u"Forwarding..") if self.connected: eventID = self.addEvent("CueEvent") t = RDFTransactionList() t.add_literal(eventID, ns + "cueAt", "5000") self.ts.insert(t.get())
def addEvent(eventType, tagID, position): """Adds new event of *eventType* with metadata (**inXSDDateTime**, **hasRFIDTag** and **hasPosition**) to smart space""" t = RDFTransactionList() u1 = ns + "event" + str(uuid.uuid4()) t.setType(u1, ns + eventType) #t.add_literal(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>' t.add_literal(u1, ns + "inXSDDateTime", xsddt) t.add_literal(u1, ns + "hasRFIDTag", "\"" + tagID + "\"^^<http://www.w3.org/2001/XMLSchema#string>"); t.add_literal(u1, ns + "hasPosition", "\"" + str(position) + "\"^^<http://www.w3.org/2001/XMLSchema#integer>") print eventType, ": Object ", tagID, " next to position ", position ts.insert(t.get()) return u1
def forwardSong(self, event=None): """Forwards song 5s and sends notification""" global cueAt if self.connected and cueAt == 0: #If cueAt is 0, the button was pressed on this device self.start_time = time.time() eventID = self.addEvent("CueEvent") t = RDFTransactionList() t.add_literal(eventID, ns + "cueAt", '"5000"^^<http://www.w3.org/2001/XMLSchema#integer>') self.ts.insert(t.get()) self.m_media.seek(5000) self.note("Forwarding..") cueAt = 0
def registerDevice(): t = RDFTransactionList() u1 = ie_ns + deviceID t.setType(u1, ie_ns + "SmartObject") # t.add_uri(u1,ie_ns + "functionalitySource",ie_ns + "AdjustLevel") # t.add_uri(u1,ie_ns + "functionalitySink",ie_ns + "Alarm") # 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>") ts.insert(t.get()) print "Device registered."
def addEvent(self, eventType): """Adds new event with metadata (**generatedBy**, **inXSDDateTime**) to smart space""" t = RDFTransactionList() u1 = ns + "event" + str(uuid.uuid4()) t.setType(u1, ns + eventType) t.add_literal(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>' t.add_literal(u1, ns + "inXSDDateTime", xsddt) self.ts.insert(t.get()) return u1
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 __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 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)
#-*- coding:utf-8 -*- from TripleStore import * import uuid from datetime import datetime from RDFTransactionList import * #helper functions for working with triples class RdfMsgHandler: def handle(self, added, removed): print "ok" ts = TripleStore() #insert something into smart space t = RDFTransactionList() ''' 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 = []
def createMediaEntries(self): t = RDFTransactionList() ns="http://hss.nrc.nokia.com/mediaCDS#" u1 = ns + str(uuid.uuid4()) u2 = ns + str(uuid.uuid4()) u3 = ns + str(uuid.uuid4()) u4 = ns + str(uuid.uuid4()) t.setType(u1, ns + "MediaTrack") print "**", ns + "MediaTrack" t.add_literal(u1, ns + "artist", "Peter Gabriel") t.add_literal(u1, ns + "album", "Hit") t.add_literal(u1, ns + "genre", "Progessive") t.add_literal(u1, ns + "title", "Solsbury Hill") t.setType(u2, ns + "MediaTrack") t.add_literal(u2, ns + "artist", "Rush") t.add_literal(u2, ns + "album", "2112") t.add_literal(u2, ns + "genre", "Progessive") t.add_literal(u2, ns + "title", "Passage to Bangkok") t.setType(u3, ns + "MediaTrack") t.add_literal(u3, ns + "artist", "Genesis") t.add_literal(u3, ns + "album", "Lamb Lies Down") t.add_literal(u3, ns + "genre", "Progessive") t.add_literal(u3, ns + "title", "Lamb Lies Down on Broadway") t.setType(u4, ns + "MediaTrack") t.add_literal(u4, ns + "artist", "Jaco Pastorius") t.add_literal(u4, ns + "album", "Jazo Pastorius") t.add_literal(u4, ns + "genre", "Jazz") t.add_literal(u4, ns + "title", "Portrait of Tracy") p1 = self.theNode.CreateInsertTransaction(self.theSmartSpace) p1.send( t.get() ) self.theNode.CloseInsertTransaction(p1)
def createUsers(self): t = RDFTransactionList() ns="http://hss.nrc.nokia.com/hssuser#" 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()) t.setType(u1, ns + "FamilyMember") t.setType(u2, ns + "FamilyMember") t.setType(u3, ns + "FamilyMember") t.setType(u4, ns + "Visitor") t.setType(u5, ns + "Visitor") t.add_literal(u1, ns + "name", "Ian") t.add_literal(u2, ns + "name", "Pekka") t.add_literal(u3, ns + "name", "Olli") t.add_literal(u4, ns + "name", "Jukka") t.add_literal(u5, ns + "name", "Seamus") p1 = self.theNode.CreateInsertTransaction(self.theSmartSpace) p1.send( t.get() ) self.theNode.CloseInsertTransaction(p1)
def createOntologicalStructures(self): t = RDFTransactionList() ns="http://hss.nrc.nokia.com/hssuser#" t.add_subClass(ns + "FamilyMember", ns + "HomeMember") t.add_subClass(ns + "Visitor", ns + "HomeMember") p1 = self.theNode.CreateInsertTransaction(self.theSmartSpace) p1.send( t.get() ) t = RDFTransactionList() ns="http://hss.nrc.nokia.com/mediaCDS#" t.add_subClass(ns + "MediaTrack", ns + "MediaItem") t.add_subClass(ns + "MediaItem", ns + "MediaObject") p1.send( t.get() ) t = RDFTransactionList() ns="http://hss.nrc.nokia.com/device#" t.add_subClass(ns + "TV", ns + "Device") t.add_subClass(ns + "Radio", ns + "Device") t.add_subClass(ns + "CDPlayer", ns + "Device") t.add_subClass(ns + "DVDPlayer", ns + "Device") t.add_subClass(ns + "ExternalSpeaker", ns + "Device") p1.send( t.get() ) self.theNode.CloseInsertTransaction(p1)
def createUnificationExample(self): t = RDFTransactionList() ns = "http://donkey.eeor.disney.com/animals#" u1 = ns + str(uuid.uuid4()) t.setType(u1, ns + "Donkey") t.add_literal(u1, ns + "petname", "Dobbin") ns="http://www.nokia.com/persons#" u2 = ns + str(uuid.uuid4()) t.setType(u2, ns + "Person") t.add_literal(u2, ns + "number", "42") t.add_literal(u2, ns + "name", "Flash Gordon") t.unify(u1, u2) p1 = self.theNode.CreateInsertTransaction(self.theSmartSpace) p1.send( t.get() ) self.theNode.CloseInsertTransaction(p1)
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, 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
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