3
dŽ                 @   s`!  d Z ddlmZ ddlZddlZddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ ddlmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZm Z  ddl!Z!dZ"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(eededdj)dd e*dD   ed Z+e+j,dd   ej-d!kr4d"Z.nd#Z.d$e. Z/d%e/ Z0ed&e.e0e0f ej1d'Z2eed(e2ed)j3  Z4d*Z5d+Z6d,e5e6f Z7ed-e8e/e0e7d. ej9ej:B d'Z;d/d0 Z<e;j,d1d   e4ed2e;j3  Z=ed3e/e0e0f ej1d'Z>e>j,d4d   ed5e/e/f ej1d'Z?eed6e? Z@eed7e? ZAeed8ed9 ZBed:ZCeCj,d;d   d<ZDed=ZEeEj,d>d   ed?d@eDi ZFeFj,dAd   edBeCjG j3  ZHeHj,dCd   edBeEjG j3  ZIedBeFjG j3  ZJedDeCjG j3  ZKeKj,dEd   edDeEjG j3  ZLeLj,dFd   edDeFjG j3  ZMeMj,dGd   edHZNeNj,dId   edJZOeOj,dKd   edLej1d'ZPePj,dMd   edNej1d'ZQeQj,dOd   edPdQ ZReRj,dRd   edSdT ZSeSj,dUd   edVZTeTj,dWd   edXedYedZe+ ZUed[ed\e4 edZe+ ZVee
eUeVB ZWe@eAB ZXeXj,d]d   ed^e=e4B ZYe+eYB ZZeNeOB ePB eQB Z[ed_ed`e[eedaeBj3 edbj3 edceZj3  B  Z\eJeIB eHB Z]eMeLB eKB Z^eFeEB eCB Z_e_e]B e^B Z`eddj,ded  edfj,dgd  B Zae>eSB ZbeZe\B e`B eaB ebB eRB ZceXecB ZdeXeZB ZeedhedieZ ZfefediedjB ediedkB ediedlB ZgedmedjeedhedmeZ B ZheZe\B e`B eaB ednB ZieeeTB ZjeXZkeCZle Zme ZnedemB ZoedenB Zped6doB dBB ZqeZeTB edpdqeZeTB  B Zre ZsedredserdPeedsere
dtedser   dQ B ZteZeTB eduet B edPes edQ B edvedwdP edses dQ B Zuedxedseueedyeqj3  Zvevedqedzedsev B Zwed{edsewe
d|edsew  Zxed}edsexe
dtedsex  ZyeseyK ZsesZzepZ{e{e
d~e{  Z|e Z}edPe	eo edQ Z~e~j,e( edPe	ep edQ Zej,e( eoZee
d~e  ZezekB e| e
deezekB e|   ZeeZeje e
deeje   ZeeZeedSe edT Zej,e' eedSe edT Zej,e' eme~eB K ZmeneeB K Znede eme B Zej,e& e Zeedeeedee  K Zededhedee d ee d Zedeee
edeeed ee  Zdede d Zdede d Zede ene B Zej,e& e Zeedeeedee  K Zedededme} Zededme}e
ededme}  Ze ZeReedPee edQ B ZededdP ede d~ ede ed~ede  dQ Zejej ededdP ede d~ ede ed~ede  dQ jejZededdP ede d~ ede d~ ede ed~ede  dQ jejZedededme} jejZededed edme} jejZeedwZdPede ede dQ ZededdP ede eddoeB  dQ edede B edede B edede B edede B edede B ededdP ede ede eded d ede[  dQ B ZeededdP ede dQ jejB ededdP ede dQ jejB ededdP ede d~ ede dQ jejB ededdP ede dQ jejB ededdP edeX dQ jejB ededdP ede dQ jejB ededdP ede dQ jejB ededdPede dQ eRB  jejB ededăeR jejB ededƃdP ede dQ jejB ededȃdP ede dQ jejB ededʃdP ede dQ jejB eded̃dP ede dQ jejB eded΃ede jejB eB ededЃdP ede dQ jejB eB eded҃dP ede dQ jejB ededԃdP ede dQ jejB ededփdP ede dQ jejB eded؃dP ede d~ ede dQ jejB ededڃdP ede d~ ede dQ jejB eded܃dP ede d~ ede dQ jejB ededރdP ede d~ ede dQ jejB ededdP ede d~ ede dQ jejB ededdP ede dQ jejB ededdP ede dQ jejB ededdP ede dQ jejB ededdP ede dQ jejB ededdP ede dQ jejB ededdP ede dQ jejB ededdP ede dQ jejB ededdP ede dQ jejB ededeR jejB ededeR jejB ededeR jejB ededdP ede dQ jejB ededdP ede dQ jejÃB ededdP ede dQ jejăB ededdP ede dQ jejŃB eded dP ede dQ jejƃB ededede jejǃB ededdP ede d~ ede d~ ede dQ jejȃB ededdP ede d~ ede dQ jejɃB eded	dP ede d~ ede dQ jejʃB ed
eddP ede d~ ede dQ jej˃B ededdP ede dQ jej̃B ededdP ede dQ jej̃B ededdP ede dQ jej̓B ededdP ede dQ jej΃B ededdP ede dQ jejσB eB eB eB ZeRdPede eede dQ B ZededZeZe jej҃eZB ZededZeZe jej҃ZedPe edQ ZeeB eB e\B e`B eaB eXB Zedduedeփ jej׃eddBedeփ jej؃B eddDedeփ jejكB eB Zededeڃe
eddoedeڃ edd|edeڃ B  jejۃZededeۃe
eddBedeۃ eddDedeۃ B  jej܃ZeZedede݃eeddede݃ edd ede݃ B eddede݃ B eddede݃ B edd!ede݃ B edd"ede݃ B eded#ede B edeeded# dd$d%ede B  jejރZeZed&ede߃e
d'ede߃  jejZed(edee
d)ede  jejZeeK ZeeB eB Zed*ed+ede ZeZZeZedked,e Zed-ed.ed/eeB  ZeeB ed0dPede eed1ed2eX  dQ B eXB Zed3ed4ed5 e	ed6e Zeed7ed8Zed9ed:e edZeZ eed;ef  Zed<ed=e eg Zed>ed?e eg Zed@edAe ef ZedBedCe eh edD eh ZedEedFe eh edD eh ZedGedHe eh edD eh ZedIedJedK e ZedLedMedK e ZedNedMedO e ZedPedMe ZedQedJe ZedRedSed/eZedked,eZ B  ZedTeedUedVeZ edWeeedXe edXeB  e
edYe edO edZe} ZeeB eB eB eB eB eB eB eB eB eB Zed2eXd e
ed[ei d ZeRdPe
ed2eX dQ B d e
ed[eedPe
ei edQ eRB  d ZeeB Zeed\ed]ed^e Ze Zeed_eeedee  K Zedee ed Zed`edaedme} Z edbedhedee edme} Zedcedde edee edme} ZedeedfdP ede ed1 ed2eX dQ Zedged^e Zee B eB eB eB eB eB eB Zedheedsediee
edseed eedsedie  ZeZedjedke	ed6e ZedledmednedoB edeՃ edeeXB B Z	edpedqed5 e	ed6e	 Z
edredseC ZedtedueC Zedveee eee B Zeedweeedxe eedye
 eedze Zed{eed|edwed}B  e	ed~eded2eXedPede ed1 edeX dQ B doB  ZeedOedZe} Zedee e e Ze}edeeB  ed K Z}edee
ede e e e Zededee
ede e e e e
edeedO d eedZededsedie d e e B  Zededede
e e e e Zedede	ed2eedoB  ede
e ee e e Ze ZeedeWeedeede   K ZeWeeB eB eB  ZedeZeZejde  ejde  ejdejd'Zdd Zdd Zdd Z e!dk!r\ddlZdZ"y4ej"ej#d Z$e%d e%e$ W nd ek
!rZ Z& z@e%e&j' e%d$e&j(d  dq  e%e& W Y ddZ&[&X nX dS (  z'
SPARQL 1.1 Parser

based on pyparsing
    )absolute_importN)LiteralRegexOptional	OneOrMore
ZeroOrMoreForwardParseExceptionSuppressCombine
restOfLineGroupParseResultsdelimitedList)CaselessKeyword   )CompParam	ParamList)	operators)decodeUnicodeEscape)binary_typeunichrFc             C   s   t j|  | jdS )N)datatype)rdflibr   r   )literal r   >/tmp/pip-build-7vycvbft/rdflib/rdflib/plugins/sparql/parser.pyneg    s    r   c             C   s   t j| d | d dS )Nr   r   )lang)r   r   )termsr   r   r   setLanguage$   s    r!   c             C   s   t j| d | d dS )Nr   r   )r   )r   r   )r    r   r   r   setDataType(   s    r"   c             C   s  yng }t rtd|  t| }x,t| D ]\}}|dkrT|j|d |d g n|dkr|d t| ks*| |d  dks*| |d  dkrq*|j|d  nt|tr
t|d dkr|j|d  t|dkr||7 }|d |k o| |d  d	kr8|j|d  n.t|tr$||j	 7 }n|dkr8|j| t r*tt|| q*W t rndd
l
}t|j|dd |S    t rdd
l}|j   Y nX d
S )z?
    Expand ; and , syntax for repeat predicates, subjects
    ZTerms,      ;r   .r   z.,;N)indent)DEBUGprintlen	enumerateextendappend
isinstancelistr   asListjsondumps	traceback	print_exc)r    reslitr4   r6   r   r   r   expandTriples,   sD    
0

r<   c             C   s   yTt r:td|  td| d  tdtj g| j d   ttj g| j d  gS  tk
r } zt rttd|  W Y dd}~X nX dS )z5
    expand [ ?p ?o ] syntax for implicit bnodes
    zBnode terms1r   2z>>>>>>>>N)r+   r,   r   BNoder3   r<   	Exception)r    er   r   r   expandBNodeTriples_   s    

rB   c             C   s   t rtd|  g }g }xf| D ]^}t|tr:||7 }|d }tj }|rh||d tjj||tjj|g7 }q||tjj|g7 }qW ||tjjtjj	g7 }||7 }t rtd| |gS )z3
    expand ( 1 2 3 ) notation for collections
    zCollection: r   r$   ZCollectionOutr)   )
r+   r,   r1   r2   r   r?   RDFrestfirstnil)r    r8   otherxbr   r   r   expandCollectionp   s"    


"
rJ   <z[^<>"{}|^`\\%s]* c             c   s   | ]}d | V  qdS )z\x%02XNr   ).0r:   r   r   r   	<genexpr>   s    rN   !   >c             C   s   t j| d S )Nr   )r   ZURIRef)rH   r   r   r   <lambda>   s    rQ   i  uJ   A-Za-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�uS   A-Za-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿_u   \-0-9·̀-ͯ‿-⁀z[%s](?:[%s\.]*[%s])?)flagsprefix:z\\[_~\.\-!$&"'()*+,;=/?#@%]z%[0-9a-fA-F]{2}z(%s|%s)z([%(PN_CHARS_U)s:0-9]|%(PLX)s)
                     (([%(PN_CHARS)s\.:]|%(PLX)s)*
                      ([%(PN_CHARS)s:]|%(PLX)s) )?)Z
PN_CHARS_UZPN_CHARSZPLXc             C   s   t t| jddd  dS )Nr   r      )r   intgroup)matchr   r   r   
_hexExpand   s    rZ   c             C   s   t jdt t| d S )Nz(%s)r   )resub
PERCENT_rerZ   )rH   r   r   r   rQ      s    	localnamez_:[0-9%s](?:[\.%s]*[%s])?c             C   s   t j| d dd  S )Nr   r%   )r   r?   )rH   r   r   r   rQ      s    u   [%s0-9][%s0-9·̀-ͯ‿-⁀]*?$@z[a-zA-Z]+(?:-[a-zA-Z0-9]+)*z[0-9]+c             C   s   t j| d t jjdS )Nr   )r   )r   r   XSDinteger)rH   r   r   r   rQ      s    z[eE][+-]?[0-9]+z[0-9]*\.[0-9]+c             C   s   t j| d t jjdS )Nr   )r   )r   r   rb   decimal)rH   r   r   r   rQ      s    z/[0-9]+\.[0-9]*%(e)s|\.([0-9])+%(e)s|[0-9]+%(e)srA   c             C   s   t j| d t jjdS )Nr   )r   )r   r   rb   double)rH   r   r   r   rQ     s    +c             C   s   t jd| d  t jjdS )Nrf   r   )r   )r   r   rb   rc   )rH   r   r   r   rQ     s   -c             C   s   t | d S )Nr   )r   )rH   r   r   r   rQ     s    c             C   s   t | d S )Nr   )r   )rH   r   r   r   rQ     s    c             C   s   t | d S )Nr   )r   )rH   r   r   r   rQ     s    z)'''((?:'|'')?(?:[^'\\]|\\['ntbrf\\]))*'''c             C   s   t jt| d dd S )Nr   r$   r)   )r   r   r   )rH   r   r   r   rQ   *  s    z+"""(?:(?:"|"")?(?:[^"\\]|\\["ntbrf\\]))*"""c             C   s   t jt| d dd S )Nr   r$   r)   )r   r   r   )rH   r   r   r   rQ   1  s    z#'(?:[^'\n\r\\]|\\['ntbrf\\])*'(?!')c             C   s   t jt| d dd S )Nr   r   )r   r   r   )rH   r   r   r   rQ   :  s    z#"(?:[^"\n\r\\]|\\["ntbrf\\])*"(?!")c             C   s   t jt| d dd S )Nr   r   rh   )r   r   r   )rH   r   r   r   rQ   C  s    ()c             C   s   t jjS )N)r   rC   rF   )rH   r   r   r   rQ   G  s    []c             C   s   t j S )N)r   r?   )rH   r   r   r   rQ   N  s    ac             C   s   t jjS )N)r   rC   type)rH   r   r   r   rQ   R  s    ZBaseZBASEiri
PrefixDeclPREFIXc             C   s   t jj| d S )Nr   )r   termVariable)rH   r   r   r   rQ   c  s    Zpnamer   stringr   z^^r   truec               C   s
   t jdS )NT)r   r   r   r   r   r   rQ     s    falsec               C   s
   t jdS )NF)r   r   r   r   r   r   rQ     s    ZGRAPHZgraphiriDEFAULTZNAMEDALLgraphZUNDEF*ZInversePath^PathNegatedPropertySetpart|!ZDistinctPathZDISTINCTPathEltmodPathEltOrInversePathSequence/PathAlternativer#   r&   Ztriplesr'   QuadsNotTriplesrr   {}QuadsZquadsNotTriplesZquadsMinusGraphPatternMINUSGroupOrUnionGraphPatternZUNIONBuiltin_REGEXZREGEXtextpatternrS   Builtin_SUBSTRZSUBSTRargstartlengthBuiltin_REPLACEZREPLACEreplacementBuiltin_EXISTSZEXISTSZBuiltin_NOTEXISTSZNOTZdistinctvarsZAggregate_CountZCOUNTZAggregate_SumZSUMZAggregate_MinZMINZAggregate_MaxMAXZAggregate_AvgZAVGZAggregate_SampleZSAMPLEZAggregate_GroupConcatZGROUP_CONCATZ	SEPARATOR=	separatorBuiltin_STRZSTRBuiltin_LANGLANGBuiltin_LANGMATCHESZLANGMATCHESZarg1Zarg2Builtin_DATATYPEZDATATYPEBuiltin_BOUNDZBOUNDBuiltin_IRIZIRIZBuiltin_URIURIBuiltin_BNODEZBNODEBuiltin_RANDZRANDBuiltin_ABSZABSBuiltin_CEILZCEILBuiltin_FLOORZFLOORBuiltin_ROUNDZROUNDBuiltin_CONCATZCONCATBuiltin_STRLENZSTRLENBuiltin_UCASEZUCASEBuiltin_LCASEZLCASEBuiltin_ENCODE_FOR_URIZENCODE_FOR_URIBuiltin_CONTAINSZCONTAINSBuiltin_STRSTARTSZ	STRSTARTSBuiltin_STRENDSZSTRENDSBuiltin_STRBEFOREZ	STRBEFOREBuiltin_STRAFTERZSTRAFTERBuiltin_YEARZYEARBuiltin_MONTHZMONTHBuiltin_DAYZDAYBuiltin_HOURSZHOURSBuiltin_MINUTESZMINUTESBuiltin_SECONDSZSECONDSBuiltin_TIMEZONEZTIMEZONE
Builtin_TZZTZBuiltin_NOWZNOWBuiltin_UUIDUUIDBuiltin_STRUUIDZSTRUUIDBuiltin_MD5MD5Builtin_SHA1SHA1Builtin_SHA256SHA256Builtin_SHA384SHA384Builtin_SHA512SHA512Builtin_COALESCEZCOALESCE
Builtin_IFZIFZarg3Builtin_STRLANGZSTRLANGBuiltin_STRDTZSTRDTBuiltin_sameTermZsameTermBuiltin_isIRIZisIRIZBuiltin_isURIZisURIBuiltin_isBLANKZisBLANKBuiltin_isLITERALZ	isLITERALBuiltin_isNUMERICZ	isNUMERICexprFunctionUnaryNot	UnaryPlus
UnaryMinusMultiplicativeExpressionoprG   AdditiveExpressionRelationalExpressionz!=z<=z>=IN )adjacent
joinStringConditionalAndExpressionz&&ConditionalOrExpressionz||FilterZFILTERnamedDatasetClauseZFROMdefaultZGroupAsZASvarGroupClauseZGROUPZBY	conditionZsilentZSILENTLoadZLOADZINTOClearZCLEARDropZDROPCreateZCREATEAddZADDZTOMoveZMOVECopyCOPY
InsertDataZINSERTZDATA
DeleteDataDELETEDeleteWhereZWHEREDeleteClauseInsertClauseUsingClauseZUSINGModifyZWITHZ
withClausedeleteinsertZusingwherevalueZvaluesClauseValuesClauseZVALUEStemplateOptionalGraphPatternZOPTIONALGraphGraphPatternServiceGraphPatternZSERVICEBindZBIND
InlineDataGroupGraphPatternSubTriplesBlockHavingClauseZHAVINGOrderConditionorderASCZDESCOrderClauseZORDERZLIMITlimitZOFFSEToffsetLimitOffsetClausesgroupbyZhavingZorderbyZlimitoffsetZSELECTmodifierZREDUCEDZ
projectionZevar	SubSelectSelectQueryZdatasetClauseConstructQueryZ	CONSTRUCTZFakeGroupGraphPattenAskQueryZASKDescribeQueryZDESCRIBEZprologuerequestUpdate#z \\u([0-9a-f]{4}(?:[0-9a-f]{4})?)c             C   s   dd }t j|| S )a0  
    The syntax of the SPARQL Query Language is expressed over code points in Unicode [UNICODE]. The encoding is always UTF-8 [RFC3629].
    Unicode code points may also be expressed using an \ uXXXX (U+0 to U+FFFF) or \ UXXXXXXXX syntax (for U+10000 onwards) where X is a hexadecimal digit [0-9A-F]
    c          
   S   s2   yt t| jddS    td|  Y nX d S )Nr   rV   zInvalid unicode code point: )r   rW   rX   r@   )mr   r   r   expand  s    z$expandUnicodeEscapes.<locals>.expand)expandUnicodeEscapes_rer\   )qr  r   r   r   expandUnicodeEscapes  s    r  c             C   s<   t | dr| j } t| tr&| jd} t| } tj| ddS )Nreadzutf-8T)parseAll)hasattrr  r1   r   decoder  QueryparseString)r  r   r   r   
parseQuery  s    


r"  c             C   s@   t | dr| j } t| tr&| jd} t| } tj| ddd S )Nr  zutf-8T)r  r   )r  r  r1   r   r  r  
UpdateUnitr!  )r  r   r   r   parseUpdate'  s    


r$  __main__Tz
Syntax Tree:
()  __doc__
__future__r   sysr[   	pyparsingr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   KeywordZparserutilsr   r   r   rL   r   r   Zrdflib.compatr   sixr   r   r   r+   r   r!   r"   r<   rB   rJ   joinrangeZIRIREFsetParseAction
maxunicodeZPN_CHARS_BASE_reZPN_CHARS_U_reZPN_CHARS_reUZ	PN_PREFIXleaveWhitespaceZPNAME_NSZPN_LOCAL_ESC_rer]   ZPLX_redictXUNICODEZPN_LOCALrZ   ZPNAME_LNZBLANK_NODE_LABELZVARNAMEZVAR1ZVAR2ZLANGTAGZINTEGERZEXPONENT_reZDECIMALZDOUBLEcopyZINTEGER_POSITIVEZDECIMAL_POSITIVEZDOUBLE_POSITIVEZINTEGER_NEGATIVEZDECIMAL_NEGATIVEZDOUBLE_NEGATIVEZSTRING_LITERAL_LONG1ZSTRING_LITERAL_LONG2ZSTRING_LITERAL1ZSTRING_LITERAL2ZNILZANONAZBaseDeclrp   ZPrologueZVarZPrefixedNamero   StringZ
RDFLiteralZNumericLiteralPositiveZNumericLiteralNegativeZNumericLiteralUnsignedZNumericLiteralZBooleanLiteralZ	BlankNodeZ	GraphTermZ	VarOrTermZVarOrIriZGraphRefZGraphRefAllZGraphOrDefaultZDataBlockValueZVerbZ
VerbSimpleZIntegerZTriplesNodeZTriplesNodePathZ	GraphNodeZGraphNodePathZPathModZPathOneInPropertySetPathr|   ZPathPrimaryr   r   r   r   ZVerbPathZ
ObjectPathZObjectListPathZGroupGraphPattern
CollectionZCollectionPathZObjectZ
ObjectListZPropertyListPathNotEmptyZPropertyListPathZPropertyListNotEmptyZPropertyListZBlankNodePropertyListZBlankNodePropertyListPathZTriplesSameSubjectZTriplesTemplater   r   ZQuadPatternZQuadDataZTriplesSameSubjectPathr  r   r   
ExpressionZExpressionListZRegexExpressionZ	setEvalFnr   r   ZSubstringExpressionr   ZStrReplaceExpressionr   Z
ExistsFuncZNotExistsFuncZ	_DistinctZ_AggregateParamsZ	Aggregater   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZBuiltInCallZArgListr   ZiriOrFunctionZFunctionCallZBrackettedExpressionZPrimaryExpressionr   r   r   ZUnaryExpressionr   r   ZNumericExpressionr   ZValueLogicalr   r   Z
Constraintr   ZSourceSelectorZDefaultGraphClauseZNamedGraphClauser   ZGroupConditionr   Z_Silentr   r   r   r   r   r   r   r   r   r   r   r   r   r   ZUpdate1ZInlineDataOneVarZInlineDataFullZ	DataBlockr   ZConstructTriplesZConstructTemplater   r   r   r  r  ZGraphPatternNotTriplesr  ZHavingConditionr  r  r	  ZLimitClauseZOffsetClauser  ZSolutionModifierZSelectClauseZWhereClauser  r  r  r  r  r  r   r#  Z	QueryUnitignorecompileIr  r  r"  r$  __name__r!  argvr  r,   errlinecolumnr   r   r   r   <module>   s  <32


	



,.,H




$$
 <DR$p        J$ 	d2(D  B&"""  $j,$P &8,2,*H2H*0Z.F
