Exemplo n.º 1
0
 def testTripleStoreConnection(self, calledfromotherfunction=False):
     if self.proxyHost != None and self.ProxyPort != None:
         proxy = urllib.ProxyHandler({'http': proxyHost})
         opener = urllib.build_opener(proxy)
         urllib.install_opener(opener)
     sparql = SPARQLWrapper(
         self.tripleStoreEdit.text(),
         agent=
         "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
     )
     sparql.setQuery("SELECT ?a ?b ?c WHERE { ?a ?b ?c .} LIMIT 1")
     sparql.setReturnFormat(JSON)
     print("now sending query")
     try:
         results = sparql.query()
         if not calledfromotherfunction:
             msgBox = QMessageBox()
             msgBox.setText("URL depicts a valid SPARQL Endpoint!")
             msgBox.exec()
         return True
     except:
         msgBox = QMessageBox()
         msgBox.setText("URL does not depict a valid SPARQL Endpoint!")
         msgBox.exec()
         return False
 def finished(self, result):
     if result == True:
         self.dlg.geoClassListModel.clear()
         self.dlg.comboBox.setCurrentIndex(0)
         self.maindlg.currentgraph = self.graph
         self.dlg.layercount.setText("[" + str(len(self.geoconcepts)) + "]")
         for geo in self.geoconcepts:
             item = QStandardItem()
             item.setData(geo, 1)
             item.setText(geo[geo.rfind('/') + 1:])
             self.dlg.geoClassListModel.appendRow(item)
         #comp=QCompleter(self.dlg.layerconcepts)
         #comp.setCompletionMode(QCompleter.PopupCompletion)
         #comp.setModel(self.dlg.layerconcepts.model())
         #self.dlg.layerconcepts.setCompleter(comp)
         self.dlg.inp_sparql2.setPlainText(
             self.triplestoreconf[0]["querytemplate"][0]["query"].replace(
                 "%%concept%%", self.geoconcepts[0]))
         self.dlg.inp_sparql2.columnvars = {}
         self.maindlg.loadedfromfile = True
         self.maindlg.justloadingfromfile = False
         self.loadgraphdlg.close()
     else:
         msgBox = QMessageBox()
         msgBox.setText(self.exception)
         msgBox.exec()
     self.progress.close()
Exemplo n.º 3
0
 def applyCustomSPARQLEndPoint(self):	
     if not self.testTripleStoreConnection(True):	
        return	
     if self.tripleStoreNameEdit.text()=="":	
        msgBox=QMessageBox()	
        msgBox.setWindowTitle("Triple Store Name is missing!")
        msgBox.setText("Please enter a triple store name")	
        msgBox.exec()	
        return	
     #self.endpoints.append(self.tripleStoreEdit.text())	
     self.comboBox.addItem(self.tripleStoreNameEdit.text())	
     curprefixes=[]	
     for i in range(self.prefixList.count()):	
         curprefixes.append(self.prefixList.item(i).text()	)
     if self.addTripleStore:
         index=len(self.triplestoreconf)
         self.tripleStoreChooser.addItem(self.tripleStoreNameEdit.text()	)
         self.triplestoreconf.append({})
         self.triplestoreconf[index]["querytemplate"]=[]
         self.triplestoreconf[index]["querytemplate"].append({})
         self.triplestoreconf[index]["querytemplate"][0]["label"]="Example Query"
         self.triplestoreconf[index]["querytemplate"][0]["query"]=self.exampleQuery.toPlainText()
     else:
         index=self.tripleStoreChooser.currentIndex()
     self.triplestoreconf[index]={}
     self.triplestoreconf[index]["endpoint"]=self.tripleStoreEdit.text()
     self.triplestoreconf[index]["name"]=self.tripleStoreNameEdit.text()	
     self.triplestoreconf[index]["mandatoryvariables"]=[]
     self.triplestoreconf[index]["mandatoryvariables"].append(self.queryVarEdit.text())
     self.triplestoreconf[index]["mandatoryvariables"].append(self.queryVarItemEdit.text())        
     self.triplestoreconf[index]["prefixes"]=curprefixes
     self.triplestoreconf[index]["crs"]=self.epsgEdit.text()	
     self.triplestoreconf[index]["active"]=self.activeCheckBox.isChecked()
     self.addTripleStore=False
 def loadTripleStoreConfig(self):
     if self.tripleStoreChooser.currentIndex() < len(self.triplestoreconf):
         self.tripleStoreEdit.setText(self.triplestoreconf[
             self.tripleStoreChooser.currentIndex()]["endpoint"])
         self.tripleStoreNameEdit.setText(self.triplestoreconf[
             self.tripleStoreChooser.currentIndex()]["name"])
         self.prefixList.clear()
         msgBox = QMessageBox()
         msgBox.setWindowTitle("Mandatory variables missing!")
         msgBox.setText(
             "The SPARQL query is missing the following mandatory variables: "
         )
         msgBox.exec()
         for prefix in self.triplestoreconf[
                 self.tripleStoreChooser.currentIndex()]["prefixes"]:
             self.prefixList.addItem(prefix)
         self.prefixList.sortItems()
         if "active" in self.triplestoreconf[
                 self.tripleStoreChooser.currentIndex()]:
             self.activeCheckBox.setChecked(self.triplestoreconf[
                 self.tripleStoreChooser.currentIndex()]["active"])
         if "crs" in self.triplestoreconf[
                 self.tripleStoreChooser.currentIndex()]:
             self.epsgEdit.setText(
                 str(self.triplestoreconf[
                     self.tripleStoreChooser.currentIndex()]["crs"]))
         else:
             self.epsgEdit.setText("4326")
         self.exampleQuery.setPlainText(
             self.triplestoreconf[self.tripleStoreChooser.currentIndex()]
             ["querytemplate"][0]["query"])
Exemplo n.º 5
0
    def closeEvent(self, event):
        if self.isRecalculating or self.configurationHasChanged:
            return
        if self.unsavedChanges:
            msgBox = QMessageBox()
            msgBox.setIcon(QMessageBox.Information)
            msgBox.setWindowTitle(self.tr('Nicht gespeicherte Aenderungen'))
            msgBox.setText(self.tr('Moechten Sie die Ergebnisse speichern?'))
            msgBox.setStandardButtons(QMessageBox.Cancel | QMessageBox.No
                                      | QMessageBox.Yes)
            cancelBtn = msgBox.button(QMessageBox.Cancel)
            cancelBtn.setText(self.tr("Abbrechen"))
            noBtn = msgBox.button(QMessageBox.No)
            noBtn.setText(self.tr("Nein"))
            yesBtn = msgBox.button(QMessageBox.Yes)
            yesBtn.setText(self.tr("Ja"))
            msgBox.show()
            msgBox.exec()

            if msgBox.clickedButton() == yesBtn:
                self.onSave()
                self.drawTool.reset()
            elif msgBox.clickedButton() == cancelBtn:
                event.ignore()
                return
            elif msgBox.clickedButton() == noBtn:
                self.drawTool.reset()
        else:
            self.drawTool.reset()

        self.timer.stop()
Exemplo n.º 6
0
 def finished(self, result):
     self.progress.close()
     if self.feasibleConfiguration and self.testConfiguration:
         msgBox = QMessageBox()
         msgBox.setStandardButtons(QMessageBox.Yes)
         msgBox.addButton(QMessageBox.No)
         msgBox.setWindowTitle("Automatic Detection Successful")
         msgBox.setText(self.message)
         if msgBox.exec() != QMessageBox.Yes:
             return
         else:
             self.comboBox.addItem(self.triplestorename)
             self.tripleStoreChooser.addItem(self.triplestorename)
             index = len(self.triplestoreconf)
             self.triplestoreconf.append({})
             self.triplestoreconf[index] = self.configuration
             self.addTripleStore = False
             self.prefixes.append("")
             for prefix in self.configuration["prefixes"]:
                 self.prefixes[
                     index] += "PREFIX " + prefix + ":<" + self.configuration[
                         "prefixes"][prefix] + ">\n"
     elif self.feasibleConfiguration:
         msgBox = QMessageBox()
         msgBox.setText(self.message)
         msgBox.setWindowTitle("Automatic Detection Successful")
         msgBox.exec()
     else:
         msgBox = QMessageBox()
         msgBox.setText(self.message)
         msgBox.setWindowTitle("Automatic Detection Failed")
         msgBox.exec()
     iface.messageBar().pushMessage("Detect Triple Store Configuration",
                                    "OK",
                                    level=Qgis.Success)
 def finished(self, result):
     if self.geojson == None:
         msgBox = QMessageBox()
         msgBox.setText(
             "The query yielded no results. Therefore no layer will be created!"
         )
         msgBox.exec()
         return
     if self.geojson != None and isinstance(self.geojson,
                                            int) and not self.allownongeo:
         msgBox = QMessageBox()
         msgBox.setText(
             "The query did not retrieve a geometry result. However, there were "
             + str(self.geojson) +
             " non-geometry query results. You can retrieve them by allowing non-geometry queries!"
         )
         msgBox.exec()
         return
     self.progress.close()
     vlayer = QgsVectorLayer(
         json.dumps(self.geojson, sort_keys=True, indent=4),
         "unicorn_" + self.filename, "ogr")
     print(vlayer.isValid())
     QgsProject.instance().addMapLayer(vlayer)
     canvas = iface.mapCanvas()
     canvas.setExtent(vlayer.extent())
     iface.messageBar().pushMessage("Add layer", "OK", level=Qgis.Success)
Exemplo n.º 8
0
    def open_copyright_message(dialog: QDialog):
        """Display a window to bring a reminder of the OSM copyrights."""

        def read_copyright():
            open_webpage('https://www.openstreetmap.org/copyright')
            set_setting("copyright_dialog", "OpenStreetMap")

        def know_copyright():
            set_setting("copyright_dialog", "OpenStreetMap")

        if not get_setting("copyright_dialog"):

            message = QMessageBox(dialog)
            text = tr(
                'OpenStreetMap® is open data, licensed under the'
                ' Open Data Commons Open Database License (ODbL) '
                'by the OpenStreetMap Foundation.'
            ) + '\n'
            text += tr(
                'The Foundation requires that you use the credit '
                '“© OpenStreetMap contributors” on any product using OSM data.'
            ) + '\n'
            text += tr(
                'You should read https://www.openstreetmap.org/copyright'
            )
            message.setText(text)
            message.setIcon(QMessageBox.Question)
            no_button = QPushButton(tr('I understand the copyrights, access to the plugin'), message)
            yes_button = QPushButton(tr('I want to read the copyrights'), message)
            message.addButton(no_button, QMessageBox.NoRole)
            message.addButton(yes_button, QMessageBox.YesRole)
            yes_button.clicked.connect(read_copyright)
            no_button.clicked.connect(know_copyright)
            message.exec()
Exemplo n.º 9
0
 def showError():
     msgBox = QMessageBox()
     msgBox.setIcon(QMessageBox.Information)
     msgBox.setWindowTitle(shortMessage)
     msgBox.setText(longMessage)
     msgBox.setStandardButtons(QMessageBox.Ok)
     msgBox.show()
     msgBox.exec()
 def getClassesFromLabel(self, comboBox):
     viewlist = []
     resultlist = []
     label = self.conceptSearchEdit.text()
     if label == "":
         return
     language = "en"
     results = {}
     self.searchResult.clear()
     query = ""
     position = self.tripleStoreEdit.currentIndex()
     if self.tripleStoreEdit.currentIndex() > len(self.triplestoreconf):
         if self.findProperty.isChecked():
             self.addVocab[self.addVocab.keys()[
                 position -
                 len(self.triplestoreconf)]]["source"]["properties"]
             viewlist = {k: v for k, v in d.iteritems() if label in k}
         else:
             self.addVocab[self.addVocab.keys()[
                 position - len(self.triplestoreconf)]]["source"]["classes"]
             viewlist = {k: v for k, v in d.iteritems() if label in k}
         for res in viewlist:
             item = QListWidgetItem()
             item.setData(1, val)
             item.setText(key)
             self.searchResult.addItem(item)
     else:
         if self.findProperty.isChecked():
             if "propertyfromlabelquery" in self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() + 1]:
                 query = self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() +
                     1]["propertyfromlabelquery"].replace(
                         "%%label%%", label)
         else:
             if "classfromlabelquery" in self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() + 1]:
                 query = self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() +
                     1]["classfromlabelquery"].replace("%%label%%", label)
         if query == "":
             msgBox = QMessageBox()
             msgBox.setText(
                 "No search query specified for this triplestore")
             msgBox.exec()
             return
         self.qtask = SearchTask(
             "Searching classes/properties for " + label + " in " +
             self.triplestoreconf[self.tripleStoreEdit.currentIndex() +
                                  1]["endpoint"],
             self.triplestoreconf[self.tripleStoreEdit.currentIndex() +
                                  1]["endpoint"], query,
             self.triplestoreconf, self.findProperty, self.tripleStoreEdit,
             self.searchResult, self.prefixes, label, language, None)
         QgsApplication.taskManager().addTask(self.qtask)
     return viewlist
Exemplo n.º 11
0
 def create_unicorn_layer(self):
     endpointIndex = self.dlg.comboBox.currentIndex()
     # SPARQL query
     #print(self.loadedfromfile)
     # query
     query = self.dlg.inp_sparql2.toPlainText()
     if self.loadedfromfile:
         curindex = self.dlg.proxyModel.mapToSource(
             self.dlg.geoClassList.selectionModel().currentIndex())
         if curindex != None and self.dlg.geoClassListModel.itemFromIndex(
                 curindex) != None:
             concept = self.dlg.geoClassListModel.itemFromIndex(
                 curindex).data(1)
         else:
             concept = "http://www.opengis.net/ont/geosparql#Feature"
         geojson = self.getGeoJSONFromGeoConcept(self.currentgraph, concept)
         vlayer = QgsVectorLayer(
             json.dumps(geojson, sort_keys=True, indent=4),
             "unicorn_" + self.dlg.inp_label.text(), "ogr")
         print(vlayer.isValid())
         QgsProject.instance().addMapLayer(vlayer)
         canvas = iface.mapCanvas()
         canvas.setExtent(vlayer.extent())
         iface.messageBar().pushMessage("Add layer",
                                        "OK",
                                        level=Qgis.Success)
         #iface.messageBar().pushMessage("Error", "An error occured", level=Qgis.Critical)
         #self.dlg.close()
         return
     else:
         endpoint_url = self.triplestoreconf[endpointIndex]["endpoint"]
     missingmandvars = []
     for mandvar in self.triplestoreconf[endpointIndex][
             "mandatoryvariables"]:
         if mandvar not in query:
             missingmandvars.append("?" + mandvar)
     if missingmandvars != [] and not self.dlg.allownongeo.isChecked():
         msgBox = QMessageBox()
         msgBox.setWindowTitle("Mandatory variables missing!")
         msgBox.setText(
             "The SPARQL query is missing the following mandatory variables: "
             + str(missingmandvars))
         msgBox.exec()
     progress = QProgressDialog(
         "Querying layer from " + endpoint_url + "...", "Abort", 0, 0,
         self.dlg)
     progress.setWindowModality(Qt.WindowModal)
     progress.setCancelButton(None)
     progress.show()
     self.qtask = QueryLayerTask(
         "Querying QGIS Layer from " + endpoint_url, endpoint_url,
         "".join(self.prefixes[endpointIndex]) + query,
         self.triplestoreconf[endpointIndex],
         self.dlg.allownongeo.isChecked(), self.dlg.inp_label.text(),
         progress)
     QgsApplication.taskManager().addTask(self.qtask)
 def geocode(self):
     try:
         nominatimurl = self.nominatimurl.format(
             **{'address': self.geocodeSearch.text()})
         self.networkrequest(nominatimurl)
     except Exception as e:
         msgBox = QMessageBox()
         msgBox.setWindowTitle("Mandatory variables missing!")
         msgBox.setText(str(e))
         msgBox.exec()
Exemplo n.º 13
0
 def details_message_box(error, more_details):
     msgBox = QMessageBox()
     msgBox.setWindowTitle("AcATaMa - Error handler")
     msgBox.setText("<i>{}</i>".format(error))
     msgBox.setInformativeText("If you consider this as an error of AcATaMa, report it in "
                               "<a href='https://github.com/SMByC/AcATaMa/issues'>issue tracker</a>")
     msgBox.setDetailedText(more_details)
     msgBox.setTextFormat(Qt.RichText)
     msgBox.setStandardButtons(QMessageBox.Ok)
     msgBox.exec()
     del msgBox
Exemplo n.º 14
0
 def __init__(self, column, row, triplestoreconf, interlinkOrEnrich, table,
              fieldname, layer, valuemap):
     super(QDialog, self).__init__()
     self.setupUi(self)
     self.currentcol = column
     self.currentrow = row
     self.table = table
     self.fieldname = fieldname
     self.triplestoreconf = triplestoreconf
     self.interlinkOrEnrich = interlinkOrEnrich
     self.valuemap = None
     if self.table.item(row, column) != None and self.table.item(
             row, column).data(1) != None:
         self.valuemap = json.loads(self.table.item(row, column).data(1))
         msgBox = QMessageBox()
         msgBox.setText(str(self.valuemap))
         msgBox.exec()
     self.queryedit.zoomIn(4)
     self.queryhighlight = SPARQLHighlighter(self.queryedit)
     if self.table.item(row, column) != None and self.table.item(
             row, column).data(2) != None and self.table.item(
                 row, column).data(2) != "ValueMap{}":
         self.queryedit.setPlainText(self.table.item(row, column).data(2))
     else:
         self.queryedit.setPlainText(
             "SELECT ?item\n WHERE {\n ?item ?rel %%" + fieldname +
             "%% . \n}")
     for triplestore in self.triplestoreconf:
         if not "File" == triplestore["name"]:
             self.tripleStoreEdit.addItem(triplestore["name"])
     while self.valmaptable.rowCount() > 0:
         self.valmaptable.removeRow(0)
     row = 0
     self.valmaptable.setColumnCount(2)
     self.valmaptable.setHorizontalHeaderLabels(["From", "To"])
     if self.valuemap != None:
         for key in self.valuemap:
             row = self.valmaptable.rowCount()
             self.valmaptable.insertRow(row)
             item = QTableWidgetItem(key)
             item2 = QTableWidgetItem(self.valuemap[key])
             self.valmaptable.setItem(row, 0, item)
             self.valmaptable.setItem(row, 1, item2)
     toaddset = {"All"}
     for f in layer.getFeatures():
         toaddset.add(f.attribute(fieldname))
     for item in toaddset:
         self.cbox.addItem(str(item))
     self.findMappingButton.clicked.connect(
         self.createValueMappingSearchDialog)
     self.addMappingButton.clicked.connect(self.addMappingToTable)
     self.deleteRowButton.clicked.connect(self.deleteSelectedRow)
     self.applyButton.clicked.connect(self.applyMapping)
 def setBBOXExtentQuery(self):
     if len(QgsProject.instance().layerTreeRoot().children()) > 0:
         self.mts_layer = QgsProject.instance().layerTreeRoot().children()[
             self.chooseBBOXLayer.currentIndex()].layer()
         self.layerExtentOrBBOX = True
         self.setBBOXInQuery()
         self.close()
     else:
         msgBox = QMessageBox()
         msgBox.setWindowTitle("No layer loaded in QGIS!")
         msgBox.setText(
             "No layer has been loaded in QGIS to get an extent from!")
         msgBox.exec()
 def addNewLayerToTripleStore(self):
     #ttlstring=self.layerToTTLString(layer)
     queryString = "INSERT DATA { GRAPH <http://example.com/> { " + self.ttlstring + " } }"
     sparql = SPARQLWrapper(self.tripleStoreURLEdit.text())
     sparql.setHTTPAuth(BASIC)
     if self.usernameEdit.text() != "" and self.passwordEdit.text() != "":
         sparql.setCredentials(self.usernameEdit.text(),
                               self.passwordEdit.text())
     sparql.setQuery(queryString)
     sparql.method = 'POST'
     results = sparql.query()
     msgBox = QMessageBox()
     msgBox.setWindowTitle("SPARQL UPDATE Status")
     msgBox.setText(str(results.response.read()))
     msgBox.exec()
Exemplo n.º 17
0
 def on_success(r):
     self.show_results()
     if not self.settings.show_result_layer_info:
         return
     msg_box = QMessageBox(self.ui)
     msg_box.setText(
         'Die Ergebnislayer wurden dem QGIS-Layerbaum '
         'in der Gruppe "Projektwirkung" hinzugefügt. Nur der'
         ' oberste Ergebnislayer ist aktiviert.\n\n'
         'Um die anderen Ergebnisse anzuzeigen, '
         'aktivieren Sie sie bitte manuell im Layerbaum.\n')
     check = QCheckBox('nicht wieder anzeigen')
     msg_box.setCheckBox(check)
     msg_box.exec()
     if check.isChecked():
         self.settings.show_result_layer_info = False
Exemplo n.º 18
0
 def createVarInputDialog(self):
     hasVectorLayer=False
     layers = QgsProject.instance().layerTreeRoot().children()
     for layer in layers:
         if layer.layer().type() == QgsMapLayer.VectorLayer:
             hasVectorLayer=True
     if hasVectorLayer==False:
         msgBox=QMessageBox()
         msgBox.setWindowTitle("No vector layer loaded")
         msgBox.setText("No vector layer has been loaded in QGIS to create a query variable from.")
         msgBox.exec()
         return
     self.interlinkdialog = VarInputDialog(self,self,self.columnvars)
     self.interlinkdialog.setMinimumSize(650, 120)
     self.interlinkdialog.setWindowTitle("Select Column as Variable")
     self.interlinkdialog.exec_()
 def restoreFactory(self):
     __location__ = os.path.realpath(
         os.path.join(os.getcwd(), os.path.dirname(__file__)))
     with open(os.path.join(__location__, 'triplestoreconf.json'),
               'r') as myfile:
         data = myfile.read()
     self.triplestoreconf = json.loads(data)
     self.tripleStoreChooser.clear()
     for item in self.triplestoreconf:
         self.tripleStoreChooser.addItem(item["name"])
     self.writeConfiguration()
     msgBox = QMessageBox()
     msgBox.setWindowTitle("Triple Store Settings Reset!")
     msgBox.setText("Triple store settings have been reset to default!")
     msgBox.exec()
     return
Exemplo n.º 20
0
 def applyMapping(self):
     resmap = {}
     for row in range(self.valmaptable.rowCount()):
         fromm = self.valmaptable.item(row, 0).text()
         to = self.valmaptable.item(row, 1).text()
         resmap[fromm] = to
     msgBox = QMessageBox()
     msgBox.setText(str(resmap))
     msgBox.exec()
     item = QTableWidgetItem("ValueMap{}")
     item.setData(1, str(json.dumps(resmap)))
     if "SELECT ?item\n WHERE {\n ?item ?rel %%" + self.fieldname + "%% . \n}" != self.queryedit.toPlainText(
     ):
         item.setData(2, self.queryedit.toPlainText())
         item.setData(3, self.tripleStoreEdit.currentText())
     self.table.setItem(self.currentrow, self.currentcol, item)
     self.close()
     return resmap
Exemplo n.º 21
0
    def verification_remove_preset(self, item: QListWidgetItem, name: str):
        """Verification of the removal a preset."""
        validate_delete = QMessageBox(
            QMessageBox.Warning, tr('Confirm preset deletion'),
            tr('Are you sure you want to delete the preset \'{}\'?'.format(
                name)), QMessageBox.Yes | QMessageBox.Cancel, self.dialog)
        ok = validate_delete.exec()

        if ok == QMessageBox.Yes:
            self.remove_preset(item, name)
Exemplo n.º 22
0
 def veureInfo(self):
     if self.info is not None:
         box = QMessageBox(self)
         box.setWindowTitle('Info del mapa simbòlic')
         txt = '<table width="600">'
         params = self.info.split('\n')
         for param in params:
             linea = param.strip()
             if linea.endswith(':'):
                 linea += ' ---'
             txt += '<tr><td><nobr>&middot;&nbsp;{}</nobr></td></tr>'.format(linea)
         txt += '</table>'
         box.setTextFormat(Qt.RichText)
         box.setText("Paràmetres d'agregació de dades:")
         box.setInformativeText(txt)
         box.setIcon(QMessageBox.Information)
         box.setStandardButtons(QMessageBox.Ok)
         box.setDefaultButton(QMessageBox.Ok)
         box.exec()
Exemplo n.º 23
0
    def verification_delete_query(self, row: int):
        """Delete a query in the preset"""
        name = self.list_queries.item(row).text()
        validate_delete = QMessageBox(
            QMessageBox.Warning, tr('Confirm query deletion'),
            tr('Are you sure you want to delete the query \'{}\'?'.format(name)),
            QMessageBox.Yes | QMessageBox.Cancel, self
        )
        ok = validate_delete.exec()

        if ok == QMessageBox.Yes:
            self.delete_query(row)
 def finished(self, result):
     self.progress.close()
     if self.feasibleConfiguration and self.testConfiguration:
         msgBox=QMessageBox()	
         msgBox.setStandardButtons(QMessageBox.Yes)
         msgBox.addButton(QMessageBox.No)
         msgBox.setWindowTitle("Automatic Detection Successful")
         msgBox.setText(self.message)
         if msgBox.exec()!=QMessageBox.Yes:
             return
         else:
             self.comboBox.addItem(self.triplestorename)
             if self.tripleStoreChooser!=None:
                 self.tripleStoreChooser.addItem(self.triplestorename)
             index=len(self.triplestoreconf)
             self.triplestoreconf.append({})
             self.triplestoreconf[index]=self.configuration
             self.addTripleStore=False
             self.prefixes.append("")
             for prefix in self.configuration["prefixes"]:                 
                 self.prefixes[index]+="PREFIX "+prefix+":<"+self.configuration["prefixes"][prefix]+">\n"
             if self.permanentAdd!=None and self.permanentAdd:
                 __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))
                 f = open(os.path.join(__location__, 'triplestoreconf_personal.json'), "w")
                 f.write(json.dumps(self.triplestoreconf,indent=2))
                 f.close()
             if self.parentdialog!=None:
                 self.parentdialog.close()
     elif self.feasibleConfiguration:
         msgBox=QMessageBox()
         msgBox.setText(self.message)
         msgBox.setWindowTitle("Automatic Detection Successful")
         msgBox.exec()
     else:
         msgBox=QMessageBox()
         msgBox.setText(self.message)
         msgBox.setWindowTitle("Automatic Detection Failed")
         msgBox.exec()
     iface.messageBar().pushMessage("Detect Triple Store Configuration", "OK", level=Qgis.Success)
Exemplo n.º 25
0
 def onRemoveParameterSet(self):
     currParamset = self.fieldParamSet.currentText()
     # No action if there is no parameter set specified
     if currParamset == '':
         return
     # Standard set cannot be deleted
     if currParamset == self.paramHandler.defaultSet:
         QMessageBox.critical(self, self.tr('Parameterset loeschen'),
             self.tr('Standardparameterset kann nicht geloescht werden.'), QMessageBox.Ok)
         return
     
     # Ask before removing
     msgBox = QMessageBox()
     msgBox.setIcon(QMessageBox.Information)
     msgBox.setWindowTitle(self.tr('Parameterset loeschen'))
     msgBox.setText(self.tr('Moechten Sie das Parameterset wirklich loeschen?'))
     msgBox.setStandardButtons(QMessageBox.No | QMessageBox.Yes)
     noBtn = msgBox.button(QMessageBox.No)
     noBtn.setText(self.tr("Nein"))
     yesBtn = msgBox.button(QMessageBox.Yes)
     yesBtn.setText(self.tr("Ja"))
     msgBox.show()
     msgBox.exec()
     
     if msgBox.clickedButton() == yesBtn:
         success = self.paramHandler.removeParameterSet(currParamset)
         if not success:
             QMessageBox.critical(self, self.tr('Parameterset loeschen'),
                 self.tr('Ein Fehler ist aufgetreten. Parameterset kann nicht geloescht werden.'), QMessageBox.Ok)
         else:
             # Set default set
             self.paramHandler.setParameterSet(self.paramHandler.defaultSet)
             # Update drop down list to remove set
             self.fillParametersetList()
             # Fill in values of default set
             self.fillInValues()
             # Deactivate / Activate status of field HMKran depending on
             #  point type of start point
             self.updateHMKran(self.projectHandler.A_type)
Exemplo n.º 26
0
 def applyVar(self):
     layers = QgsProject.instance().layerTreeRoot().children()
     index=self.chooseLayer.currentIndex()
     layer = layers[index].layer()
     layername=self.chooseLayer.currentText()
     fieldname=self.chooseField.currentText()
     if layer.featureCount()==0:
         msgBox=QMessageBox()
         msgBox.setText("The layer column does not contain any features, therefore no query variable will be created!")
         msgBox.exec()
         self.close()
         return
     if self.varNameEdit.text()!="":
         varname="?_"+self.varNameEdit.text()
     else:
         varname="?_"+layername.replace(" ","")+"_"+fieldname.replace(" ","")
     self.inputfield.insertPlainText(varname)
     queryinsert="VALUES "+varname+" {"
     attlist={""}
     for f in layer.getFeatures():
         attlist.add(f[fieldname])
     for att in attlist:
         if att!="":
             if self.varType.currentText()=="URI" or (self.varType.currentText()=="Automatic" and att.startswith("http")):
                 query+="<"+att+">"
             elif self.varType.currentText()=="Integer" or self.varType.currentText()=="Double":
                 query+=att
             elif self.varType.currentText()=="Date":
                 query+="\""+att+"\"^^xsd:date"
             elif self.varType.currentText()=="String" or self.varType.currentText()=="Automatic":
                 queryinsert+="\""+att+"\""
                 if self.isLabelLabel.isChecked():
                     queryinsert+="@"+self.labelLang.text()
             queryinsert+=" "
     queryinsert+="}"
     self.columnvars[varname]=queryinsert
     self.close()
Exemplo n.º 27
0
 def finished(self, result):
     counter = 0
     if self.sortedatt != None:
         for att in self.sortedatt:
             if att[1] < 1:
                 continue
             if att[0] in self.labels:
                 item = QListWidgetItem()
                 item.setText(self.labels[att[0]] + " (" + str(att[1]) +
                              "%)")
                 item.setData(1, self.urilist[att[0]])
                 self.searchResult.addItem(item)
                 counter += 1
             else:
                 item = QListWidgetItem()
                 item.setText(att[0] + " (" + str(att[1]) + "%)")
                 item.setData(1, self.urilist[att[0]])
                 self.searchResult.addItem(item)
     else:
         msgBox = QMessageBox()
         msgBox.setText(
             "The enrichment search query did not yield any results!")
         msgBox.exec()
     self.progress.close()
 def finished(self, result):
     if self.query == "":
         msgBox = QMessageBox()
         msgBox.setWindowTitle("No search query specified")
         msgBox.setText("No search query specified for this triplestore")
         msgBox.exec()
         return
     if "SELECT" in self.query:
         if len(self.results["results"]) == 0 or len(
                 self.results["results"]["bindings"]) == 0:
             msgBox = QMessageBox()
             msgBox.setWindowTitle("Empty search result")
             msgBox.setText("The search yielded no results")
             msgBox.exec()
             return
         for res in self.results["results"]["bindings"]:
             item = QListWidgetItem()
             item.setData(1, str(res["class"]["value"]))
             if "label" in res:
                 item.setText(
                     str(res["label"]["value"] + " (" +
                         res["class"]["value"] + ")"))
             else:
                 item.setText(str(res["class"]["value"]))
             self.searchResult.addItem(item)
     else:
         i = 0
         for result in self.results:
             item = QListWidgetItem()
             item.setData(1, self.qids[i])
             item.setText(str(self.results[result]))
             self.searchResult.addItem(item)
             i += 1
     iface.messageBar().pushMessage("Searched for concepts in",
                                    "OK",
                                    level=Qgis.Success)
Exemplo n.º 29
0
 def getClassesFromLabel(self, comboBox):
     viewlist = []
     resultlist = []
     label = self.conceptSearchEdit.text()
     if label == "":
         return
     language = "en"
     results = {}
     self.searchResult.clear()
     query = ""
     position = self.tripleStoreEdit.currentIndex()
     if self.tripleStoreEdit.currentIndex() > len(self.triplestoreconf):
         if self.findProperty.isChecked():
             self.addVocab[self.addVocab.keys()[
                 position -
                 len(self.triplestoreconf)]]["source"]["properties"]
             viewlist = {k: v for k, v in d.iteritems() if label in k}
         else:
             self.addVocab[self.addVocab.keys()[
                 position - len(self.triplestoreconf)]]["source"]["classes"]
             viewlist = {k: v for k, v in d.iteritems() if label in k}
         for res in viewlist:
             item = QListWidgetItem()
             item.setData(1, val)
             item.setText(key)
             self.searchResult.addItem(item)
     else:
         if self.findProperty.isChecked():
             if "propertyfromlabelquery" in self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() + 1]:
                 query = self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() +
                     1]["propertyfromlabelquery"].replace(
                         "%%label%%", label)
         else:
             if "classfromlabelquery" in self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() + 1]:
                 query = self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() +
                     1]["classfromlabelquery"].replace("%%label%%", label)
         if query == "":
             msgBox = QMessageBox()
             msgBox.setText(
                 "No search query specified for this triplestore")
             msgBox.exec()
             return
         if "SELECT" in query:
             query = query.replace("%%label%%",
                                   label).replace("%%language%%", language)
             sparql = SPARQLWrapper(
                 self.triplestoreconf[self.tripleStoreEdit.currentIndex() +
                                      1]["endpoint"],
                 agent=
                 "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
             )
             #msgBox=QMessageBox()
             #msgBox.setText(query+" - "+self.triplestoreconf[self.tripleStoreEdit.currentIndex()+1]["endpoint"])
             #msgBox.exec()
             sparql.setQuery(
                 self.prefixes[self.tripleStoreEdit.currentIndex() + 1] +
                 query)
             sparql.setReturnFormat(JSON)
             results = sparql.query().convert()
             #msgBox=QMessageBox()
             #msgBox.setText(str(results))
             #msgBox.exec()
             if len(results["results"]) == 0:
                 msgBox = QMessageBox()
                 msgBox.setText("The search yielded no results")
                 msgBox.exec()
                 return
             for res in results["results"]["bindings"]:
                 item = QListWidgetItem()
                 item.setData(1, str(res["class"]["value"]))
                 if "label" in res:
                     item.setText(
                         str(res["label"]["value"] + " (" +
                             res["class"]["value"] + ")"))
                 else:
                     item.setText(str(res["class"]["value"]))
                 self.searchResult.addItem(item)
         else:
             myResponse = json.loads(requests.get(query).text)
             qids = []
             for ent in myResponse["search"]:
                 qid = ent["concepturi"]
                 if "http://www.wikidata.org/entity/" in qid and self.findProperty.isChecked(
                 ):
                     qid = "http://www.wikidata.org/prop/direct/" + ent["id"]
                 elif "http://www.wikidata.org/wiki/" in qid and self.findConcept.isChecked(
                 ):
                     qid = "http://www.wikidata.org/entity/" + ent["id"]
                 qids.append(qid)
                 label = ent["label"] + " (" + ent["id"] + ") "
                 if "description" in ent:
                     label += "[" + ent["description"] + "]"
                 results[qid] = label
             i = 0
             for result in results:
                 item = QListWidgetItem()
                 item.setData(1, qids[i])
                 item.setText(str(results[result]))
                 self.searchResult.addItem(item)
                 i += 1
     return viewlist
 def enrichLayerProcess(self):
     layers = QgsProject.instance().layerTreeRoot().children()
     selectedLayerIndex = self.dlg.chooseLayerEnrich.currentIndex()
     self.enrichLayer = layers[selectedLayerIndex].layer().clone()
     attlist = {}
     itemlist = []
     propertylist = []
     excludelist = []
     resultmap = {}
     self.dlg.enrichTableResult.clear()
     self.dlg.enrichTableResult.setRowCount(0)
     self.dlg.enrichTableResult.setColumnCount(
         self.dlg.enrichTable.rowCount())
     fieldnames = []
     for row in range(self.dlg.enrichTable.rowCount()):
         fieldnames.append(self.dlg.enrichTable.item(row, 0).text())
     self.dlg.enrichTableResult.setHorizontalHeaderLabels(fieldnames)
     self.enrichLayer.startEditing()
     for row in range(self.dlg.enrichTable.rowCount()):
         idfield = self.dlg.enrichTable.cellWidget(row, 5).currentText()
         idprop = self.dlg.enrichTable.item(row, 6).text()
         if idprop == None or idprop == "":
             msgBox = QMessageBox()
             msgBox.setText(
                 "ID Property has not been specified for column " +
                 str(self.dlg.enrichTable.item(row, 0).text()))
             msgBox.exec()
             return
         item = self.dlg.enrichTable.item(row, 0).text()
         propertyy = self.dlg.enrichTable.item(row, 1)
         triplestoreurl = ""
         if self.dlg.enrichTable.item(row, 2) != None:
             triplestoreurl = self.dlg.enrichTable.item(row, 2).text()
             print(self.dlg.enrichTable.item(row, 2).text())
         strategy = self.dlg.enrichTable.cellWidget(row, 3).currentText()
         content = ""
         if self.dlg.enrichTable.cellWidget(row, 4) != None:
             content = self.dlg.enrichTable.cellWidget(row, 4).currentText()
         if item != idfield:
             propertylist.append(self.dlg.enrichTable.item(row, 1))
         if strategy == "Exclude":
             excludelist.append(row)
         if strategy != "No Enrichment" and propertyy != None:
             progress = QProgressDialog(
                 "Enriching column " +
                 self.dlg.enrichTable.item(row, 0).text(), "Abort", 0, 0,
                 self.dlg)
             progress.setWindowModality(Qt.WindowModal)
             progress.setCancelButton(None)
             self.qtask = EnrichmentQueryTask(
                 "Enriching column: " +
                 self.dlg.enrichTable.item(row, 0).text(), triplestoreurl,
                 self.enrichLayer, strategy,
                 self.dlg.enrichTable.item(row, 8).text(), row,
                 len(self.enrichLayer.fields()),
                 self.dlg.enrichTable.item(row,
                                           0).text(), self.dlg.enrichTable,
                 self.dlg.enrichTableResult, idfield, idprop,
                 self.dlg.enrichTable.item(row, 1), content, progress)
             QgsApplication.taskManager().addTask(self.qtask)
         else:
             rowww = 0
             for f in self.enrichLayer.getFeatures():
                 if rowww >= self.dlg.enrichTableResult.rowCount():
                     self.dlg.enrichTableResult.insertRow(rowww)
                 #if item in f:
                 newitem = QTableWidgetItem(str(f[item]))
                 self.dlg.enrichTableResult.setItem(rowww, row, newitem)
                 #if ";" in str(newitem):
                 #    newitem.setBackground(QColor.red)
                 print(str(newitem))
                 rowww += 1
         self.enrichLayer.commitChanges()
         row += 1
     iface.vectorLayerTools().stopEditing(self.enrichLayer)
     self.enrichLayer.dataProvider().deleteAttributes(excludelist)
     self.enrichLayer.updateFields()
     self.dlg.enrichTable.hide()
     self.dlg.enrichTableResult.show()
     self.dlg.startEnrichment.setText("Enrichment Configuration")
     self.dlg.startEnrichment.clicked.disconnect()
     self.dlg.startEnrichment.clicked.connect(self.dlg.showConfigTable)
     self.dlg.addEnrichedLayerRowButton.setEnabled(False)
     return self.enrichLayer