2016-08-09 55 views
0

Ich entwickelte meine eigene Ontologie in Arabisch, und jetzt möchte ich einige Sparql Anfrage mit rdflib und sparql. Das Problem ist, wenn ich eine Anfrage mache, ohne die arabische Sprache auf meiner Ontologie zu verwenden, habe ich Antworten ohne Probleme bekommen, aber wenn ich eine spezifische Anfrage auf Eigenschaften unter Verwendung der arabischen Sprache machen will, habe ich einige Fehler :(.Verwenden arabischer Zeichen in Sparql in Python?

irgendjemand . wissen, wie ich mit dem Sie umgehen können, was ich falsch mache ist !!!

Hier mein Code:

graph =rdflib.Graph() 
filename = r'JO Ontology modified 09 june 2014 with properties.owl' 
graph.load(filename, format='xml') 



qres = graph.query( 
    "PREFIX OntoJO:<http://www.owl-ontologies.com/Ontology1400008538.owl#>" + 
    "SELECT ?path " + 
    "WHERE { ?lois_ordinaires OntoJO:ministere_lord ?ministere_lord ."+ 
    "?lois_ordinaires OntoJO:a_un_chemin ?y ."+ 
    " ?y OntoJO:chemin ?path ."+ 
    "FILTER(regex(?ministere_lord,'وزارة المالية'))}",) 

for row in qres: 

    print row[0] 

die Fehler:

File "C:\Users\Mehdi\workspace\My_work\Test\Recherche.py", line 38, in main 
"FILTER(regex(?ministere_lord,'وزارة المالية'))}",) 
File "build\bdist.win-amd64\egg\rdflib\graph.py", line 920, in query 

File "C:\Python27\lib\site-packages\rdfextras-0.4-py2.7.egg\rdfextras\sparql\components.py", line 168, in __new__ 
return unicode.__new__(cls, value) 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd9 in position 0:  ordinal not in range(128) 
+0

Dies scheint nicht SPARQL spezifisch zu sein, sondern eher etwas mit rdflib. Irgendwann versucht der Ascii-Codec etwas zu dekodieren, das nicht ASCII ist. (Es scheint etwas in den Rdfextras Sachen zu sein.) –

+0

@Joshua war es nur ein Problem des Zitats, ich reparierte es. Dank bro. – Mehdi

Antwort

0

i gefunden die richtige Syntax dafür :).

"FILTER(regex(?ministere_lord,'وزارة المالية'))}",) 

durch diese::

ich nur diese Zeile ändern

"FILTER (regex(?ministere_lord,'""" +u"وزارة المالية"+ """')) }""" ,) 

so die sparql Anfrage:

graph =rdflib.Graph() 
filename = r'JO Ontology modified 09 june 2014 with properties.owl' 
graph.load(filename, format='xml') 

qres = graph.query( 

    """ PREFIX OntoJO:<http://www.owl-ontologies.com/Ontology1400008538.owl#> 
    SELECT ?path 
    WHERE { ?lois_ordinaires OntoJO:ministere_lord ?ministere_lord . 
    ?lois_ordinaires OntoJO:a_un_chemin ?y . 
    ?y OntoJO:chemin ?path .  
    FILTER (regex(?ministere_lord,'""" +u"وزارة المالية"+ """')) 

    }""" ,)