From 68a6f7b5cbaee15e765aab8ab0a05e072f4c63c7 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: Wed, 12 Jul 2017 00:16:04 +0200
Subject: [PATCH] sparql support

---
 Sparql.py                         |  89 ++++++++++++++++++++++++++++++
 __pycache__/Sparql.cpython-35.pyc | Bin 0 -> 3109 bytes
 api.py                            |   1 +
 3 files changed, 90 insertions(+)
 create mode 100644 Sparql.py
 create mode 100644 __pycache__/Sparql.cpython-35.pyc

diff --git a/Sparql.py b/Sparql.py
new file mode 100644
index 0000000..f562f3d
--- /dev/null
+++ b/Sparql.py
@@ -0,0 +1,89 @@
+from SPARQLWrapper import SPARQLWrapper, JSON
+from flask import jsonify
+sparql = SPARQLWrapper("http://dbpedia.org/sparql")
+
+
+#Bekommt den Namen des Kuenstlers
+#Gibt einen Tupel (Name, Geschlecht, Geburtsdatum, Todesdatum, Beschreibung) zurueck
+def sendSparqlQuery(name):
+    if "(" in name:
+        name = name.split(" (")[0]
+    print("Name :" + name+": ")
+    results = send(name)
+    print("Empfange")
+    test = results['results']['bindings']
+    print(len(test))
+    if(len(test) >= 1):
+        tests = test
+        for test in tests:
+            name = test['name']['value']
+            gender = test['gender']['value']
+            birth = test['birth']['value']
+            death = test['death']['value']
+            description = test['description']['value']
+            return (name, gender, birth, death, description)
+    else:
+        return ("No Information", "No Information", "No Information", "No Information", "No Information")
+
+
+
+
+
+def send(name):
+    print("Bearbeite")
+    print("""
+            PREFIX owl: <http://www.w3.org/2002/07/owl#>
+        PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+        PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+        PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+        PREFIX foaf: <http://xmlns.com/foaf/0.1/>
+        PREFIX dc: <http://purl.org/dc/elements/1.1/>
+        PREFIX : <http://dbpedia.org/resource/>
+        PREFIX dbpedia2: <http://dbpedia.org/property/>
+        PREFIX dbpedia: <http://dbpedia.org/>
+        PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
+        PREFIX dbo: <http://dbpedia.org/ontology/>#
+
+
+        select ?person ?name ?birth ?description where {
+          ?person a dbo:Person ;
+                  foaf:name ?name ;
+                  dbo:birthDate ?birth ;
+                  dbo:abstract ?description       
+          filter langMatches(lang(?description),'en')
+
+          FILTER regex(str(?name), """+ "\"" + name+ "\"" +""")
+        }
+        order by ?person
+        """)
+    sparql.setQuery("""
+            PREFIX owl: <http://www.w3.org/2002/07/owl#>
+        PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+        PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+        PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+        PREFIX foaf: <http://xmlns.com/foaf/0.1/>
+        PREFIX dc: <http://purl.org/dc/elements/1.1/>
+        PREFIX : <http://dbpedia.org/resource/>
+        PREFIX dbpedia2: <http://dbpedia.org/property/>
+        PREFIX dbpedia: <http://dbpedia.org/>
+        PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
+        PREFIX dbo: <http://dbpedia.org/ontology/>#
+
+
+        select ?person ?name ?gender ?birth ?death ?description where {
+          ?person a dbo:Person ;
+                  foaf:name ?name ;
+                  foaf:gender ?gender;
+                  dbo:birthDate ?birth ;
+                  dbo:deathDate ?death;
+                  dbo:abstract ?description       
+          filter langMatches(lang(?description),'en')
+
+          FILTER regex(str(?name), """+ "\"" + name+ "\"" +""")
+        }
+        order by ?person
+        """)
+    sparql.setReturnFormat(JSON)
+    return  sparql.query().convert()
+
+
diff --git a/__pycache__/Sparql.cpython-35.pyc b/__pycache__/Sparql.cpython-35.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9d2bbfed60a3c177c4aaf76737bb2fadd4ed36ed
GIT binary patch
literal 3109
zcmWgV<>h+nn;MzT!@%&E0SPcMFfceUFfbJRF)%QsFfgPrGUPBY<T5ZsF)-vZGDI;l
zFoHyx7;=~xa+w*Tm>C#T85mNS8JZaxqF5MGSQt`R8Cn<^qF5PH*cejS!E82$6b^=9
zP0p7fi!_;T@dgJt1_k<r7bO-Hq!!&`@e20$(`3BGo>iQmmzh>sC7DrDQedU8pORFN
znv$8QmtT~wUtEw_RG5>@2r`0!fq{d8fq{*Ifx#K%*7qQ{GBVUKFl4ha6v=}aSquy*
zOdv<4Ff&NjGBA`dg4|Zaz#yK&${^m%$iP^_1X9<`$WY4&mSqE}W~^ZZIa)G>gF&*E
z2_#;^%uoY12&@OjN#SJ3W@RXP4w9>7W~j(!s9|PsiH%{XWdaGMa4|@xaDy$bVPZ((
zf$~_ua=cI;E11Uz<*|Wz{7@b{$Za(&3^l9_HEawu><nqF48h@fEDR}v48bW348fX0
ze!mzss+bfsia<e9#paioo2p<{#bl)r#o?M;kd~O2o_dSDD7CmWr=&QFBPla4B{MI*
z_$5g7Etb5*+|*mFWr;bZskhkDQ}a?%i*B(dWfqlW++s~hO)SZ{#hsE`oLrPyP?DLS
z_lwUjU%@jkEx#x?5yaPIE#hNfV8BLbvfN@VF38C&xy4#gl$lp@i={X<FXa|<PHLVe
zM-eF2ia^nJi=`yBxa1Zqh%7GR0vW~)B6vUqF9QR^N`@j)1_p*-^7<M1xvBd3Ihkdt
zMfwrGKDr^P$r<{=;MAa3P<e|VWIlu&SejZ?39_PC36x40c^HKmg&27lxfuBv1sH`G
z*%)~l`QT8TsYslGfdQVPKmo%HOHpwQ3=AdU)DMn!aAHbfW)KG_AZ7;f6c%VAVr0l-
z0wsA|lFSSxEZ~Gy!pM-t%FxWfki`ZfgEiUwqBxyW6N{2kGfPqvr!q4za48^xfFM^l
z&j^M5@*FD#8)$wgFE7_CHwI@1BLf2?eFJm-{PG-SJGe%uri$VeT$&6)VHlj8k(!%`
zsjny{tr(X^1APNS{i2jK-D2FDvFbInw6xSWFw!?N(gka;%qvN((9J8xv_36AF%4lv
zMQ%=Bv0ie1u0BXy-$2h$AH$<5$q4lYrA0a5ph-#APt8fqP0cGQ);Gka3!w+OfGJ8X
z&Mz%WPQ_viq!=>7uCJgdzaX`!q!On-?AkE=Qk<QSGw@A70SHo{pPXNmiWzb#N%`1q
z$<Hgv&&f}()VEXS;({lW;?$hf<Prt@g4Cko{5%DFP-&oG56=Dy_DK0&p*$nCC{>{v
zu2BK5Cs6@pX8^<iYa|7*Bn*l)D~Q2h5}O*35nx+g5=&BH4#1@_F{!wuC=ujrWEVoL
zL$W_DGp8iANFgUNFWon>Bsn9sSOdh?K=zlWj(TdIx+Wq(6cpS%eL`G=6pB*QQ!6xz
zONunWfugCS@QYEYN>>wZK`oq>UzCzsq>xkz3lg|Q;^)!4tN@OFc)>NAml4G_UGg%d
zN{3}BdvKLb*Q^bWf0!#EG_H(IbO`|V1*E6|GjSO>KqZAHdyxPG1H&ygNK-Y6qd2t$
z+$4$OFHS89N-ZfZ%5wuZp^8B5j9aXQp!Uiw_T>D$vecpyO-4xb2-NHWw|$DlK#d_m
z1_lNNP$O3e+@|4TWESOT=3rzK2a&vtMId=UP4*&C!yRgFT25kdb`c9mw<L%FHFLn~
hAjYCvaErqxH$SB`C)Ezr04fGGpTrmi7<pKEBmho*4<Y~n

literal 0
HcmV?d00001

diff --git a/api.py b/api.py
index a784e24..46f9525 100644
--- a/api.py
+++ b/api.py
@@ -1,6 +1,7 @@
 from flask import Flask, request, jsonify, make_response, g, render_template
 from flask_cors import CORS
 import BaseXClient
+from Sparql import  sendSparqlQuery
 import threading
 import xml.etree.ElementTree as ET
 import xml.dom.minidom as dom
-- 
GitLab