2016-08-09 2 views
0

Я разработал свою собственную онтологию на арабском языке, и теперь я хочу сделать запрос на sparql, используя rdflib и sparql. Проблема в том, что когда я делаю запрос без использования арабского языка в своей онтологии, я получил ответы без проблем, но когда я хочу сделать конкретный запрос о свойствах с использованием арабского языка, я получил некоторые ошибки :(Использование арабских символов в sparql в python?

любой . знать, как я могу иметь дело с этим, пожалуйста, что я делаю не так !!!

Вот мой код:

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] 

ошибки:

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

Это не кажется, SPARQL конкретно, а скорее что-то с rdflib. В какой-то момент кодек ascii пытается декодировать что-то, что не является ASCII. (Это похоже на что-то в материалах rdfextras.) –

+0

@ Joshua это была просто проблема цитаты, я ее исправил. Спасибо брат. – Mehdi

ответ

0

я нашел правильный синтаксис для этого :).

я просто изменить эту строку:

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

по этому:

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

так SPARQL запрос:

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"وزارة المالية"+ """')) 

    }""" ,) 
Смежные вопросы