2016-08-09 4 views
0

저는 아랍어로 제 자신의 온톨로지를 개발했습니다. 이제 rdflibsparql을 사용하여 일부 sparql 요청을하고 싶습니다. 문제는 내가 온톨로지에서 아랍어를 사용하지 않고 요청할 때 문제없이 답변을 얻었지만 아랍어 언어를 사용하는 속성에 대한 특정 요청을 수행하려고 할 때 몇 가지 오류가 발생합니다. (Python으로 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,'وزارة المالية'))}",) 

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

    }""" ,) 
관련 문제