§
    kÃ¿a\Ã  ã                   ó|  — d Z ddlZddlZddlZddlmZ ddlmZmZmZm	Z	 ddl
mZmZ ddlmZmZ ddlmZmZmZ ddlmZmZmZmZmZ dd	lmZ dd
lmZ d„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$dFd„Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*dFd„Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d „ Z4d!„ Z5d"„ Z6 G d#„ d$e7¦  «        Z8d%„ d&„ fd'„Z9d(„ fd)„Z:d*„ d+„ dfd,„Z;d-„ Z<d.„ Z=d/„ Z>d0„ Z?dFd1„Z@d2„ ZAd3„ ZBd4„ ZCd5„ ZDd6„ Zd7„ ZEdGd8„ZFd9„ ZGd:„ ZHdGd;„ZIdGd<„ZJ G d=„ d>e7¦  «        ZKd?efd@„ZLdA„ ZMeNdBk    r§ddlOZOddClPmQZQ ddlRZSeSjT         U                    eOjV        dD         ¦  «        r) eWeOjV        dD         ¦  «         X                    ¦   «         ZYneOjV        dD         ZY eQjZ        eY¦  «        Z[ e\e[¦  «          e\dE¦  «          eJe[¦  «        Z] eMe]¦  «         dS dS )Hzƒ
Converting the 'parse-tree' output of pyparsing to a SPARQL Algebra expression

http://www.w3.org/TR/sparql11-query/#sparqlQuery

é    N)Úreduce)ÚLiteralÚVariableÚURIRefÚBNode)ÚPrologueÚQuery)Ú	CompValueÚExpr)Úand_Ú
TrueFilterÚsimplify)ÚInvPathÚAlternativePathÚSequencePathÚMulPathÚNegatedPath)ÚParseResults)Ú
Identifierc                 ó&   — t          d| |¬¦  «        S )NÚOrderBy©ÚpÚexpr©r
   r   s     ú?/usr/lib/python3/dist-packages/rdflib/plugins/sparql/algebra.pyr   r   !   s   € Ý�Y !¨$Ð/Ñ/Ô/Ð/ó    c                 ó$   — t          d| ¬¦  «        S )NÚ
ToMultiSet©r   r   r    s    r   r   r   %   s   € Ý�\ QÐ'Ñ'Ô'Ð'r   c                 ó&   — t          d| |¬¦  «        S )NÚUnion©Úp1Úp2r   r#   s     r   r"   r"   )   ó   € Ý�W ¨Ð+Ñ+Ô+Ð+r   c                 ó&   — t          d| |¬¦  «        S )NÚJoinr#   r   r#   s     r   r(   r(   -   s   € Ý�V  rÐ*Ñ*Ô*Ð*r   c                 ó&   — t          d| |¬¦  «        S )NÚMinusr#   r   r#   s     r   r*   r*   1   r&   r   c                 ó&   — t          d| |¬¦  «        S )NÚGraph)Útermr   r   )r-   Úgraphs     r   r,   r,   5   s   € Ý�W 4¨5Ð1Ñ1Ô1Ð1r   c                 ó(   — t          d| pg ¬¦  «        S )NÚBGP©Útriplesr   r1   s    r   r0   r0   9   s   € Ý�U G M¨rÐ2Ñ2Ô2Ð2r   c                 ó(   — t          d| ||¬¦  «        S )NÚLeftJoin©r$   r%   r   r   r5   s      r   r4   r4   =   s   € Ý�Z B¨2°DÐ9Ñ9Ô9Ð9r   c                 ó&   — t          d| |¬¦  «        S )NÚFilter©r   r   r   r8   s     r   r7   r7   A   s   € Ý�X D¨AÐ.Ñ.Ô.Ð.r   c                 ó(   — t          d| ||¬¦  «        S )NÚExtend©r   r   Úvarr   r;   s      r   r:   r:   E   s   € Ý�X ¨°3Ð7Ñ7Ô7Ð7r   c                 ó$   — t          d| ¬¦  «        S )NÚvalues©Úresr   r?   s    r   ÚValuesrA   I   s   € Ý�X 3Ð'Ñ'Ô'Ð'r   c                 ó&   — t          d| |¬¦  «        S )NÚProject©r   ÚPVr   rD   s     r   rC   rC   M   s   € Ý�Y !¨Ð+Ñ+Ô+Ð+r   c                 ó&   — t          d| |¬¦  «        S )NÚGroupr   r   r   s     r   rG   rG   Q   s   € Ý�W ¨Ð-Ñ-Ô-Ð-r   c                 óª   ‡‡— t          ˆfd„| D ¦   «         ¦  «        t          ˆfd„| D ¦   «         ¦  «         t          | d         t          ¦  «         fS )Nc                 óT   •— g | ]$}|‰v¯t          |t          t          f¦  «        ¯"|‘Œ%S © )Ú
isinstancer   r   )Ú.0ÚxÚ	varsknowns     €r   ú
<listcomp>z_knownTerms.<locals>.<listcomp>X   sB   ø€ ð ð ð àØ˜IÐ%Ð%­*°Q½Å5Ð8IÑ*JÔ*JÐ%ð à%Ð%Ð%r   c              3   óD   •K  — | ]}‰                      |d ¦  «        V — ŒdS )r   N)Úget)rL   rM   Ú	varscounts     €r   ú	<genexpr>z_knownTerms.<locals>.<genexpr>^   s1   øè è € Ð1Ð1 QˆY�]Š]˜1˜aÑ Ô Ð1Ð1Ð1Ð1Ð1Ð1r   é   )ÚlenÚsumrK   r   )ÚtriplerN   rR   s    ``r   Ú_knownTermsrX   U   sz   øø€ åðð ð ð àðñ ô ñ	
ô 	
õ 
Ð1Ð1Ð1Ð1¨&Ð1Ñ1Ô1Ñ	1Ô	1Ð1Ý�v˜a”y¥'Ñ*Ô*Ð*ð
ð 
r   c                 óè  ‡‡— d„ }d„ | D ¦   «         } t          ¦   «         Št          j        t          ¦  «        Š| D ]9}|d         D ].}t	          |t
          t          f¦  «        r‰|xx         dz  cc<   Œ/Œ:d}|t          | ¦  «        k     rÞt          ˆˆfd„| |d…         D ¦   «         ¦  «        | |d…<   | |         d         d         }d}||z   t          | ¦  «        k     rq| ||z            d         d         |k    rV| ||z            d         D ]} ||‰¦  «         Œ|dz  }||z   t          | ¦  «        k     r| ||z            d         d         |k    °V|dz  }|t          | ¦  «        k     °Þd„ | D ¦   «         S )zZ
    Reorder triple patterns so that we execute the
    ones with most bindings first
    c                 ól   — t          | t          t          f¦  «        r|                     | ¦  «         d S d S ©N)rK   r   r   Úadd)r-   rN   s     r   Ú_addvarzreorderTriples.<locals>._addvari   s;   € Ý�d�X¥uÐ-Ñ.Ô.ð 	 Ø�MŠM˜$ÑÔÐÐÐð	 ð 	 r   c                 ó   — g | ]}d |f‘ŒS r[   rJ   ©rL   rM   s     r   rO   z"reorderTriples.<locals>.<listcomp>m   s   € Ð	 Ð	 Ð	 ˜ˆ4�ˆ)Ð	 Ð	 Ð	 r   é   r   c              3   óV   •K  — | ]#}t          |d          ‰‰¦  «        |d          fV — Œ$dS )r`   N)rX   )rL   rM   rR   rN   s     €€r   rS   z!reorderTriples.<locals>.<genexpr>~   s<   øè è € ÐXÐXÈA� Q q¤T¨9°iÑ@Ô@À!ÀAÄ$ÐGÐXÐXÐXÐXÐXÐXr   Nc                 ó   — g | ]
}|d          ‘ŒS )r`   rJ   r_   s     r   rO   z"reorderTriples.<locals>.<listcomp>‡   s   € ÐÐÐ�QˆAˆaŒDÐÐÐr   )	ÚsetÚcollectionsÚdefaultdictÚintrK   r   r   rU   Úsorted)Úl_r]   ÚtÚcÚiÚjrR   rN   s         @@r   ÚreorderTriplesrm   c   sÅ  øø€ ð ð  ð  ð 
!Ð	 ˜RÐ	 Ñ	 Ô	 €BÝ‘”€IÝÔ'­Ñ,Ô,€IØð "ð "ˆØ�1”ð 	"ð 	"ˆAÝ˜!�h­Ð.Ñ/Ô/ð "Ø˜!��” Ñ!��‘øð	"ð 	
€Að �c�"‰gŒgŠ+ˆ+ÝÐXÐXÐXÐXÐXÐQSÐTUÐTVÐTVÔQWÐXÑXÔXÑXÔXˆˆ1ˆ2ˆ2‰ØˆqŒE�!ŒH�QŒKˆØˆØ�!‰e•c˜"‘g”gŠoˆo " Q¨¡U¤)¨A¤,¨q¤/°QÒ"6Ð"6Ø˜˜A™”Y˜q”\ð &ð &�Ø�˜˜9Ñ%Ô%Ð%Ð%Ø�‰FˆAð �!‰e•c˜"‘g”gŠoˆo " Q¨¡U¤)¨A¤,¨q¤/°QÒ"6Ð"6ð 	
ˆQ‰ˆð �c�"‰gŒgŠ+ˆ+ð Ð˜"ÐÑÔÐr   c           	      óÞ   ‡ — t          d„ ‰ ¦  «        Š t          ‰ ¦  «        dz  dk    rt          d¦  «        ‚t          ˆ fd„t	          dt          ‰ ¦  «        d¦  «        D ¦   «         ¦  «        S )Nc                 ó   — | |z   S r[   rJ   )rM   Úys     r   ú<lambda>ztriples.<locals>.<lambda>Œ   s
   € ˜A ™E€ r   é   r   zthese aint triplesc              3   óR   •K  — | ]!}‰|         ‰|d z            ‰|dz            fV — Œ"dS )r`   rT   NrJ   )rL   rM   Úls     €r   rS   ztriples.<locals>.<genexpr>�   s>   øè è € ÐRÐR¸˜1˜Qœ4  1 q¡5¤¨1¨Q°©U¬8Ð4ÐRÐRÐRÐRÐRÐRr   )r   rU   Ú	Exceptionrm   Úrange)rt   s   `r   r2   r2   Š   so   ø€ åÐ!Ð! 1Ñ%Ô%€AÝˆA‰Œ�‰
�qÒÐÝÐ,Ñ-Ô-Ð-ÝÐRÐRÐRÐR½eÀAÅsÈ1ÁvÄvÈqÑ>QÔ>QÐRÑRÔRÑRÔRÐRr   c                 óF  — t          | t          ¦  «        ra| j        dk    r|                     | ¦  «        S | j        dk    r4t	          | j        | j        |                     | j        ¦  «        ¬¦  «        S dS t          | t          ¦  «        r|                     | ¦  «        S dS )z'
    Expand prefixed/relative URIs
    ÚpnameÚliteral)ÚlangÚdatatypeN)	rK   r
   ÚnameÚ
absolutizer   Ústringrz   r{   r   )r   Úprologues     r   ÚtranslatePNamer€   ’   s°   € õ �!•YÑÔð &ØŒ6�WÒÐØ×&Ò& qÑ)Ô)Ð)ØŒ6�YÒÐÝØ”˜qœv°×0CÒ0CÀAÄJÑ0OÔ0Oðñ ô ð ð Ðõ 
�A•vÑ	Ô	ð &Ø×"Ò" 1Ñ%Ô%Ð%ð&ð &r   c                 óò  — t          | t          ¦  «        �rÞ| j        dk    r3t          | j        ¦  «        dk    r| j        d         S t          | j        Ž S | j        dk    r3t          | j        ¦  «        dk    r| j        d         S t          | j        Ž S | j        dk    r‰| j        s| j        S t          | j        t          ¦  «        rGt          | j        ¦  «        dk    rt          d¦  «        ‚t          | j        d         | j        ¦  «        S t          | j        | j        ¦  «        S | j        dk    rot          | j        t          ¦  «        rAt          | j        ¦  «        dk    rt          d¦  «        ‚t          | j        d         ¦  «        S t          | j        ¦  «        S | j        dk    rKt          | j        t          ¦  «        rt          t          | j        Ž ¦  «        S t          | j        ¦  «        S d	S d	S )
z,
    Translate PropertyPath expressions
    ÚPathAlternativer`   r   ÚPathSequenceÚPathEltzDenkfehler!ÚPathEltOrInverseÚPathNegatedPropertySetN)rK   r
   r|   rU   Úpartr   r   ÚmodÚlistru   r   r   r   r    s    r   ÚtranslatePathrŠ   ¡   sÈ  € õ
 �!•YÑÔñ %+ØŒ6Ð&Ò&Ð&Ý�1”6‰{Œ{˜aÒÐØ”v˜a”yÐ å&¨¬Ð/Ð/àŒV�~Ò%Ð%Ý�1”6‰{Œ{˜aÒÐØ”v˜a”yÐ å# Q¤VÐ,Ð,àŒV�yÒ Ð Ø”5ð 	2Ø”v�å˜aœf¥dÑ+Ô+ð 2Ý˜1œ6‘{”{ aÒ'Ð'Ý'¨Ñ6Ô6Ð6å" 1¤6¨!¤9¨a¬eÑ4Ô4Ð4å" 1¤6¨1¬5Ñ1Ô1Ð1àŒVÐ)Ò)Ð)Ý˜!œ&¥$Ñ'Ô'ð 'Ý�q”v‘;”; !Ò#Ð#Ý# MÑ2Ô2Ð2Ý˜qœv aœyÑ)Ô)Ð)å˜qœv‘”Ð&àŒVÐ/Ò/Ð/Ý˜!œ&¥$Ñ'Ô'ð +Ý"¥?°A´FÐ#;Ñ<Ô<Ð<å" 1¤6Ñ*Ô*Ð*ðK%+ð %+ðB 0Ð/r   c                 ó.   — d„ }t          | |¬¦  «        } | S )z�
    Translate the graph pattern used by EXISTS and NOT EXISTS
    http://www.w3.org/TR/sparql11-query/#sparqlCollectFilters
    c                 ó¸   — t          | t          ¦  «        r@| j        dv r9t          | j        ¦  «        | _        | j        j        dk    rd| j        _        d S d S d S d S )N)ÚBuiltin_EXISTSÚBuiltin_NOTEXISTSr7   T)rK   r
   r|   ÚtranslateGroupGraphPatternr.   Úno_isolated_scope©Úns    r   Ú_cztranslateExists.<locals>._cÔ   sh   € Ý�a�Ñ#Ô#ð 	5ØŒvÐ@Ð@Ð@Ý4°Q´WÑ=Ô=�”Ø”7”< 8Ò+Ð+à04�A”GÔ-Ð-Ð-ð	5ð 	5Ø@Ð@à+Ð+r   ©Ú	visitPost)Útraverse)Úer“   s     r   ÚtranslateExistsr˜   Î   s*   € ð5ð 5ð 5õ 	�˜bÐ!Ñ!Ô!€Aà€Hr   c                 ó  — g }d}|t          | ¦  «        k     rh| |         }|j        dk    r=|                     t          |j        ¦  «        ¦  «         |                      |¦  «         n|dz  }|t          | ¦  «        k     °h|r	t          |Ž S dS )z�

    FILTER expressions apply to the whole group graph pattern in which
    they appear.

    http://www.w3.org/TR/sparql11-query/#sparqlCollectFilters
    r   r7   r`   N)rU   r|   Úappendr˜   r   Úpopr   )ÚpartsÚfiltersrk   r   s       r   ÚcollectAndRemoveFiltersrž   á   s“   € ð €Gà	€AØ
�c�%‰jŒjŠ.ˆ.Ø�!ŒHˆØŒ6�XÒÐØ�NŠN�?¨1¬6Ñ2Ô2Ñ3Ô3Ð3Ø�IŠI�a‰LŒLˆLˆLà�‰FˆAð �c�%‰jŒjŠ.ˆ.ð ð Ý�Wˆ~Ðàˆ4r   c                 óf   — d }| j         D ]&}t          |¦  «        }|s|}Œt          ||¦  «        }Œ'|S r[   )r.   r�   r"   )ÚgraphPatternÚAÚgs      r   Ú!translateGroupOrUnionGraphPatternr£   û   sI   € Ø€AàÔð ð ˆÝ& qÑ)Ô)ˆØð 	ØˆAˆAå�a˜‘”ˆAˆAØ€Hr   c                 óP   — t          | j        t          | j        ¦  «        ¦  «        S r[   )r,   r-   r�   r.   ©r    s    r   ÚtranslateGraphGraphPatternr¦     s!   € Ý�Ô"Õ$>¸|Ô?QÑ$RÔ$RÑSÔSÐSr   c                 ó:   — t          t          | ¦  «        ¦  «        S r[   )r   ÚtranslateValuesr¥   s    r   ÚtranslateInlineDatar©     s   € Ý•o lÑ3Ô3Ñ4Ô4Ð4r   c                 ó*  — | j         dk    r"t          t          | ¦  «        d         ¦  «        S | j        sg | _        t	          | j        ¦  «        }g }| j        D ]}|j         dk    r]|r|d         j         dk    s!|                     t          ¦   «         ¦  «         |d         dxx         t          |j        ¦  «        z  cc<   Œj|                     |¦  «         Œ€t          ¦   «         }|D �]•}|j         dk    rRt          |j	        ¦  «        }|j         dk    rt          ||j        |j        ¦  «        }ŒIt          ||t          ¦  «        }Œ`|j         d	k    r$t          |t          |j	        ¦  «        ¬
¦  «        }Œ�|j         dk    rt          |t!          |¦  «        ¬
¦  «        }Œ¹|j         dk    rt          |t#          |¦  «        ¬
¦  «        }Œã|j         dk    r t          |t%          |¦  «        ¬
¦  «        }�Œ|j         dk    rt          ||¬
¦  «        }�Œ,|j         dv rt          ||¬
¦  «        }�ŒH|j         dk    rt'          ||j        |j        ¦  «        }�Œpt+          dt-          |¦  «        ›d|j         ›�¦  «        ‚|rt/          ||¬¦  «        }|S )zB
    http://www.w3.org/TR/sparql11-query/#convertGraphPattern
    Ú	SubSelectr   ÚTriplesBlockéÿÿÿÿr0   r2   ÚOptionalGraphPatternr7   ÚMinusGraphPatternr#   ÚGroupOrUnionGraphPatternÚGraphGraphPatternÚ
InlineDataÚServiceGraphPattern)r0   r:   ÚBindz#Unknown part in GroupGraphPattern: z - r8   )r|   r   Ú	translater‡   rž   rš   r0   r2   r�   r.   r4   r   r   r   r*   r(   r£   r¦   r©   r:   r<   ru   Útyper7   )r    r�   r¢   r   ÚGr¡   s         r   r�   r�     s«  € ð
 Ô˜KÒ'Ð'Ý�) LÑ1Ô1°!Ô4Ñ5Ô5Ð5àÔð ØˆÔå% lÔ&7Ñ8Ô8€Gà
€AØÔð ð ˆØŒ6�^Ò#Ð#àð  ˜!˜Bœ%œ*¨Ò-Ð-Ø—’�™œ‘”�ØˆbŒE�)ÐÐÔ¥¨¬	Ñ 2Ô 2Ñ2ÐÐÑÐà�HŠH�Q‰KŒKˆKˆKå‰Œ€AØð ñ ˆØŒ6Ð+Ò+Ð+Ý*¨1¬7Ñ3Ô3ˆAØŒv˜Ò!Ð!Ý˜Q ¤ Q¤VÑ,Ô,��å˜Q ¥:Ñ.Ô.��ØŒVÐ*Ò*Ð*Ý˜Õ9¸!¼'ÑBÔBÐCÑCÔCˆAˆAØŒVÐ1Ò1Ð1Ý˜Õ?ÀÑBÔBÐCÑCÔCˆAˆAØŒVÐ*Ò*Ð*Ý˜Õ8¸Ñ;Ô;Ð<Ñ<Ô<ˆAˆAØŒV�|Ò#Ð#Ý˜Õ1°!Ñ4Ô4Ð5Ñ5Ô5ˆA‰AØŒVÐ,Ò,Ð,Ý˜˜aÐ Ñ Ô ˆA‰AØŒVÐ(Ð(Ð(Ý˜˜aÐ Ñ Ô ˆA‰AØŒV�vÒÐÝ�q˜!œ& !¤%Ñ(Ô(ˆA‰Aõ �)Ý@DÀQÁÄÀÀÈÌÈÐPñô ð ð ð &Ý˜ 1Ð%Ñ%Ô%ˆà€Hr   c                   ó   — e Zd Zd„ ZdS )ÚStopTraversalc                 ó   — || _         d S r[   )Úrv)Úselfr»   s     r   Ú__init__zStopTraversal.__init__I  s   € ØˆŒˆˆr   N)Ú__name__Ú
__module__Ú__qualname__r½   rJ   r   r   r¹   r¹   H  s#   € € € € € ðð ð ð ð r   r¹   c                 ó   — d S r[   rJ   r‘   s    r   rq   rq   M  s   €  D€ r   c                 ó   — d S r[   rJ   r‘   s    r   rq   rq   M  s   € ¸d€ r   c                 óŒ  ‡‡—  ‰| ¦  «        }|�|S | €dS t          | t          t          f¦  «        rˆˆfd„| D ¦   «         S t          | t          ¦  «        rt          ˆˆfd„| D ¦   «         ¦  «        S t          | t          ¦  «        r.|                      ¦   «         D ]\  }}t          |‰‰¦  «        | |<   Œ ‰| ¦  «        }|�|S | S )úm
    Traverse a parse-tree, visit each node

    if visit functions return a value, replace current node
    Nc                 ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS rJ   ©Ú	_traverse©rL   rM   r•   ÚvisitPres     €€r   rO   z_traverse.<locals>.<listcomp>[  s%   ø€ Ð=Ð=Ð=°a•	˜!˜X yÑ1Ô1Ð=Ð=Ð=r   c                 ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS rJ   rÆ   rÈ   s     €€r   rO   z_traverse.<locals>.<listcomp>]  s%   ø€ ÐCÐCÐC¸A•i  8¨YÑ7Ô7ÐCÐCÐCr   )rK   r‰   r   Útupler
   ÚitemsrÇ   )r—   rÉ   r•   Ú_eÚkÚvals    ``   r   rÇ   rÇ   M  só   øø€ ð 
ˆ�!‰Œ€BØ	€~Øˆ	à€yØˆtå�!•d�LÐ)Ñ*Ô*ð 7Ø=Ð=Ð=Ð=Ð=¸1Ð=Ñ=Ô=Ð=Ý	�A•uÑ	Ô	ð 7ÝÐCÐCÐCÐCÐCÀÐCÑCÔCÑDÔDÐDå	�A•yÑ	!Ô	!ð 7Ø—g’g‘i”ið 	7ð 	7‰FˆAˆsÝ˜S (¨IÑ6Ô6ˆAˆa‰DˆDà	ˆ�1‰Œ€BØ	€~Øˆ	à€Hr   c                 ó   — d S r[   rJ   )r’   Úvs     r   rq   rq   j  s   € ¨€ r   c                 ó*  ‡— g }t          | t          t          t          f¦  «        rˆfd„| D ¦   «         }nTt          | t          ¦  «        r?|                      ¦   «         D ]*\  }}|�#|                     t          |‰¦  «        ¦  «         Œ+ ‰| |¦  «        S )rÄ   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rJ   )Ú_traverseAgg)rL   rM   Úvisitors     €r   rO   z _traverseAgg.<locals>.<listcomp>t  s#   ø€ Ð3Ð3Ð3¨A�|˜A˜wÑ'Ô'Ð3Ð3Ð3r   )rK   r‰   r   rË   r
   rÌ   rš   rÔ   )r—   rÕ   r@   rÎ   rÏ   s    `   r   rÔ   rÔ   j  s�   ø€ ð €Cå�!•d�L­%Ð0Ñ1Ô1ð 7Ø3Ð3Ð3Ð3°Ð3Ñ3Ô3ˆˆå	�A•yÑ	!Ô	!ð 7Ø—g’g‘i”ið 	7ð 	7‰FˆAˆsØˆØ—
’
�<¨¨WÑ5Ô5Ñ6Ô6Ð6øàˆ7�1�c‰?Œ?Ðr   c                 ó   — d S r[   rJ   r‘   s    r   rq   rq   ~  s   €  d€ r   c                 ó   — d S r[   rJ   r‘   s    r   rq   rq   ~  s   € À€ r   c                 ón   — 	 t          | ||¦  «        }|�|S |S # t          $ r}|j        cY d}~S d}~ww xY w)zå
    Traverse tree, visit each node with visit function
    visit function may raise StopTraversal to stop traversal
    if complete!=None, it is returned on complete traversal,
    otherwise the transformed tree is returned
    N)rÇ   r¹   r»   )ÚtreerÉ   r•   ÚcompleteÚrÚsts         r   r–   r–   ~  sX   € ðÝ�d˜H iÑ0Ô0ˆØÐØˆOØˆøÝð ð ð ØŒuˆˆˆˆˆˆøøøøðøøøs   ‚ — ™
4£/©4¯4c                 ó†   — t          | t          ¦  «        r)| j                             d¦  «        rt	          d¦  «        ‚dS dS )zL
    Traverse parse(sub)Tree
    return true if any aggregates are used
    Ú
Aggregate_TN)rK   r
   r|   Ú
startswithr¹   )rM   s    r   Ú_hasAggregaterà   Ž  sP   € õ �!•YÑÔð &ØŒ6×Ò˜\Ñ*Ô*ð 	&Ý Ñ%Ô%Ð%ð&ð &ð	&ð 	&r   c                 óÞ   — t          | t          ¦  «        rU| j                             d¦  «        r=|                     | ¦  «         t          dt          |¦  «        z  ¦  «        }|| d<   |S dS dS )zR
    Collect Aggregates in A
    replaces aggregates with variable references
    rÞ   ú
__agg_%d__r@   N)rK   r
   r|   rß   rš   r   rU   )r—   r¡   Úaggvars      r   Ú_aggsrä   ™  sv   € õ �!•YÑÔð  A¤F×$5Ò$5°lÑ$CÔ$Cð Ø	�Š�‰ŒˆÝ˜,­¨Q©¬Ñ/Ñ0Ô0ˆØˆˆ%‰Øˆð	ð ð ð r   c                 óF  — t          | t          ¦  «        r|                     | ¦  «         t          | t          ¦  «        r_| j        dk    r|                     | j        ¦  «         | S | j        dk    r/| j        r$|                     d„ | j        D ¦   «         ¦  «         | S dS dS )z&
    Find all variables in a tree
    r´   r«   c              3   ó2   K  — | ]}|j         p|j        V — Œd S r[   ©r<   Úevar©rL   rÑ   s     r   rS   z_findVars.<locals>.<genexpr>´  s*   è è € ÐAÐA¨q˜1œ5˜? A¤FÐAÐAÐAÐAÐAÐAr   N)rK   r   r\   r
   r|   r<   Ú
projectionÚupdate)rM   r@   s     r   Ú	_findVarsrì   ¨  s¬   € õ �!•XÑÔð Ø�Š�‰
Œ
ˆ
Ý�!•YÑÔð ØŒ6�VÒÐØ�GŠG�A”E‰NŒNˆNØˆHØŒV�{Ò"Ð"ØŒ|ð BØ—
’
ÐAÐA°A´LÐAÑAÔAÑAÔAÐAØˆHðð ð #Ð"r   c                 óš  — t          | t          ¦  «        rt          | g¦  «        S t          | t          ¦  «        rë| j        dk    rt          ¦   «         | d<   nÆ| j        dk    rCt          t          j        d„ t          || ¦  «        D ¦   «         t          ¦   «         ¦  «        | d<   nxt          t          t          j        |t          ¦   «         ¦  «        ¦  «        | d<   | j        dk    r6| j	        rt          d„ | j	        D ¦   «         ¦  «        }nt          ¦   «         }|S | d         S t          t          j        |t          ¦   «         ¦  «        S )zE
    find which variables may be bound by this part of the query
    ÚRelationalExpressionÚ_varsr:   c                 ó$   — g | ]\  }}|d k    ¯|‘ŒS )r   rJ   )rL   Úchildr‡   s      r   rO   z_addVars.<locals>.<listcomp>Å  s!   € ÐMÐMÐM™;˜5 $¸dÀfºn¸n�¸n¸n¸nr   r«   c              3   ó2   K  — | ]}|j         p|j        V — Œd S r[   rç   ré   s     r   rS   z_addVars.<locals>.<genexpr>Î  s*   è è € ÐBÐB°˜AœE˜O Q¤VÐBÐBÐBÐBÐBÐBr   )
rK   r   rc   r
   r|   r   ÚoperatorÚor_Úziprê   )rM   ÚchildrenÚss      r   Ú_addVarsrø   ¸  s'  € õ �!•XÑÔð Ý�A�3‰xŒxˆÝ	�A•yÑ	!Ô	!ð ØŒ6Ð+Ò+Ð+Ý™œˆAˆg‰JˆJØŒV�xÒÐåÝ”ØMÐM­#¨h¸Ñ*:Ô*:ÐMÑMÔMÝ‘”ñô ˆAˆg‰JˆJõ �V¥H¤L°(½C¹E¼EÑBÔBÑCÔCˆAˆg‰JàŒv˜Ò$Ð$Ø”<ð ÝÐBÐB°Q´\ÐBÑBÔBÑBÔB�A�Aå™œ�Aà�à�ŒzÐå•(”, ­#©%¬%Ñ0Ô0Ð0r   c                 óÄ   — t          | t          ¦  «        r| j                             d¦  «        r| S t          | t          ¦  «        r|| k    rt          d| ¬¦  «        S dS dS )zO
    For each unaggregated variable V in expr
    Replace V with Sample(V)
    rÞ   ÚAggregate_Sample©ÚvarsN)rK   r
   r|   rß   r   )r—   rÑ   s     r   Ú_samplerý   Ù  sn   € õ
 �!•YÑÔð  A¤F×$5Ò$5°lÑ$CÔ$Cð ØˆÝ�!•XÑÔð 5 1¨¢6 6ÝÐ+°!Ð4Ñ4Ô4Ð4ð5ð 5 6 6r   c                 óN   — t          | t          ¦  «        rt          | ¦  «        S d S r[   )rK   r   ÚsimplifyFilters)r—   s    r   Ú_simplifyFiltersr   ä  s,   € Ý�!•TÑÔð "Ý˜qÑ!Ô!Ð!ð"ð "r   c                 óÜ  — g }g }| j         r|| j         D ]t}|j        rkt          |j        t	          j        t          |j        ¬¦  «        ¦  «        |_        t          |j        t	          j        t          |¬¦  «        ¦  «        |_        Œut          | j        t          d¬¦  «        rMt          | j        t          ¦  «        | _        t          | j        t	          j        t          |¬¦  «        ¦  «         t          | j
        t          d¬¦  «        rMt          | j
        t          ¦  «        | _
        t          | j
        t	          j        t          |¬¦  «        ¦  «         | j         ry| j         D ]q}|j        rht          dt          |¦  «        dz   z  ¦  «        }|                     t          d|j        |¬¦  «        ¦  «         |                     ||j        f¦  «         Œrt          d	||¬
¦  «        |fS )N)rÑ   )r¡   F©rÚ   râ   r`   rú   )rü   r@   ÚAggregateJoin)r¡   r   )rê   rè   r–   r   Ú	functoolsÚpartialrý   rä   Úhavingrà   Úorderbyr<   r   rU   rš   r
   )ÚqÚMÚEr¡   rÑ   r»   s         r   ÚtranslateAggregatesr  é  sº  € Ø
€AØ
€Að 	„|ð IØ”ð 	Ið 	IˆAØŒvð IÝ! !¤&­)Ô*;½GÀqÄvÐ*NÑ*NÔ*NÑOÔO�”Ý! !¤&­)Ô*;½EÀQÐ*GÑ*GÔ*GÑHÔH�”øõ �”�-°%Ð8Ñ8Ô8ð :Ý˜AœH¥gÑ.Ô.ˆŒÝ�”�9Ô,­U°aÐ8Ñ8Ô8Ñ9Ô9Ð9õ �”	�=°5Ð9Ñ9Ô9ð ;Ý˜QœY­Ñ0Ô0ˆŒ	Ý�”�IÔ-­e°qÐ9Ñ9Ô9Ñ:Ô:Ð:ð 	„|ð &Ø”ð 	&ð 	&ˆAØŒuð &Ý˜l­c°!©f¬f°q©jÑ9Ñ:Ô:�Ø—’�Ð#5¸A¼EÀrÐJÑJÔJÑKÔKÐKØ—’˜"˜aœe˜Ñ%Ô%Ð%øå�_¨¨QÐ/Ñ/Ô/°Ð2Ð2r   c           	      ó`  — g }| j         s|S | j        s|S t          | j        d         t          ¦  «        s-| j        D ]$}|                     | j         d         |i¦  «         Œ%n?| j        D ]7}|                     t          t          | j         |¦  «        ¦  «        ¦  «         Œ8t          |¦  «        S )Nr   )r<   ÚvaluerK   r‰   rš   Údictrõ   rA   )rÑ   r@   rÏ   Úvalss       r   r¨   r¨     s¼   € ð €CØŒ5ð Øˆ
ØŒ7ð Øˆ
Ý�a”g˜a”j¥$Ñ'Ô'ð /à”7ð 	(ð 	(ˆCØ�JŠJ˜œ˜aœ #�Ñ'Ô'Ð'Ð'ð	(ð ”Gð 	/ð 	/ˆDØ�JŠJ•t�C ¤ tÑ,Ô,Ñ-Ô-Ñ.Ô.Ð.Ð.å�#‰;Œ;Ðr   c                 ó`  — t          | t          ¦  «         t          | j        t          ¬¦  «        | _        t          ¦   «         }t          | j        t          j        t          |¬¦  «        ¦  «         t          | j        ¦  «        }d}| j
        r|g }| j
        j        D ]Y}t          |t          ¦  «        r-|j        dk    r"t          ||j        |j        ¦  «        }|j        }|                     |¦  «         ŒZt'          ||¬¦  «        }d}njt          | j        t*          d¬¦  «        s<t          | j        t*          d¬¦  «        s t/          d„ | j        pg D ¦   «         ¦  «        rt'          |¬	¦  «        }d}|rt3          | |¦  «        \  }}ng }| j        r"t5          t7          | j        j        Ž |¬
¦  «        }| j        r0t;          |t=          t?          | j        ¦  «        ¦  «        ¬¦  «        }| j        stA          |¦  «        }n“tA          ¦   «         }| j        D ]}}|j        r||vr|                     |j        ¦  «         Œ(|j!        r@||vr|                     |j!        ¦  «         |                     |j        |j!        f¦  «         ŒotE          d¦  «        ‚|D ]\  }	}t          ||	|¦  «        }Œ| j        r$tG          |d„ | j        j        D ¦   «         ¦  «        }tI          ||¦  «        }| j%        r9| j%        dk    rt          d|¬	¦  «        }n| j%        dk    rt          d|¬	¦  «        }| j&        rzd}
| j&        j'        �| j&        j'         (                    ¦   «         }
| j&        j)        �0t          d||
| j&        j)         (                    ¦   «         ¬¦  «        }nt          d||
¬¦  «        }||fS )z=
    http://www.w3.org/TR/sparql11-query/#convertSolMod

    r”   r?   FÚGroupAsr   Tr  c              3   ó\   K  — | ]'}|j         ¯	t          |j        t          d ¬¦  «        V — Œ(dS )Fr  N)rè   r–   r   rà   r_   s     r   rS   ztranslate.<locals>.<genexpr>?  sO   è è € ð 
ð 
àØŒvð
Ý�Q”V�]°UÐ;Ñ;Ô;ð
ð 
ð 
ð 
ð 
ð 
r   r    r8   r#   zI expected a var or evar here!c                 óF   — g | ]}t          d |j        |j        ¬¦  «        ‘ŒS )ÚOrderCondition)r   Úorder)r
   r   r  )rL   rj   s     r   rO   ztranslate.<locals>.<listcomp>n  s<   € ð ð ð àõ Ð*°´¸q¼wÐGÑGÔGðð ð r   ÚDISTINCTÚDistinctÚREDUCEDÚReducedr   NÚSlice)r   ÚstartÚlength)r   r  )*rÇ   r   r–   ÚwhererŠ   rc   r  r  rì   r�   ÚgroupbyÚ	conditionrK   r
   r|   r:   r   r<   rš   rG   r  rà   r  Úanyrê   r  r7   r   ÚvaluesClauser(   r   r¨   r‰   rè   ru   r   rC   ÚmodifierÚlimitoffsetÚoffsetÚtoPythonÚlimit)r  ÚVSr	  Ú	aggregateÚ
conditionsrj   r
  rE   rÑ   r—   r$  s              r   rµ   rµ     së  € õ ˆaÕ!Ñ"Ô"Ð"å�q”w­-Ð8Ñ8Ô8€A„Gõ 
‰Œ€BÝˆQŒW•iÔ'­	°rÐ:Ñ:Ô:Ñ;Ô;Ð;õ 	# 1¤7Ñ+Ô+€Aà€IØ„yð Øˆ
à”Ô$ð 	!ð 	!ˆAÝ˜!�YÑ'Ô'ð ¨A¬F°iÒ,?Ð,?Ý˜1˜aœf a¤eÑ,Ô,�Ø”E�Ø×Ò˜aÑ Ô Ð Ð å�A˜JÐ'Ñ'Ô'ˆØˆ	ˆ	å�”�=°5Ð9Ñ9Ô9ðå�A”I�}°uÐ=Ñ=Ô=ðõ ð 
ð 
à”\Ð' Rð
ñ 
ô 
ñ 
ô 
ðõ �AˆJ‰JŒJˆØˆ	àð Ý" 1 aÑ(Ô(‰ˆˆ1ˆ1àˆð 	„xð 8Ý�˜aœhÔ0Ð1°QÐ7Ñ7Ô7ˆð 	„~ð GÝ�A�*¥_°Q´^Ñ%DÔ%DÑEÔEÐFÑFÔFˆàŒ<ð Bå�"‰XŒXˆˆå‰VŒVˆØ”ð 
	Bð 
	BˆAØŒuð 	BØ˜B�;�;Ø—I’I˜aœeÑ$Ô$Ð$øØ”ð BØ˜B�;�;Ø—I’I˜aœfÑ%Ô%Ð%à—’˜!œ& !¤&Ð)Ñ*Ô*Ð*Ð*åÐ @ÑAÔAÐAàð ð ‰ˆˆ1Ý�1�a˜‰OŒOˆˆð 	„yð 
ÝØðð àœÔ,ðñ ô ñ
ô 
ˆõ 	��2‰Œ€Aà„zð *ØŒ:˜Ò#Ð#Ý˜*¨Ð*Ñ*Ô*ˆAˆAØŒZ˜9Ò$Ð$Ý˜) qÐ)Ñ)Ô)ˆAà„}ð 
6ØˆØŒ=ÔÐ+Ø”]Ô)×2Ò2Ñ4Ô4ˆFàŒ=ÔÐ*ÝØ˜1 F°1´=Ô3F×3OÒ3OÑ3QÔ3Qðñ ô ˆAˆAõ ˜' Q¨fÐ5Ñ5Ô5ˆAàˆbˆ5€Lr   c                 ój  — t          | t          ¦  «        r›| j        dk    rl| j        j        dk    r$t	          | j        j        ¦  «        dk    r| j        S | j        j        dk    r$t	          | j        j        ¦  «        dk    r	| j        S dS dS | j        dk    rt          | j        ¦  «        | d<   | S dS dS )zRemove joins to empty BGPsr(   r0   r   r2   N)rK   r
   r|   r$   rU   r2   r%   rm   r‘   s    r   r   r   Œ  s»   € å�!•YÑÔð ØŒ6�VÒÐØŒtŒy˜EÒ!Ð!¥c¨!¬$¬,Ñ&7Ô&7¸1Ò&<Ð&<Ø”t�ØŒtŒy˜EÒ!Ð!¥c¨!¬$¬,Ñ&7Ô&7¸1Ò&<Ð&<Ø”t�ð "Ð!Ð&<Ð&<àŒV�uŠ_ˆ_Ý)¨!¬)Ñ4Ô4ˆAˆi‰LØˆHðð ð ˆ_r   c                 ó¢   — t          | t          ¦  «        r9| j        dk    rt          |¦  «        | d<   dS | j        dv rdS t          |¦  «        S dS )z‚
    Some things can be lazily joined.
    This propegates whether they can up the tree
    and sets lazy flags for all joins
    r(   ÚlazyF)r  r  T)rK   r
   r|   Úall)r’   rö   s     r   Úanalyser.  ™  s[   € õ �!•YÑÔð 	ØŒ6�VÒÐÝ˜H™œˆAˆf‰IØ�5ØŒVÐ,Ð,Ð,Ø�5å�x‘=”=Ð àˆtr   c                 ó`  — |€t          ¦   «         }d|_        |r||_        |r0|                     ¦   «         D ]\  }}|                     ||¦  «         Œ| D ]X}|j        dk    r|j        |_        Œ|j        dk    r3|                     |j        |                     |j        ¦  «        ¦  «         ŒY|S )NÚ ÚBaseÚ
PrefixDecl)r   ÚbaserÌ   Úbindr|   ÚiriÚprefixr}   )r   r3  ÚinitNsr   rÎ   rÑ   rM   s          r   ÚtranslateProloguer8  ¬  sÃ   € àÐÝ‘:”:ˆØˆŒØð ØˆŒØð  Ø—L’L‘N”Nð 	 ð 	 ‰DˆAˆqØ�MŠM˜!˜QÑÔÐÐàð @ð @ˆØŒ6�VÒÐØœEˆHŒMˆMØŒV�|Ò#Ð#Ø�MŠM˜!œ( H×$7Ò$7¸¼Ñ$>Ô$>Ñ?Ô?Ð?øà€Or   c                 óö   — | j         rt          | j         ¦  «        }ng }t          j        t          ¦  «        }| j        r8| j        D ]0}|j         r'||j        xx         t          |j         ¦  «        z  cc<   Œ1||fS r[   )r2   rd   re   r‰   ÚquadsNotTriplesr-   )ÚquadsÚ
alltriplesÚallquadsr  s       r   ÚtranslateQuadsr>  À  s�   € Ø„}ð Ý˜Uœ]Ñ+Ô+ˆ
ˆ
àˆ
åÔ&¥tÑ,Ô,€HàÔð 7ØÔ&ð 	7ð 	7ˆAØŒyð 7Ø˜œÐ Ð Ô ¥G¨A¬IÑ$6Ô$6Ñ6Ð Ð Ñ øà�xÐÐr   c                 óÜ  — | j         dv rnÚ| j         dv rnÐ| j         dv r,t          | j        ¦  «        \  }}|| d<   || d<   | j         dv r	 n›| j         dk    r~| j        r,t          | j        j        ¦  «        \  | j        d<   | j        d<   | j        r,t          | j        j        ¦  «        \  | j        d<   | j        d<   t          | j        ¦  «        | d<   nt          d	| z  ¦  «        ‚|| _        | S )
N)ÚLoadÚClearÚDropÚCreate)ÚAddÚMoveÚCopy)Ú
InsertDataÚ
DeleteDataÚDeleteWherer;  r2   )rI  rH  ÚModifyr  z$Unknown type of update operation: %s)	r|   r>  r;  ÚdeleteÚinsertr�   r  ru   r   )Úur   ri   r  s       r   ÚtranslateUpdate1rN  Ð  s	  € Ø„vÐ4Ð4Ð4ØØ	
ŒÐ*Ð	*Ð	*ØØ	
ŒÐ>Ð	>Ð	>Ý˜aœgÑ&Ô&‰ˆˆ1Øˆˆ'‰
Øˆˆ)‰ØŒ6Ð2Ð2Ð2ØøØ	
Œ�8Ò	Ð	ØŒ8ð 	TÝ5CÀAÄHÄNÑ5SÔ5SÑ2ˆAŒH�YÑ ¤¨'Ñ!2ØŒ8ð 	TÝ5CÀAÄHÄNÑ5SÔ5SÑ2ˆAŒH�YÑ ¤¨'Ñ!2Ý/°´Ñ8Ô8ˆˆ'‰
ˆ
åÐ>ÀÑBÑCÔCÐCà€A„JØ€Hr   c                 ót  — g }d}| j         s|S t          | j        | j         ¦  «        D ]�\  }}t          ||||¦  «        }t	          |t          j        t          |¬¦  «        ¬¦  «        }t          |t          ¦  «        }t	          |t          ¬¦  «        }|                     t          ||¦  «        ¦  «         Œ�|S )z=
    Returns a list of SPARQL Update Algebra expressions
    N©r   r”   )Úrequestrõ   r   r8  r–   r  r  r€   rÇ   r   rŠ   rš   rN  )r  r3  r7  r@   r   r   rM  s          r   ÚtranslateUpdaterR  è  s¼   € ð
 €CØ€HØŒ9ð Øˆ
Ý�A”J ¤	Ñ*Ô*ð 	2ð 	2‰ˆˆ1Ý$ Q¨¨f°hÑ?Ô?ˆõ �Q¥)Ô"3µNÈXÐ"VÑ"VÔ"VÐWÑWÔWˆÝ�aÕ)Ñ*Ô*ˆå�Q¥-Ð0Ñ0Ô0ˆà�
Š
Õ# A xÑ0Ô0Ñ1Ô1Ð1Ð1à€Jr   c                 óp  — t          | d         ||¦  «        }t          | d         t          j        t          |¬¦  «        ¬¦  «        | d<   t          | d         ¦  «        \  }}| d         j        }| d         j        dk    rH| d         j        rt          | d         j        ¦  «        nd}t          | d         j        |||¬¦  «        }nt          | d         j        |||¬¦  «        }t          |t          ¬¦  «        }t          |t          ¬	¦  «         t          |t          ¦  «         t          ||¦  «        S )
z|
    Translate a query-parsetree to a SPARQL Algebra Expression

    Return a rdflib.plugins.sparql.sparql.Query object
    r   r`   rP  r”   ÚConstructQueryN)r   ÚtemplateÚdatasetClause)r   rV  rE   )rÕ   )r8  r–   r  r  r€   rµ   rV  r|   rU  r2   r
   r   rÔ   r.  rø   r	   )	r  r3  r7  r   ÚPrE   rV  rU  r@   s	            r   ÚtranslateQueryrX  ÿ  s!  € õ !  1¤ t¨VÑ4Ô4€Hõ Ø	ˆ!Œ�	Ô)­.À8ÐLÑLÔLðñ ô €A€a�Dõ �a˜”d‰OŒO�E€A€rØ�a”DÔ&€MØˆ„t„yÐ$Ò$Ð$à-.¨q¬T¬]ÐD•7˜1˜Qœ4œ=Ñ)Ô)Ð)Àˆå˜˜!œœ	 Q°ÈÐWÑWÔWˆˆå˜˜!œœ	 Q°mÈÐKÑKÔKˆå
�3¥(Ð
+Ñ
+Ô
+€CÝ��gÐ&Ñ&Ô&Ð&Ý�•hÑÔÐå�˜3ÑÔÐr   c                   ó   — e Zd ZdS )ÚExpressionNotCoveredExceptionN)r¾   r¿   rÀ   rJ   r   r   rZ  rZ     s   € € € € € Ø€Dr   rZ  Úquery_algebrac                 óü   ‡‡‡‡— ddl }d„ Š	 	 	 ddt          dt          dt          fd„Šd	„ Šˆˆˆˆfd
„Št          | j        ‰¬¦  «         t          dd¦  «                             ¦   «         } |j        d¦  «         |S )zÉ

    :param query_algebra: An algebra returned by the function call algebra.translateQuery(parse_tree).
    :return: The query form generated from the SPARQL 1.1 algebra tree for select queries.

    r   Nc                 óx   — t          dd¦  «        }|                     | ¦  «         |                     ¦   «          d S )Nú	query.txtzw+)ÚopenÚwriteÚclose)ÚtextÚfiles     r   Ú	overwritez#translateAlgebra.<locals>.overwrite-  s4   € Ý�K Ñ&Ô&ˆØ�
Š
�4ÑÔÐØ�
Š
‰Œˆˆˆr   r`   Úsearch_from_matchÚsearch_from_match_occurrenceÚcountc                 ó®  — t          dd¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   d„ }|r>|r< ||||¦  «        }|d |…         }	||d …                              | ||¦  «        }
|	|
z   }n|                     | ||¦  «        }t          dd¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr^  rÛ   c                 óþ   — |                       ¦   «                              |¦  «        }|dk    rO|dk    rI|                       ¦   «                              ||t          |¦  «        z   ¦  «        }|dz  }|dk    r|dk    °I|S )Nr   r`   )ÚlowerÚfindrU   )ÚhaystackÚneedler’   r  s       r   Úfind_nthz3translateAlgebra.<locals>.replace.<locals>.find_nth=  s}   € Ø—N’NÑ$Ô$×)Ò)¨&Ñ1Ô1ˆEØ˜1’*�*  Q¢ Ø ŸšÑ(Ô(×-Ò-¨f°e½cÀ&¹k¼kÑ6IÑJÔJ�Ø�Q‘�ð ˜1’*�*  Q¢ ð ˆLr   Úw)r_  ÚreadÚreplacer`  )ÚoldÚnewre  rf  rg  rc  Úfiledatarn  ÚpositionÚfiledata_preÚfiledata_posts              r   rq  z!translateAlgebra.<locals>.replace2  s†  € õ �+˜sÑ#Ô#ð 	# tØ—y’y‘{”{ˆHð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð	ð 	ð 	ð ð 	9Ð!=ð 	9Ø�xØÐ+Ð-Iñô ˆHð $ I X IÔ.ˆLØ$ X Y YÔ/×7Ò7¸¸SÀ%ÑHÔHˆMØ# mÑ3ˆHˆHà×'Ò'¨¨S°%Ñ8Ô8ˆHõ �+˜sÑ#Ô#ð 	! tØ�JŠJ�xÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   ‘2²6¹6Â'C
Ã
CÃCc                 óN  — t          | t          ¦  «        r|                      ¦   «         S t          | t          ¦  «        rd| j        z   dz   S t          | t
          ¦  «        rd| j        z   dz   S t          | t          ¦  «        r| S t          d                     | ¦  «        ¦  «        ‚)Nú{ú}ú,The expression {0} might not be covered yet.)	rK   r   Ún3r
   r|   r   ÚstrrZ  Úformat)Únode_args    r   Úconvert_node_argz*translateAlgebra.<locals>.convert_node_argR  s¤   € Ý�h¥
Ñ+Ô+ð 	Ø—;’;‘=”=Ð Ý˜¥)Ñ,Ô,ð 		Ø˜œÑ&¨Ñ,Ð,Ý˜¥$Ñ'Ô'ð 	Ø˜œÑ&¨Ñ,Ð,Ý˜¥#Ñ&Ô&ð 	ØˆOå/Ø>×EÒEÀhÑOÔOñô ð r   c                 ó†3  •— t          | t          ¦  «        �r§| j        dk    r ‰'d| j        j        z   dz   ¦  «         dES | j        dk    r\d                     d„ | j        D ¦   «         ¦  «        } ‰(d|¦  «          ‰(dd	d
¬¦  «          ‰(ddd
¬¦  «          ‰(ddd
¬¦  «         dES | j        dk    r. ‰(dd| j        j        z   dz   | j        j        z   dz   ¦  «         dES | j        dk    r. ‰(dd| j        j        z   dz   | j        j        z   dz   ¦  «         dES | j        dk    rµt          | j        t          ¦  «        r| j        j        }nt          d¦  «        ‚| j        rd| j        j        dk    r0 ‰(dd| j        j        z   dz   ¦  «          ‰(dd|z   dz   ¦  «         dES  ‰(dd|z   dz   | j        j        z   dz   ¦  «         dES  ‰(dd|z   dz   ¦  «         dES | j        dk    r. ‰(dd | j        j        z   d!z   | j        j        z   dz   ¦  «         dES | j        d"k    r=d#| j
                             ¦   «         z   d$z   | j        j        z   dz   } ‰(d%|¦  «         dES | j        d&k    r¾t          d'd(¦  «                             ¦   «                              ¦   «         }|                     d)¦  «        } ‰(| j                             ¦   «         d* ‰&| j        ¦  «        z   d+z   | j                             ¦   «         z   d,z   d)|¬-¦  «          ‰(d.d| j        j        z   dz   ¦  «         dES | j        d/k    r0d| j        j        z   d0z   | j        j        z   dz   } ‰(d1|¦  «         dES | j        d2k    r¿g }| j        r˜| j        D ]M}t          |t"          ¦  «        r(|                     |                     ¦   «         ¦  «         Œ?t          d¦  «        ‚ ‰(d3d| j        j        z   dz   ¦  «          ‰(dd4d5                     |¦  «        z   d5z   ¦  «         dES  ‰(d3d| j        j        z   dz   ¦  «         dES | j        dk    �rc ‰(d6d| j        j        z   dz   ¦  «         | j        D �]<}t          |j        t"          ¦  «        r|j                             ¦   «         }nt          d¦  «        ‚|j                             d7¦  «        d8         }	d}
|j        r
|j        d5z   }
|	d9k    rJ ‰(|d:|
z   |j                             ¦   «         z   d;z   |j                             ¦   «         z   d,z   ¦  «         n8 ‰(||	                     ¦   «         d*z   |
z    ‰&|j        ¦  «        z   d,z   ¦  «          ‰(d<                      ‰&|j        ¦  «        ¦  «         ‰&|j        ¦  «        ¦  «         �Œ>dES | j        d=k    r2 ‰(d=d5                     ˆ&fd>„| j        D ¦   «         ¦  «        ¦  «         dES | j        d?k    r?t9          d@¦  «          ‰(dAd                     dB„ | j        D ¦   «         ¦  «        ¦  «         dES | j        dCk    rt          d¦  «        ‚| j        dDk    r½g }| j        D ]s}t          |j        t"          ¦  «        rI|j                             ¦   «         }|j        �|d*z   |j        z   d,z   }n|}|                     |¦  «         Œet          d¦  «        ‚ ‰(dFd| j        j        z   dz   ¦  «          ‰(dGd5                     |¦  «        d5z   ¦  «         dES | j        dHk    r¨g }| j        D ]M}t          |t"          ¦  «        r(|                     |                     ¦   «         ¦  «         Œ?t          d¦  «        ‚d}| j        j        dDk    rdI} ‰(dJd5                     |¦  «        d z   | j        j        z   dz   dz   |z   dz   ¦  «         dES | j        dKk    r ‰(dLdM| j        j        z   dz   ¦  «         dES | j        dNk    r ‰(dOdP| j        j        z   dz   ¦  «         dES | j        dQk    rPdRt?          | j         ¦  «        z   dSz   t?          | j!        ¦  «        z   } ‰(dTd| j        j        z   dz   |z   ¦  «         dES | j        dUk    rO| j        j        dVk    r ‰(dWd | j        j        z   dz   ¦  «         dES  ‰(dWdX| j        j        z   dz   dz   ¦  «         dES | j        dYk    r¡ ‰&| j        ¦  «        }| j"        }t          tF          tI          | j%        ¦  «        ¦  «        r-d*dZ                     ˆ&fd[„| j%        D ¦   «         ¦  «        z   d,z   }n ‰&| j%        ¦  «        }d\                     |||¬]¦  «        } ‰(d^|¦  «         dES | j        d_k    rHd`                     ˆ&fda„| j%        D ¦   «         ¦  «        } ‰(db ‰&| j        ¦  «        d`z   |z   ¦  «         dES | j        dck    rNdd                     ˆ&fde„| j%        D ¦   «         ¦  «        } ‰(dfd* ‰&| j        ¦  «        z   ddz   |z   d,z   ¦  «         dES | j        dgk    r\ ‰&| j        ¦  «        }|}tM          | j"        ¦  «        D ]'\  }}||d5z    ‰&| j%        |         ¦  «        z   d5z   z  }Œ( ‰(dh|¦  «         dES | j        dik    r\ ‰&| j        ¦  «        }|}tM          | j"        ¦  «        D ]'\  }}||d5z    ‰&| j%        |         ¦  «        z   d5z   z  }Œ( ‰(dj|¦  «         dES | j        dkk    r ‰(dldm ‰&| j        ¦  «        z   ¦  «         dES | j         '                    dn¦  «        r$ ‰&| j(        ¦  «        } ‰(dodp|z   d,z   ¦  «         dES | j         '                    dq¦  «        rL ‰&| j)        ¦  «        } ‰&| j*        ¦  «        }dr| j+        j        z   dsz   |z   dZz   |z   d,z   } ‰(dt|¦  «         dES | j         '                    du¦  «        r8 ‰(dvdwdZ                     ˆ&fdx„| j(        D ¦   «         ¦  «        z   d,z   ¦  «         dES | j         '                    dy¦  «        r9 ‰(dzd{| j,        j        z   dz   ¦  «         t[          | j,        ‰)¬|¦  «         | j,        S | j         '                    d}¦  «        rRt9          | j,        j        ¦  «          ‰(d~d| j,        j        z   dz   ¦  «         t[          | j,        ‰)¬|¦  «         | j,        S | j         '                    d€¦  «        r6 ‰(d�d‚ ‰&| j+        ¦  «        z   dZz    ‰&| j)        ¦  «        z   d,z   ¦  «         dES | j         '                    dƒ¦  «        r" ‰(d„d… ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    d†¦  «        r" ‰(d‡dˆ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    d‰¦  «        r" ‰(dŠd‹ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    dŒ¦  «        r" ‰(d�dŽ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    d�¦  «        r" ‰(d�d‘ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    d’¦  «        r" ‰(d“d” ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    d•¦  «        r" ‰(d–d— ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    d˜¦  «        r" ‰(d™dš ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    d›¦  «        r" ‰(dœd� ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    dž¦  «        r6 ‰(dŸd  ‰&| j+        ¦  «        z   dZz    ‰&| j)        ¦  «        z   d,z   ¦  «         dES | j         '                    d¡¦  «        r6 ‰(d¢d£ ‰&| j+        ¦  «        z   dZz    ‰&| j)        ¦  «        z   d,z   ¦  «         dES | j         '                    d¤¦  «        r ‰(d¥d¦¦  «         dES | j         '                    d§¦  «        r ‰(d¨d©¦  «         dES | j         '                    dª¦  «        r" ‰(d«d¬ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    d­¦  «        rj| j(                             ¦   «         | j         g}| j!        r|                     | j!        ¦  «         d®dZ                     |¦  «        z   d,z   } ‰(d¯|¦  «         dES | j         '                    d°¦  «        r" ‰(d±d² ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    d³¦  «        r" ‰(d´dµ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    d¶¦  «        r6 ‰(d·d¸ ‰&| j+        ¦  «        z   dZz    ‰&| j)        ¦  «        z   d,z   ¦  «         dES | j         '                    d¹¦  «        r6 ‰(dºd» ‰&| j+        ¦  «        z   dZz    ‰&| j)        ¦  «        z   d,z   ¦  «         dES | j         '                    d¼¦  «        r6 ‰(d½d¾ ‰&| j+        ¦  «        z   dZz    ‰&| j)        ¦  «        z   d,z   ¦  «         dES | j         '                    d¿¦  «        r6 ‰(dÀdÁ ‰&| j+        ¦  «        z   dZz    ‰&| j)        ¦  «        z   d,z   ¦  «         dES | j         '                    dÂ¦  «        r6 ‰(dÃdÄ ‰&| j+        ¦  «        z   dZz    ‰&| j)        ¦  «        z   d,z   ¦  «         dES | j         '                    dÅ¦  «        r" ‰(dÆdÇ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j         '                    dÈ¦  «        rFdÉ                     dZ                     dÊ„ | j(        D ¦   «         ¦  «        ¬Ë¦  «        } ‰(dÌ|¦  «         dES | j         '                    dÍ¦  «        r6 ‰(dÎdÏ ‰&| j+        ¦  «        z   dZz    ‰&| j)        ¦  «        z   d,z   ¦  «         dES | j         '                    dÐ¦  «        rI ‰&| j.        ¦  «         ‰&| j/        ¦  «        g}dÑdZ                     |¦  «        z   d,z   } ‰(dÒ|¦  «         dES | j         '                    dÓ¦  «        rJ ‰(dÔdÕ ‰&| j(        ¦  «        z   dZz    ‰&| j/        ¦  «        z   dZz    ‰&| j0        ¦  «        z   d,z   ¦  «         dES | j        dÖk    r" ‰(d×dØ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dÙk    r" ‰(dÚdÛ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dÜk    r" ‰(dÝdÞ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dßk    r" ‰(dàdá ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dâk    r ‰(dãdä¦  «         dES | j        dåk    r ‰(dædç¦  «         dES | j        dèk    r" ‰(dédê ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dëk    r" ‰(dìdí ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dîk    r" ‰(dïdð ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dñk    r" ‰(dòdó ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dôk    r" ‰(dõdö ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        d÷k    r" ‰(dødù ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dúk    r" ‰(dûdü ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dýk    r" ‰(dþdÿ ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        �d k    r$ ‰(�d�d ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        �dk    r$ ‰(�d�d ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        �dk    r$ ‰(�d�d ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        �d	k    r$ ‰(�d
�d ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        �dk    r$ ‰(�d�d ‰&| j(        ¦  «        z   d,z   ¦  «         dES | j        dVk    �r„g }| j        �d          1                    ¦   «         D ]a} t          | t"          ¦  «        r(|                     |                      ¦   «         ¦  «         Œ?t          �d                     | ¦  «        ¦  «        ‚�dd5                     |¦  «        z   d,z   }!d}"| j        D ]Ã}#g }$|# 2                    ¦   «         D ]Œ}%t          |%t"          ¦  «        r(|$                     |%                     ¦   «         ¦  «         Œ?t          |%t>          ¦  «        r|$                     |%¦  «         Œjt          �d                     |%¦  «        ¦  «        ‚|"d*d5                     |$¦  «        z   d,z   z  }"ŒÄ ‰(dV|!dz   |"z   dz   ¦  «         dES | j        �dk    rQ ‰(�d�d ‰&| j
        ¦  «        z   dz   | j,        j        z   dz   ¦  «         t[          | j,        ‰)¬|¦  «         | j,        S dES dES (  zl
         https://www.w3.org/TR/sparql11-query/#sparqlSyntax

        :param node:
        :return:
        ÚSelectQueryz-*-SELECT-*- {rz  r0   r0  c              3   óÈ   K  — | ]]}|d                                ¦   «         dz   |d                               ¦   «         z   dz   |d                               ¦   «         z   dz   V — Œ^dS ©r   ú r`   rT   ú.N©r|  ©rL   rW   s     r   rS   z>translateAlgebra.<locals>.sparql_query_text.<locals>.<genexpr>q  st   è è € ð "ð "àð ˜1”I—L’L‘N”N SÑ(¨6°!¬9¯<ª<©>¬>Ñ9¸CÑ?À&ÈÄ)Ç,Â,Á.Ä.ÑPÐSVÑVð"ð "ð "ð "ð "ð "r   z{BGP}z-*-SELECT-*-ÚSELECTr­   )rg  z	{GroupBy}z{Having}r(   z{Join}ry  z}{r4   z
{LeftJoin}z}OPTIONAL{{z}}r7   z)This expression might not be covered yet.r  z{Filter}zHAVING({z})zFILTER({z}) {r"   z{Union}z{{z	}}UNION{{r,   zGRAPH z {{z{Graph}r:   r^  rÛ   z-*-select-*-ú(z as ú))re  rf  z{Extend}r*   z}MINUS{{z{Minus}rG   z{Group}z	GROUP BY r…  z{AggregateJoin}Ú_r`   ÚGroupConcatzGROUP_CONCAT(z;SEPARATOR=z(SAMPLE({0}) as {0})ÚGroupGraphPatternSubc                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rJ   rJ   )rL   Úpatternr€  s     €r   rO   z?translateAlgebra.<locals>.sparql_query_text.<locals>.<listcomp>å  s%   ø€ ÐQÐQÐQ¸GÐ.Ð.¨wÑ7Ô7ÐQÐQÐQr   r¬   Útriplesblockz{TriplesBlock}c              3   óÈ   K  — | ]]}|d                                ¦   «         dz   |d                               ¦   «         z   dz   |d                               ¦   «         z   dz   V — Œ^dS r„  r‡  rˆ  s     r   rS   z>translateAlgebra.<locals>.sparql_query_text.<locals>.<genexpr>ë  sŠ   è è € ð ð ð #ð ˜qœ	Ÿš™œØñà  œ)Ÿ,š,™.œ.ñ)ð ñð ! œ)Ÿ,š,™.œ.ñ	)ð
 ñðð ð ð ð ð r   ÚToListr   Nz	{OrderBy}z{OrderConditions}rC   zORDER BY {OrderConditions}z	{Project}r  z
{Distinct}z
DISTINCT {r  z	{Reduced}z	REDUCED {r  zOFFSET z LIMIT z{Slice}r   r>   z{ToMultiSet}z{-*-SELECT-*- {rî   z, c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r[   rJ   ©rL   r   r€  s     €r   rS   z>translateAlgebra.<locals>.sparql_query_text.<locals>.<genexpr>:  s/   øè è € Ð#RÐ#R¸tÐ$4Ð$4°TÑ$:Ô$:Ð#RÐ#RÐ#RÐ#RÐ#RÐ#Rr   z{left} {operator} {right})Úleftró   Úrightz{RelationalExpression}ÚConditionalAndExpressionz && c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rJ   rJ   r•  s     €r   rO   z?translateAlgebra.<locals>.sparql_query_text.<locals>.<listcomp>E  ó%   ø€ ÐCÐCÐC°Ð%Ð% dÑ+Ô+ÐCÐCÐCr   z{ConditionalAndExpression}ÚConditionalOrExpressionz || c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rJ   rJ   r•  s     €r   rO   z?translateAlgebra.<locals>.sparql_query_text.<locals>.<listcomp>M  rš  r   z{ConditionalOrExpression}ÚMultiplicativeExpressionz{MultiplicativeExpression}ÚAdditiveExpressionz{AdditiveExpression}ÚUnaryNotz
{UnaryNot}ú!ÚBOUNDz{Builtin_BOUND}zbound(ÚIFzIF({z}, z{Builtin_IF}ÚCOALESCEz{Builtin_COALESCE}z	COALESCE(c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r[   rJ   )rL   Úargr€  s     €r   rS   z>translateAlgebra.<locals>.sparql_query_text.<locals>.<genexpr>u  s/   øè è € ÐJÐJ¸#Ð 0Ð 0°Ñ 5Ô 5ÐJÐJÐJÐJÐJÐJr   r�   z{Builtin_EXISTS}z	EXISTS {{©rÉ   rŽ   z{Builtin_NOTEXISTS}zNOT EXISTS {{ÚsameTermz{Builtin_sameTerm}z	SAMETERM(ÚBuiltin_isIRIz{Builtin_isIRI}zisIRI(ÚBuiltin_isBLANKz{Builtin_isBLANK}zisBLANK(ÚBuiltin_isLITERALz{Builtin_isLITERAL}z
isLITERAL(ÚBuiltin_isNUMERICz{Builtin_isNUMERIC}z
isNUMERIC(ÚBuiltin_STRz{Builtin_STR}zSTR(ÚBuiltin_LANGz{Builtin_LANG}zLANG(ÚBuiltin_DATATYPEz{Builtin_DATATYPE}z	DATATYPE(ÚBuiltin_IRIz{Builtin_IRI}zIRI(ÚBuiltin_BNODEz{Builtin_BNODE}zBNODE(ÚSTRDTz{Builtin_STRDT}zSTRDT(ÚBuiltin_STRLANGz{Builtin_STRLANG}zSTRLANG(ÚBuiltin_UUIDz{Builtin_UUID}zUUID()ÚBuiltin_STRUUIDz{Builtin_STRUUID}z	STRUUID()ÚBuiltin_STRLENz{Builtin_STRLEN}zSTRLEN(ÚBuiltin_SUBSTRzSUBSTR(z{Builtin_SUBSTR}ÚBuiltin_UCASEz{Builtin_UCASE}zUCASE(ÚBuiltin_LCASEz{Builtin_LCASE}zLCASE(ÚBuiltin_STRSTARTSz{Builtin_STRSTARTS}z
STRSTARTS(ÚBuiltin_STRENDSz{Builtin_STRENDS}zSTRENDS(ÚBuiltin_CONTAINSz{Builtin_CONTAINS}z	CONTAINS(ÚBuiltin_STRBEFOREz{Builtin_STRBEFORE}z
STRBEFORE(ÚBuiltin_STRAFTERz{Builtin_STRAFTER}z	STRAFTER(ÚBuiltin_ENCODE_FOR_URIz{Builtin_ENCODE_FOR_URI}zENCODE_FOR_URI(ÚBuiltin_CONCATzCONCAT({vars})c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r[   r‡  )rL   Úelems     r   rS   z>translateAlgebra.<locals>.sparql_query_text.<locals>.<genexpr>  s*   è è € Ð"BÐ"B° 4§7¢7¡9¤9Ð"BÐ"BÐ"BÐ"BÐ"BÐ"Br   rû   z{Builtin_CONCAT}ÚBuiltin_LANGMATCHESz{Builtin_LANGMATCHES}zLANGMATCHES(ÚREGEXzREGEX(z{Builtin_REGEX}ÚREPLACEz{Builtin_REPLACE}zREPLACE(ÚBuiltin_ABSz{Builtin_ABS}zABS(ÚBuiltin_ROUNDz{Builtin_ROUND}zROUND(ÚBuiltin_CEILz{Builtin_CEIL}zCEIL(ÚBuiltin_FLOORz{Builtin_FLOOR}zFLOOR(ÚBuiltin_RANDz{Builtin_RAND}zRAND()ÚBuiltin_NOWz{Builtin_NOW}zNOW()ÚBuiltin_YEARz{Builtin_YEAR}zYEAR(ÚBuiltin_MONTHz{Builtin_MONTH}zMONTH(ÚBuiltin_DAYz{Builtin_DAY}zDAY(ÚBuiltin_HOURSz{Builtin_HOURS}zHOURS(ÚBuiltin_MINUTESz{Builtin_MINUTES}zMINUTES(ÚBuiltin_SECONDSz{Builtin_SECONDS}zSECONDS(ÚBuiltin_TIMEZONEz{Builtin_TIMEZONE}z	TIMEZONE(Ú
Builtin_TZz{Builtin_TZ}zTZ(ÚBuiltin_MD5z{Builtin_MD5}zMD5(ÚBuiltin_SHA1z{Builtin_SHA1}zSHA1(ÚBuiltin_SHA256z{Builtin_SHA256}zSHA256(ÚBuiltin_SHA384z{Builtin_SHA384}zSHA384(ÚBuiltin_SHA512z{Builtin_SHA512}zSHA512(r   r{  zVALUES (r³   z{ServiceGraphPattern}zSERVICE )3rK   r
   r|   r   Újoinr2   r$   r%   r   rZ  r-   r|  r_  rp  rj  rg  r<   r   rš   r¡   r@   ÚsplitÚdistinctrü   Ú	separatorÚupperr~  r‡   Úprintr  rE   r}  r  r  Úopr‰   r¶   ÚotherÚ	enumerateÚendswithr¥  Úarg2Úarg3Úarg1r.   r–   rb  r�  ÚreplacementÚkeysr>   )*Únoder2   r   Úquery_stringÚselect_occurrencesÚgroup_by_varsr<   Úagg_funcÚ
identifierÚagg_func_namerÚ  Úorder_conditionsrj   ÚcondÚproject_variablesÚorder_by_patternÚslicerÞ  rß  r  Úinner_nodesÚ	left_sideÚmultiplicationrk   ró   ÚadditionÚ	bound_varrâ  rã  Úif_expressionÚargsÚcolumnsÚkeyr>   ÚrowsrÁ  Úrowr-   r€  rd  rq  Úsparql_query_texts*                                         €€€€r   rþ  z+translateAlgebra.<locals>.sparql_query_text`  s"  ø€ õ �d�IÑ&Ô&ñ f	"àŒy˜MÒ)Ð)Ø�	Ð/°$´&´+Ñ=ÀÑCÑDÔDÐDÐDÐDð ”˜eÒ#Ð#ð Ÿ'š'ð "ð "à"&¤,ð"ñ "ô "ñ ô �ð �˜ Ñ)Ô)Ð)ð �˜¨¸Ð;Ñ;Ô;Ð;ð �˜ R¨rÐ2Ñ2Ô2Ð2Ø�˜
 B¨bÐ1Ñ1Ô1Ð1Ð1Ð1Ø”˜fÒ$Ð$Ø�˜ #¨¬¬Ñ"4°tÑ";¸d¼g¼lÑ"JÈSÑ"PÑQÔQÐQÐQÐQØ”˜jÒ(Ð(Ø�Ø Ø˜$œ'œ,Ñ&¨Ñ6¸¼¼ÑEÈÑLñô ð ð ð ð ”˜hÒ&Ð&Ý˜dœi­Ñ3Ô3ð Øœ9œ>�D�Då7ØCñô ð ð ”6ð 
Bà”v”{ oÒ5Ð5Ø˜ 
¨C°$´&´+Ñ,=ÀÑ,CÑDÔDÐDØ˜ 
¨J¸Ñ,=ÀÑ,DÑEÔEÐEÐEÐEà˜Ø&¨
°TÑ(9¸FÑ(BÀTÄVÄ[Ñ(PÐSVÑ(Vñô ð ð ð ð �G˜J¨
°TÑ(9¸DÑ(@ÑAÔAÐAÐAÐAà”˜gÒ%Ð%Ø�Ø˜t d¤g¤lÑ2°[Ñ@À4Ä7Ä<ÑOÐRVÑVñô ð ð ð ð ”˜gÒ%Ð%Ø $¤)§,¢,¡.¤.Ñ0°5Ñ8¸4¼6¼;ÑFÈÑM�Ø�˜	 4Ñ(Ô(Ð(Ð(Ð(Ø”˜hÒ&Ð&Ý# K°Ñ5Ô5×:Ò:Ñ<Ô<×BÒBÑDÔD�Ø%1×%7Ò%7¸Ñ%GÔ%GÐ"Ø�Ø”H—K’K‘M”MØÐ*Ð*¨4¬9Ñ5Ô5Ñ5¸Ñ>ÀÄÇÂÁÄÑNÐQTÑTØ&4Ø1Cð	ñ ô ð ð �˜
 C¨$¬&¬+Ñ$5¸Ñ$;Ñ<Ô<Ð<Ð<Ð<Ø”˜gÒ%Ð%Ø˜TœWœ\Ñ)¨JÑ6¸¼¼ÑEÈÑL�Ø�˜	 4Ñ(Ô(Ð(Ð(Ð(Ø”˜gÒ%Ð%Ø "�Ø”9ð @Ø#œyð ð ˜Ý% c­:Ñ6Ô6ð Ø)×0Ò0°·²±´Ñ:Ô:Ð:Ð:å"?Ø Kñ#ô #ð ð �G˜I s¨T¬V¬[Ñ'8¸3Ñ'>Ñ?Ô?Ð?Ø�G˜K¨°s·x²xÀÑ7NÔ7NÑ)NÐQTÑ)TÑUÔUÐUÐUÐUà�G˜I s¨T¬V¬[Ñ'8¸3Ñ'>Ñ?Ô?Ð?Ð?Ð?Ø”˜oÒ-Ñ-Ø�Ð)¨3°´´Ñ+<¸sÑ+BÑCÔCÐCØ $¤ð &ñ &�HÝ! (¤,µ
Ñ;Ô;ð Ø%-¤\§_¢_Ñ%6Ô%6˜
˜
å;ØGñô ð ð %-¤M×$7Ò$7¸Ñ$<Ô$<¸QÔ$?�MØ!�HØÔ(ð ;Ø#+Ô#4°sÑ#:˜Ø$¨Ò5Ð5Ø˜Ø&ð"à&ñ'ð 'œm×.Ò.Ñ0Ô0ñ1ð ,ñ	,ð
 'Ô0×3Ò3Ñ5Ô5ñ6ð "ñ"ñ	ô 	ð 	ð 	ð  ˜Ø&Ø)×/Ò/Ñ1Ô1Ø!ñ"à&ñ'ð /Ð.¨x¬}Ñ=Ô=ñ>ð "ñ	"ñô ð ð �GØ.×5Ò5Ð6FÐ6FÀxÄ}Ñ6UÔ6UÑVÔVØ(Ð(¨¬Ñ7Ô7ñô ð ñ ðG&ð &ðN ”Ð4Ò4Ð4Ø�Ø*Ø—H’HÐQÐQÐQÐQÀtÄyÐQÑQÔQÑRÔRñô ð ð ð ð ”˜nÒ,Ð,Ý�nÑ%Ô%Ð%Ø�Ø$Ø—G’Gð ð ð '+¤lðñ ô ñ ô ñô ð ð ð ð ”˜hÒ&Ð&Ý3Ø?ñô ð ð ”˜iÒ'Ð'Ø#%Ð Øœð ð �AÝ! !¤&­*Ñ5Ô5ð 
ØœfŸiši™kœk˜Øœ7Ð.Ø#&¨¡9¨q¬wÑ#6¸Ñ#<˜D˜Dà#&˜DØ(×/Ò/°Ñ5Ô5Ð5Ð5å;ØGñô ð ð �˜ S¨4¬6¬;Ñ%6¸Ñ%<Ñ=Ô=Ð=Ø�Ð+¨S¯XªXÐ6FÑ-GÔ-GÈ#Ñ-MÑNÔNÐNÐNÐNØ”˜iÒ'Ð'Ø$&Ð!Øœ7ð ð �CÝ! #¥zÑ2Ô2ð Ø)×0Ò0°·²±´Ñ:Ô:Ð:Ð:å;ØGñô ð ð $&Ð Ø”6”; )Ò+Ð+Ø'CÐ$Ø�ØØ—H’HÐ.Ñ/Ô/Øñà”f”kñ"ð ñð "ñ	"ð
 'ñ'ð !ñ!ñ	ô 	ð 	ð 	ð 	ð ”˜jÒ(Ð(Ø�˜ l°T´V´[Ñ&@À3Ñ&FÑGÔGÐGÐGÐGØ”˜iÒ'Ð'Ø�˜ [°4´6´;Ñ%>ÀÑ%DÑEÔEÐEÐEÐEØ”˜gÒ%Ð%Ø!¥C¨¬
¡O¤OÑ3°iÑ?Å#ÀdÄkÑBRÔBRÑR�Ø�˜	 3¨¬¬Ñ#4°sÑ#:¸UÑ#BÑCÔCÐCÐCÐCØ”˜lÒ*Ð*Ø”6”; (Ò*Ð*Ø�G˜N¨D°4´6´;Ñ,>ÀÑ,EÑFÔFÐFÐFÐFà�GØ&Ð(>ÀÄÄÑ(LÈsÑ(RÐUXÑ(Xñô ð ð ð ð ”Ð4Ò4Ð4Ø'Ð'¨¬	Ñ2Ô2�Ø”W�Ý�d¥D¨¬Ñ$4Ô$4Ñ5Ô5ð 9àØŸ)š)Ð#RÐ#RÐ#RÐ#RÀtÄzÐ#RÑ#RÔ#RÑRÔRñSàñð �Eð -Ð,¨T¬ZÑ8Ô8�EØ7×>Ò>Ø¨°%ð ?ñ ô �	ð �Ð0°)Ñ<Ô<Ð<Ð<Ð<Ø”Ð8Ò8Ð8Ø$ŸkškØCÐCÐCÐC¸¼
ÐCÑCÔCñô �ð �Ø0Ø$Ð$ T¤YÑ/Ô/°&Ñ8¸;ÑFñô ð ð ð ð ”Ð7Ò7Ð7Ø$ŸkškØCÐCÐCÐC¸¼
ÐCÑCÔCñô �ð �Ø/ØÐ*Ð*¨4¬9Ñ5Ô5Ñ5¸Ñ>ÀÑLÈsÑRñô ð ð ð ð ”Ð8Ò8Ð8Ø,Ð,¨T¬YÑ7Ô7�	Ø!*�Ý#,¨T¬WÑ#5Ô#5ð ð ‘K�A�xØ"Ø  3™Ð)9Ð)9¸$¼*ÀQ¼-Ñ)HÔ)HÑHÈ3ÑNñ�N�Nð �Ð4°nÑEÔEÐEÐEÐEØ”Ð2Ò2Ð2Ø,Ð,¨T¬YÑ7Ô7�	Ø$�Ý#,¨T¬WÑ#5Ô#5ð Wð W‘K�A�xØ ¨3¡Ð1AÐ1AÀ$Ä*ÈQÄ-Ñ1PÔ1PÑ PÐSVÑ VÑV�H�HØ�Ð.°Ñ9Ô9Ð9Ð9Ð9Ø”˜jÒ(Ð(Ø�˜ cÐ,<Ð,<¸T¼YÑ,GÔ,GÑ&GÑHÔHÐHÐHÐHð ”×#Ò# GÑ,Ô,ð h"Ø,Ð,¨T¬XÑ6Ô6�	Ø�Ð)¨8°iÑ+?À#Ñ+EÑFÔFÐFÐFÐFØ”×#Ò# DÑ)Ô)ð e"Ø'Ð'¨¬	Ñ2Ô2�Ø'Ð'¨¬	Ñ2Ô2�ð   $¤)¤.Ñ0°5Ñ8¸4Ñ?À$ÑFÈÑMÐPSÑSð ð �˜¨Ñ6Ô6Ð6Ð6Ð6Ø”×#Ò# JÑ/Ô/ð ]"Ø�Ø(ØØ—i’iÐJÐJÐJÐJÀÄÐJÑJÔJÑJÔJñKàññô ð ð ð ð ”×#Ò#Ð$4Ñ5Ô5ð V"ð
 �Ð*Ð,<¸t¼z¼Ñ,NÐQUÑ,UÑVÔVÐVÝ˜œÐ.?Ð@Ñ@Ô@Ð@Ø”zÐ!Ø”×#Ò#Ð$7Ñ8Ô8ð N"õ
 �d”j”oÑ&Ô&Ð&Ø�Ø)Ð+?À$Ä*Ä/Ñ+QÐTXÑ+Xñô ð õ ˜œÐ.?Ð@Ñ@Ô@Ð@Ø”zÐ!ð ”×#Ò# JÑ/Ô/ð @"Ø�Ø(ØØ&Ð& t¤yÑ1Ô1ñ2àñð 'Ð& t¤yÑ1Ô1ñ2ð ñ	ñô ð ð ð ð ”×#Ò# OÑ4Ô4ð s"Ø�Ð)¨8Ð6FÐ6FÀtÄxÑ6PÔ6PÑ+PÐSVÑ+VÑWÔWÐWÐWÐWØ”×#Ò#Ð$5Ñ6Ô6ð q"Ø�Ø'¨Ð6FÐ6FÀtÄxÑ6PÔ6PÑ)PÐSVÑ)Vñô ð ð ð ð ”×#Ò#Ð$7Ñ8Ô8ð m"Ø�Ø)Ø Ð#3Ð#3°D´HÑ#=Ô#=Ñ=ÀÑCñô ð ð ð ð ”×#Ò#Ð$7Ñ8Ô8ð h"Ø�Ø)Ø Ð#3Ð#3°D´HÑ#=Ô#=Ñ=ÀÑCñô ð ð ð ð ”×#Ò# MÑ2Ô2ð c"Ø�˜¨Ð2BÐ2BÀ4Ä8Ñ2LÔ2LÑ)LÈsÑ)RÑSÔSÐSÐSÐSØ”×#Ò# NÑ3Ô3ð a"Ø�Ð(¨'Ð4DÐ4DÀTÄXÑ4NÔ4NÑ*NÐQTÑ*TÑUÔUÐUÐUÐUØ”×#Ò#Ð$6Ñ7Ô7ð _"Ø�Ø(¨+Ð8HÐ8HÈÌÑ8RÔ8RÑ*RÐUXÑ*Xñô ð ð ð ð ”×#Ò# MÑ2Ô2ð ["Ø�˜¨Ð2BÐ2BÀ4Ä8Ñ2LÔ2LÑ)LÈsÑ)RÑSÔSÐSÐSÐSØ”×#Ò# OÑ4Ô4ð Y"Ø�Ð)¨8Ð6FÐ6FÀtÄxÑ6PÔ6PÑ+PÐSVÑ+VÑWÔWÐWÐWÐWØ”×#Ò# GÑ,Ô,ð W"Ø�Ø%ØØ&Ð& t¤yÑ1Ô1ñ2àñð 'Ð& t¤yÑ1Ô1ñ2ð ñ	ñô ð ð ð ð ”×#Ò#Ð$5Ñ6Ô6ð N"Ø�Ø'ØØ&Ð& t¤yÑ1Ô1ñ2àñð 'Ð& t¤yÑ1Ô1ñ2ð ñ	ñô ð ð ð ð ”×#Ò# NÑ3Ô3ð E"Ø�Ð(¨(Ñ3Ô3Ð3Ð3Ð3Ø”×#Ò#Ð$5Ñ6Ô6ð C"Ø�Ð+¨[Ñ9Ô9Ð9Ð9Ð9ð ”×#Ò#Ð$4Ñ5Ô5ð "Ø�Ø&¨	Ð4DÐ4DÀTÄXÑ4NÔ4NÑ(NÐQTÑ(Tñô ð ð ð ð ”×#Ò#Ð$4Ñ5Ô5ð {"ØœŸš™œ t¤zÐ2�Ø”;ð -Ø—K’K ¤Ñ,Ô,Ð,Ø  4§9¢9¨T¡?¤?Ñ2°SÑ8�Ø�Ð*¨DÑ1Ô1Ð1Ð1Ð1Ø”×#Ò# OÑ4Ô4ð u"Ø�Ð)¨8Ð6FÐ6FÀtÄxÑ6PÔ6PÑ+PÐSVÑ+VÑWÔWÐWÐWÐWØ”×#Ò# OÑ4Ô4ð s"Ø�Ð)¨8Ð6FÐ6FÀtÄxÑ6PÔ6PÑ+PÐSVÑ+VÑWÔWÐWÐWÐWØ”×#Ò#Ð$7Ñ8Ô8ð q"Ø�Ø)Ø Ø&Ð& t¤yÑ1Ô1ñ2àñð 'Ð& t¤yÑ1Ô1ñ2ð ñ	ñô ð ð ð ð ”×#Ò#Ð$5Ñ6Ô6ð h"Ø�Ø'ØØ&Ð& t¤yÑ1Ô1ñ2àñð 'Ð& t¤yÑ1Ô1ñ2ð ñ	ñô ð ð ð ð ”×#Ò#Ð$6Ñ7Ô7ð _"Ø�Ø(ØØ&Ð& t¤yÑ1Ô1ñ2àñð 'Ð& t¤yÑ1Ô1ñ2ð ñ	ñô ð ð ð ð ”×#Ò#Ð$7Ñ8Ô8ð V"Ø�Ø)Ø Ø&Ð& t¤yÑ1Ô1ñ2àñð 'Ð& t¤yÑ1Ô1ñ2ð ñ	ñô ð ð ð ð ”×#Ò#Ð$6Ñ7Ô7ð M"Ø�Ø(ØØ&Ð& t¤yÑ1Ô1ñ2àñð 'Ð& t¤yÑ1Ô1ñ2ð ñ	ñô ð ð ð ð ”×#Ò#Ð$<Ñ=Ô=ð D"Ø�Ø.Ø%Ð(8Ð(8¸¼Ñ(BÔ(BÑBÀSÑHñô ð ð ð ð ”×#Ò#Ð$4Ñ5Ô5ð "Ø'×.Ò.ØŸšÐ"BÐ"B¸¼Ð"BÑ"BÔ"BÑBÔBð /ñ ô �ð �Ð*¨DÑ1Ô1Ð1Ð1Ð1Ø”×#Ò#Ð$9Ñ:Ô:ð z"Ø�Ø+Ø"Ø&Ð& t¤yÑ1Ô1ñ2àñð 'Ð& t¤yÑ1Ô1ñ2ð ñ	ñô ð ð ð ð ”×#Ò# GÑ,Ô,ð q"Ø(Ð(¨¬Ñ3Ô3Ð5EÐ5EÀdÄlÑ5SÔ5SÐT�Ø $§)¢)¨D¡/¤/Ñ1°CÑ7�Ø�Ð)¨4Ñ0Ô0Ð0Ð0Ð0Ø”×#Ò# IÑ.Ô.ð m"Ø�Ø'ØØ&Ð& t¤xÑ0Ô0ñ1àñð 'Ð& t¤|Ñ4Ô4ñ5ð ñ	ð
 'Ð& tÔ'7Ñ8Ô8ñ9ð ññ	ô 	ð 	ð 	ð 	ð ”˜mÒ+Ð+Ø�˜¨Ð2BÐ2BÀ4Ä8Ñ2LÔ2LÑ)LÈsÑ)RÑSÔSÐSÐSÐSØ”˜oÒ-Ð-Ø�Ð)¨8Ð6FÐ6FÀtÄxÑ6PÔ6PÑ+PÐSVÑ+VÑWÔWÐWÐWÐWØ”˜nÒ,Ð,Ø�Ð(¨'Ð4DÐ4DÀTÄXÑ4NÔ4NÑ*NÐQTÑ*TÑUÔUÐUÐUÐUØ”˜oÒ-Ð-Ø�Ð)¨8Ð6FÐ6FÀtÄxÑ6PÔ6PÑ+PÐSVÑ+VÑWÔWÐWÐWÐWØ”˜nÒ,Ð,Ø�Ð(¨(Ñ3Ô3Ð3Ð3Ð3ð ”˜mÒ+Ð+Ø�˜¨Ñ1Ô1Ð1Ð1Ð1Ø”˜nÒ,Ð,Ø�Ð(¨'Ð4DÐ4DÀTÄXÑ4NÔ4NÑ*NÐQTÑ*TÑUÔUÐUÐUÐUØ”˜oÒ-Ð-Ø�Ð)¨8Ð6FÐ6FÀtÄxÑ6PÔ6PÑ+PÐSVÑ+VÑWÔWÐWÐWÐWØ”˜mÒ+Ð+Ø�˜¨Ð2BÐ2BÀ4Ä8Ñ2LÔ2LÑ)LÈsÑ)RÑSÔSÐSÐSÐSØ”˜oÒ-Ð-Ø�Ð)¨8Ð6FÐ6FÀtÄxÑ6PÔ6PÑ+PÐSVÑ+VÑWÔWÐWÐWÐWØ”Ð/Ò/Ð/Ø�Ø'¨Ð6FÐ6FÀtÄxÑ6PÔ6PÑ)PÐSVÑ)Vñô ð ð ð ð ”Ð/Ò/Ð/Ø�Ø'¨Ð6FÐ6FÀtÄxÑ6PÔ6PÑ)PÐSVÑ)Vñô ð ð ð ð ”Ð0Ò0Ð0Ø�Ø(¨+Ð8HÐ8HÈÌÑ8RÔ8RÑ*RÐUXÑ*Xñô ð ð ð ð ”˜lÒ*Ð*Ø�˜¨Ð0@Ð0@ÀÄÑ0JÔ0JÑ(JÈSÑ(PÑQÔQÐQÐQÐQð ”™mÒ+Ð+Ø�™©Ð2BÐ2BÀ4Ä8Ñ2LÔ2LÑ)LÈsÑ)RÑSÔSÐSÐSÐSØ”™nÒ,Ð,Ø�Ñ(©'Ð4DÐ4DÀTÄXÑ4NÔ4NÑ*NÐQTÑ*TÑUÔUÐUÐUÐUØ”Ñ.Ò.Ð.Ø�Ù&©	Ð4DÐ4DÀTÄXÑ4NÔ4NÑ(NÐQTÑ(Tñô ð ð ð ð ”Ñ.Ò.Ð.Ø�Ù&©	Ð4DÐ4DÀTÄXÑ4NÔ4NÑ(NÐQTÑ(Tñô ð ð ð ð ”Ñ.Ò.Ð.Ø�Ù&©	Ð4DÐ4DÀTÄXÑ4NÔ4NÑ(NÐQTÑ(Tñô ð ð ð ð
 ”˜hÒ&Ñ&Ø�Øœ8¡Aœ;×+Ò+Ñ-Ô-ð ð �CÝ! #¥zÑ2Ô2ð ØŸš s§v¢v¡x¤xÑ0Ô0Ð0Ð0å;ÙJ×QÒQÐRUÑVÔVñô ð ñ $ c§h¢h¨wÑ&7Ô&7Ñ7¸#Ñ=�à�Ø œHð 6ð 6�DØ�CØ $§¢¡¤ð ð ˜Ý% d­JÑ7Ô7ð ØŸJšJØ $§¢¡	¤	ñô ð ð õ (¨­cÑ2Ô2ð ØŸJšJ tÑ,Ô,Ð,Ð,å"?Ù N× UÒ UØ$(ñ!"ô !"ñ#ô #ð ð
 ˜C #§(¢(¨3¡-¤-Ñ/°#Ñ5Ñ5�D�Dà�˜ &¨3¡,°Ñ"5¸Ñ";Ñ<Ô<Ð<Ð<Ð<Ø”Ñ3Ò3Ð3Ø�Ù+ÙØ&Ð& t¤yÑ1Ô1ñ2àñð ”j”oñ&ð ñ	ñô ð õ ˜œÐ.?Ð@Ñ@Ô@Ð@Ø”zÐ!ðMf	"ð f	"ðx 4Ð3r   r¦  r^  rÛ   )NNr`   )Úosr}  rf   r–   Úalgebrar_  rp  Úremove)r[  rÿ  Úquery_from_algebrar€  rd  rq  rþ  s      @@@@r   ÚtranslateAlgebrar  $  sð   øøøø€ ð €I€I€Iðð ð ð "&Ø,0Øð!ð !õ ð!õ '*ð	!õ
 ð!ð !ð !ð !ð@ð ð ðn"ð n"ð n"ð n"ð n"ð n"ð n"ð n"õd ˆ]Ô"Ð->Ð?Ñ?Ô?Ð?Ý˜k¨3Ñ/Ô/×4Ò4Ñ6Ô6ÐØ€B„IˆkÑÔÐàÐr   c                 óx   ‡— dˆfd„	Š	  ‰| j         ¦  «         d S # t          $ r | D ]} ‰|¦  «         ŒY d S w xY w)Nú    c                 ó  •— t          | t          ¦  «        st          | ¦  «         d S t          | j        ›d�¦  «         | D ]-}t          |›|›d�d¬¦  «          ‰| |         |dz   ¦  «         Œ.t          d|z  ¦  «         d S )NrŠ  z =r…  )Úendr  z%s))rK   r
   rÝ  r|   )r   ÚindrÎ   Úpps      €r   r	  zpprintAlgebra.<locals>.ppš  s³   ø€ õ ˜!�YÑ'Ô'ð 	Ý�!‰HŒHˆHØˆFÝ�q”v�v�vÐÑ Ô Ð Øð 		#ð 		#ˆAÝð �CØ�A�Aðð
 ðñ ô ð ð ˆBˆq�Œt�S˜6‘\Ñ"Ô"Ð"Ð"Ýˆe�c‰kÑÔÐÐÐr   )r  )r   ÚAttributeError)r  rM   r	  s     @r   ÚpprintAlgebrar  ™  s�   ø€ ðð ð ð ð ð ð,Ø
ˆˆ1Œ9‰ŒˆˆˆøÝð ð ð àð 	ð 	ˆAØˆBˆq‰EŒEˆEˆEð	ð 	ð 	ðøøøs   ‰ ›9¸9Ú__main__)Úparserr`   z--------r[   )NN)^Ú__doc__r  ró   rd   r   Úrdflibr   r   r   r   Úrdflib.plugins.sparql.sparqlr   r	   Ú!rdflib.plugins.sparql.parserutilsr
   r   Úrdflib.plugins.sparql.operatorsr   r   r   rÿ   Úrdflib.pathsr   r   r   r   r   Ú	pyparsingr   Úrdflib.termr   r   r   r"   r(   r*   r,   r0   r4   r7   r:   rA   rC   rG   rX   rm   r2   r€   rŠ   r˜   rž   r£   r¦   r©   r�   ru   r¹   rÇ   rÔ   r–   rà   rä   rì   rø   rý   r   r  r¨   rµ   r.  r8  r>  rN  rR  rX  rZ  r  r  r¾   ÚsysÚrdflib.plugins.sparqlr  Úos.pathrÿ  ÚpathÚexistsÚargvr_  rp  r  Ú
parseQueryÚpqrÝ  ÚtqrJ   r   r   ú<module>r     sZ  ððð ð Ð Ð Ð Ø €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð ð ð
 VÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ Uà "Ð "Ð "Ð "Ð "Ð "ð
 #Ð "Ð "Ð "Ð "Ð "ð0ð 0ð 0ð(ð (ð (ð,ð ,ð ,ð+ð +ð +ð,ð ,ð ,ð2ð 2ð 2ð3ð 3ð 3ð 3ð:ð :ð :ð/ð /ð /ð8ð 8ð 8ð(ð (ð (ð,ð ,ð ,ð.ð .ð .ð .ðð ð ð$ð $ð $ðNSð Sð Sð&ð &ð &ð*+ð *+ð *+ðZð ð ð&ð ð ð4	ð 	ð 	ðTð Tð Tð5ð 5ð 5ð6ð 6ð 6ðrð ð ð ð �Iñ ô ð ð
 )˜.°N°Nð ð ð ð ð: .Ð-ð ð ð ð ð( +˜N°n°nÈtð ð ð ð ð &ð &ð &ðð ð ðð ð ð 1ð 1ð 1ðB5ð 5ð 5ð 5ð"ð "ð "ð
3ð 3ð 3ðDð ð ð(jð jð jðZ
ð 
ð 
ðð ð ð&ð ð ð ð( ð  ð  ð ð ð ð0ð ð ð ð. ð  ð  ð  ðB	ð 	ð 	ð 	ð 	 Iñ 	ô 	ð 	ðr	 Eð r	ð r	ð r	ð r	ðjð ð ð> ˆzÒÐØ€J€J€JØ,Ð,Ð,Ð,Ð,Ð,Ø€N€N€Nà	„w‡~‚~�c”h˜q”kÑ"Ô"ð ØˆD�”˜!”ÑÔ×"Ò"Ñ$Ô$ˆˆàŒH�QŒKˆà	ˆÔ	˜1Ñ	Ô	€BØ	€Eˆ"�I„I€IØ	€Eˆ*ÑÔÐØ	ˆ˜Ñ	Ô	€BØ€M�"ÑÔÐÐÐð Ðr   