§
    kÃ¿a±?  ã                   ó‚  — d Z ddlZddlZddlZddlmZmZ ddlmZ ddl	Z
ddl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d	lmZmZmZmZmZ dd
l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( d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5	 d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d „ Z<d!„ Z=d"„ Z>d#„ Z?d$„ Z@d%„ ZAd'd&„ZBdS )(a²  
These method recursively evaluate the SPARQL Algebra

evalQuery is the entry-point, it will setup context and
return the SPARQLResult object

evalPart is called on each level and will delegate to the right method

A rdflib.plugins.sparql.sparql.QueryContext is passed along, keeping
information needed for evaluation

A list of dicts (solution mappings) is returned, apart from GroupBy which may
also return a dict of list of dicts

é    N)ÚurlopenÚRequest)Ú	urlencode)ÚParseException)ÚVariableÚGraphÚBNodeÚURIRefÚLiteral)ÚCUSTOM_EVALS)Úvalue)ÚQueryContextÚAlreadyBoundÚFrozenBindingsÚBindingsÚSPARQLError)Ú_filterÚ_evalÚ_joinÚ_diffÚ_minusÚ_fillTemplateÚ_ebvÚ_val)Ú
Aggregator)Úparserc              #   óº  K  — |s|                       ¦   «         V — dS |d         \  }}}| |         }| |         }| |         }| j                             |||f¦  «        D ]|\  }}	}
d|||fv r|                      ¦   «         }n| }|€|||<   	 |€|	||<   n# t          $ r Y Œ@w xY w	 |€|
||<   n# t          $ r Y ŒYw xY wt          ||dd…         ¦  «        D ]}|V — ŒŒ}dS )z
    A basic graph pattern
    Nr   é   )ÚsolutionÚgraphÚtriplesÚpushr   ÚevalBGP)ÚctxÚbgpÚsÚpÚoÚ_sÚ_pÚ_oÚssÚspÚsoÚcÚxs                ú@/usr/lib/python3/dist-packages/rdflib/plugins/sparql/evaluate.pyr#   r#   2   sV  è è € ð
 ð Ø�lŠl‰nŒnÐÐÐØˆà�!Œf�G€A€qˆ!à	ˆQŒ€BØ	ˆQŒ€BØ	ˆQŒ€Bà”i×'Ò'¨¨R°¨Ñ5Ô5ð ð ‰
ˆˆB�Ø�B˜˜B�<ÐÐØ—’‘
”
ˆAˆAàˆAàˆ:ØˆAˆa‰Dð	ØˆzØ��!‘øøÝð 	ð 	ð 	ØˆHð	øøøð	ØˆzØ��!‘øøÝð 	ð 	ð 	ØˆHð	øøøõ ˜˜C   œGÑ$Ô$ð 	ð 	ˆAØˆGˆGˆGˆGð	ð+ð s$   Â
BÂ
BÂBÂ#B+Â+
B8Â7B8c              #   ó,  K  — t          | |j        ¦  «        D ]{}	 t          |j        |                     | |j        ¬¦  «        ¦  «        }t          |t          ¦  «        r|‚|                     |j	        |i¦  «        V — Œh# t          $ r |V — Y Œxw xY wd S ©N)Ú_except)
ÚevalPartr'   r   ÚexprÚforgetÚ_varsÚ
isinstancer   ÚmergeÚvar)r$   Úextendr/   Úes       r1   Ú
evalExtendr>   Z   sµ   è è € õ �c˜6œ8Ñ$Ô$ð 	ð 	ˆð	Ý�f”k 1§8¢8¨C¸¼ 8Ñ#FÔ#FÑGÔGˆAÝ˜!�[Ñ)Ô)ð Ø�à—'’'˜6œ: q˜/Ñ*Ô*Ð*Ð*Ð*Ð*øåð 	ð 	ð 	ØˆGˆGˆGˆGˆGð	øøøð	ð 	s   ›A$B Â BÂBc              #   óÂ   K  — t          | |j        ¦  «        D ]F}|                      |¦  «        }t          ||j        ¦  «        D ]}|                     |¦  «        V — ŒŒGdS )z³
    A lazy join will push the variables bound
    in the first part to the second part,
    essentially doing the join implicitly
    hopefully evaluating much fewer triples
    N)r5   Úp1ÚthawÚp2r:   )r$   ÚjoinÚar/   Úbs        r1   ÚevalLazyJoinrF   i   su   è è € õ �c˜4œ7Ñ#Ô#ð ð ˆØ�HŠH�Q‰KŒKˆÝ˜!˜TœWÑ%Ô%ð 	ð 	ˆAØ—'’'˜!‘*”*ÐÐÐÐð	ðð ó    c                 ó¾   — |j         rt          | |¦  «        S t          | |j        ¦  «        }t	          t          | |j        ¦  «        ¦  «        }t          ||¦  «        S ©N)ÚlazyrF   r5   r@   ÚsetrB   r   )r$   rC   rD   rE   s       r1   ÚevalJoinrL   v   sV   € ð
 „yð Ý˜C Ñ&Ô&Ð&å�S˜$œ'Ñ"Ô"ˆÝ•˜˜dœgÑ&Ô&Ñ'Ô'ˆÝ�Q˜‰{Œ{ÐrG   c                 ó¾   — g }t          | |j        ¦  «        D ]}|                     |¦  «         Œt          | |j        ¦  «        D ]}|                     |¦  «         Œ|S rI   )r5   r@   ÚappendrB   )r$   ÚunionÚbranch1_branch2r0   s       r1   Ú	evalUnionrQ   ƒ   sq   € Ø€OÝ�c˜5œ8Ñ$Ô$ð "ð "ˆØ×Ò˜qÑ!Ô!Ð!Ð!Ý�c˜5œ8Ñ$Ô$ð "ð "ˆØ×Ò˜qÑ!Ô!Ð!Ð!ØÐrG   c                 ó�   — t          | |j        ¦  «        }t          t          | |j        ¦  «        ¦  «        }t	          ||¦  «        S rI   )r5   r@   rK   rB   r   )r$   ÚminusrD   rE   s       r1   Ú	evalMinusrT   Œ   s:   € Ý��e”hÑÔ€AÝ�H�S˜%œ(Ñ#Ô#Ñ$Ô$€AÝ�!�Q‰<Œ<ÐrG   c              #   óÆ  ‡K  — t          | ‰j        ¦  «        D ]Ç}d}|                      |¦  «        }t          |‰j        ¦  «        D ]0}t	          ‰j        |                     | ¦  «        ¦  «        rd}|V — Œ1|sf‰j        j        }|�Tt          ˆfd„t          |                      | 	                    |¦  «        ¦  «        ‰j        ¦  «        D ¦   «         ¦  «        s|V — ŒÈd S )NFTc              3   óB   •K  — | ]}t          ‰j        |¦  «        V — Œd S rI   )r   r6   )Ú.0rE   rC   s     €r1   ú	<genexpr>zevalLeftJoin.<locals>.<genexpr>¢   sC   øè è € ð *ð *àõ �T”Y Ñ"Ô"ð*ð *ð *ð *ð *ð *rG   )
r5   r@   rA   rB   r   r6   r7   r8   ÚanyÚremember)r$   rC   rD   Úokr/   rE   Úp1_varss    `     r1   ÚevalLeftJoinr]   ’   s  øè è € å�c˜4œ7Ñ#Ô#ð ð ˆØˆØ�HŠH�Q‰KŒKˆÝ˜!˜TœWÑ%Ô%ð 	ð 	ˆAÝ�D”I˜qŸxšx¨™}œ}Ñ-Ô-ð Ø�Ø���øØð 	ð ”g”mˆGØˆ¥cð *ð *ð *ð *å! #§(¢(¨1¯:ª:°gÑ+>Ô+>Ñ"?Ô"?ÀÄÑIÔIð*ñ *ô *ñ 'ô 'ˆð
 ���øð'ð rG   c              #   ó²   K  — t          | |j        ¦  «        D ]>}t          |j        |j        s|                     | |j        ¬¦  «        n|¦  «        r|V — Œ?d S r3   )r5   r'   r   r6   Úno_isolated_scoper7   r8   )r$   Úpartr/   s      r1   Ú
evalFilterra   ª   sq   è è € å�c˜4œ6Ñ"Ô"ð ð ˆÝØŒIØ59Ô5KÐRˆA�HŠH�S $¤*ˆHÑ-Ô-Ð-ÐQRñ
ô 
ð 	ð ˆGˆGˆGøðð rG   c              #   ón  K  — | j         €t          d¦  «        ‚|                      ¦   «         } | |j                 }| j        }|€�| j                              ¦   «         D ]�}|| j         j        k    rŒ|                      |¦  «        }|                     ¦   «         }|j        |j	        ig}t          t          ||j        ¦  «        |¦  «        D ]}||j        _        |V — ŒŒ‚d S |                      | j                              |¦  «        ¦  «        }t          ||j        ¦  «        D ]}||j        _        |V — Œd S )NzKNon-conjunctive-graph doesn't know about graphs. Try a query without GRAPH.)ÚdatasetÚ	ExceptionÚcloneÚtermr    ÚcontextsÚdefault_contextÚ	pushGraphr"   Ú
identifierr   r5   r'   r$   Úget_context)r$   r`   r    Ú
prev_graphr/   ÚgraphSolutionr0   s          r1   Ú	evalGraphrn   ´   sQ  è è € à
„{ÐÝð3ñ
ô 
ð 	
ð
 �)Š)‰+Œ+€CØ�”	ŒN€EØ”€JØ€}à”[×)Ò)Ñ+Ô+ð 	ð 	ˆEð ˜œÔ3Ò3Ð3Øà—’˜eÑ$Ô$ˆAØ—’‘”ˆAØ"œi¨Ô)9Ð:Ð;ˆMÝ�8 A t¤vÑ.Ô.°Ñ>Ô>ð ð �Ø(�””Ø����ðð	ð 	ð �MŠM˜#œ+×1Ò1°%Ñ8Ô8Ñ9Ô9ˆÝ˜!˜TœVÑ$Ô$ð 	ð 	ˆAØ$ˆAŒEŒKØˆGˆGˆGˆGð	ð 	rG   c              #   óê   K  — |j         j        D ]c}|                      ¦   «         }	 |                     ¦   «         D ]\  }}|dk    r|||<   Œn# t          $ r Y ŒIw xY w|                     ¦   «         V — Œdd S )NÚUNDEF)r'   Úresr"   Úitemsr   r   )r$   r`   Úrr/   ÚkÚvs         r1   Ú
evalValuesrv   Õ   s£   è è € ØŒVŒZð 	ð 	ˆØ�HŠH‰JŒJˆð	ØŸš™	œ	ð ð ‘��1Ø˜’<�<Ø�A�a‘Døðøõ ð 	ð 	ð 	ØˆHð	øøøð �jŠj‰lŒlÐÐÐÐð	ð 	s   ¦%AÁ
AÁAc                 ól   — |j         j        dk    rt          | |¦  «        S t          | |j         ¦  «        S )NÚvalues)r'   Únamerv   r5   )r$   r`   s     r1   ÚevalMultisetrz   â   s3   € à„v„{�hÒÐÝ˜#˜tÑ$Ô$Ð$å�C˜œÑ Ô Ð rG   c                 ó>  ‡ — t          j        ¦   «         D ]#\  }}	  |‰ |¦  «        c S # t          $ r Y Œ w xY w|j        dk    r)t	          |j        ˆ fd„¬¦  «        }t          ‰ |¦  «        S |j        dk    rt          ‰ |¦  «        S |j        dk    rt          ‰ |¦  «        S |j        dk    rt          ‰ |¦  «        S |j        dk    rt          ‰ |¦  «        S |j        dk    rt          ‰ |¦  «        S |j        d	k    rt          ‰ |¦  «        S |j        d
k    rt          ‰ |¦  «        S |j        dk    rt          ‰ |¦  «        S |j        dk    rt          ‰ |¦  «        S |j        dk    rt!          ‰ |¦  «        S |j        dk    rt#          ‰ |¦  «        S |j        dk    rt%          ‰ |¦  «        S |j        dk    rt'          ‰ |¦  «        S |j        dk    rt)          ‰ |¦  «        S |j        dk    rt+          ‰ |¦  «        S |j        dk    rt-          ‰ |¦  «        S |j        dk    rt/          ‰ |¦  «        S |j        dk    rt1          ‰ |¦  «        S |j        dk    rt3          ‰ |¦  «        S |j        dk    rt5          d¦  «        ‚t5          d|j        z  ¦  «        ‚)NÚBGPc                 ó:   •— t          ˆfd„| D ¦   «         ¦  «        S )Nc                 ó$   •— g | ]}‰|         ­
|‘ŒS rI   © )rW   Únr$   s     €r1   ú
<listcomp>z.evalPart.<locals>.<lambda>.<locals>.<listcomp>÷   s   ø€ Ð,LÐ,LÐ,L°1¸SÀ¼V¸^¨Q¸^¸^¸^rG   )Úlen)Útr$   s    €r1   ú<lambda>zevalPart.<locals>.<lambda>÷   s$   ø€ ­Ð,LÐ,LÐ,LÐ,L¸Ð,LÑ,LÔ,LÑ(MÔ(M€ rG   )ÚkeyÚFilterÚJoinÚLeftJoinr   ÚUnionÚ
ToMultiSetÚExtendÚMinusÚProjectÚSliceÚDistinctÚReducedÚOrderByÚGroupÚAggregateJoinÚSelectQueryÚAskQueryÚConstructQueryÚServiceGraphPatternÚDescribeQueryzDESCRIBE not implementedzI dont know: %s)r   rr   ÚNotImplementedErrorry   Úsortedr!   r#   ra   rL   r]   rn   rQ   rz   r>   rT   ÚevalProjectÚ	evalSliceÚevalDistinctÚevalReducedÚevalOrderByÚ	evalGroupÚevalAggregateJoinÚevalSelectQueryÚevalAskQueryÚevalConstructQueryÚevalServiceQueryrd   )r$   r`   ry   r/   r!   s   `    r1   r5   r5   ê   s  ø€ õ  Ô%Ñ'Ô'ð ð ‰ˆˆað	Ø�1�S˜$‘<”<ÐÐÐøÝ"ð 	ð 	ð 	ØˆDð	øøøð „y�EÒÐõ ØŒLÐMÐMÐMÐMð
ñ 
ô 
ˆõ �s˜GÑ$Ô$Ð$Ø	Œ�hÒ	Ð	Ý˜#˜tÑ$Ô$Ð$Ø	Œ�fÒ	Ð	Ý˜˜TÑ"Ô"Ð"Ø	Œ�jÒ	 Ð	 Ý˜C Ñ&Ô&Ð&Ø	Œ�gÒ	Ð	Ý˜˜dÑ#Ô#Ð#Ø	Œ�gÒ	Ð	Ý˜˜dÑ#Ô#Ð#Ø	Œ�lÒ	"Ð	"Ý˜C Ñ&Ô&Ð&Ø	Œ�hÒ	Ð	Ý˜#˜tÑ$Ô$Ð$Ø	Œ�gÒ	Ð	Ý˜˜dÑ#Ô#Ð#à	Œ�iÒ	Ð	Ý˜3 Ñ%Ô%Ð%Ø	Œ�gÒ	Ð	Ý˜˜dÑ#Ô#Ð#Ø	Œ�jÒ	 Ð	 Ý˜C Ñ&Ô&Ð&Ø	Œ�iÒ	Ð	Ý˜3 Ñ%Ô%Ð%à	Œ�iÒ	Ð	Ý˜3 Ñ%Ô%Ð%Ø	Œ�gÒ	Ð	Ý˜˜dÑ#Ô#Ð#Ø	Œ�oÒ	%Ð	%Ý   dÑ+Ô+Ð+à	Œ�mÒ	#Ð	#Ý˜s DÑ)Ô)Ð)Ø	Œ�jÒ	 Ð	 Ý˜C Ñ&Ô&Ð&Ø	ŒÐ&Ò	&Ð	&Ý! # tÑ,Ô,Ð,à	ŒÐ+Ò	+Ð	+Ý  TÑ*Ô*Ð*ð 
Œ�oÒ	%Ð	%ÝÐ2Ñ3Ô3Ð3õ Ð)¨D¬IÑ5Ñ6Ô6Ð6s   ›)©
6µ6c              #   ó2  K  — i }t          j        d|                     dd¦  «        t           j        t           j        z  ¦  «        }|�rN|                     d¦  «        }t          | |¦  «        }|ddœ}ddd	œ}t          |¦  «        d
k     r2t          t          |dz   t          |¦  «        z   |¬¦  «        ¦  «        }n>t          t          |t          |¦  «                             ¦   «         |¬¦  «        ¦  «        }|j        dk    r{t          j        |                     ¦   «         ¦  «        }	|	d         d         x}
|d<   |	d         d         }t          |¦  «        dk    r|D ]}t!          | ||
¦  «        D ]}|V — ŒŒd S d S t#          d||j        ¦  «        ‚d S )Nz ^service <(.*)>[ 
]*{(.*)}[ 
]*$Úservice_stringÚ r   Újson)ÚqueryÚoutputzapplication/sparql-results+jsonÚrdflibForAnUser)Úacceptz
user-agentiX  ú?)Úheaders)Údatar¯   éÈ   ÚheadÚvarsÚvars_ÚresultsÚbindingsr   z#Service: %s responded with code: %s)ÚreÚmatchÚgetÚDOTALLÚIÚgroupÚ_buildQueryStringForServiceCallr‚   r   r   r   ÚencodeÚstatusÚjÚloadsÚreadÚ#_yieldBindingsFromServiceCallResultrd   )r$   r`   rq   r¸   Úservice_urlÚservice_queryÚquery_settingsr¯   Úresponser©   Ú	variablesrs   Úbounds                r1   r¥   r¥   .  sÙ  è è € Ø
€CÝŒHØ,Ø�ŠÐ! 2Ñ&Ô&Ý
Œ	•B”DÑñô €Eð ñ "Ø—k’k !‘n”nˆÝ7¸¸UÑCÔCˆà#0¸FÐCÐCˆà7Ø+ð
ð 
ˆõ
 ˆ}ÑÔ Ò#Ð#ÝÝ˜ cÑ)­I°nÑ,EÔ,EÑEÈwÐWÑWÔWñô ˆHˆHõ ÝØÝ" >Ñ2Ô2×9Ò9Ñ;Ô;Ø#ðñ ô ñô ˆHð Œ?˜cÒ!Ð!Ý”7˜8Ÿ=š=™?œ?Ñ+Ô+ˆDØ'+¨F¤|°FÔ';Ð;ˆI˜˜G™à�y”/ *Ô-ˆCÝ�3‰xŒx˜!Š|ˆ|Øð $ð $�AÝ!DÀSÈ!ÈYÑ!WÔ!Wð $ð $˜Ø#˜˜˜˜ð$ð ˆ|ð$ð $õ Ø5°{ÀHÄOñô ð ðA"ð "rG   c                 ó€  ‡ — |                      d¦  «        }	 t          j        |¦  «         n™# t          $ rŒ d|z   dz   }‰ j        j        j                             ¦   «         D ]1}d|d         z   dz   |d                              ¦   «         z   dz   |z   }Œ2‰ j        j	        }|�t          |¦  «        dk    rd	|z   d
z   |z   }Y nw xY w‰                      ¦   «         }t          |¦  «        dk    rQd                     d„ |D ¦   «         ¦  «        }d                     ˆ fd„|D ¦   «         ¦  «        }|dz   |z   dz   |z   dz   }|S )Né   zSELECT REDUCED * WHERE {ú}zPREFIX r   ú:r   ú zBASE <z> c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )Ún3)rW   ru   s     r1   r�   z3_buildQueryStringForServiceCall.<locals>.<listcomp>s  s    € Ð2Ð2Ð2¨˜aŸdšd™fœfÐ2Ð2Ð2rG   c                 ó^   •— g | ])}‰                      |¦  «                             ¦   «         ‘Œ*S r   )r¹   rÐ   )rW   ru   r$   s     €r1   r�   z3_buildQueryStringForServiceCall.<locals>.<listcomp>t  s+   ø€ Ð#AÐ#AÐ#A¸ C§G¢G¨A¡J¤J§M¢M¡O¤OÐ#AÐ#AÐ#ArG   zVALUES (z) {(z)})r¼   r   Ú
parseQueryr   ÚprologueÚnamespace_managerÚstoreÚ
namespacesrÐ   Úbaser‚   r   rC   )r$   r¸   rÅ   r'   r×   ÚsolrÈ   Úvariables_bounds   `       r1   r½   r½   c  sp  ø€ à—K’K ‘N”N€Mð
CÝÔ˜-Ñ(Ô(Ð(Ð(øÝð Cð Cð Cà2°]ÑBÀSÑHˆØ”Ô/Ô5×@Ò@ÑBÔBð 	Uð 	UˆAØ%¨¨!¬Ñ,¨sÑ2°Q°q´T·W²W±Y´YÑ>ÀÑDÀ}ÑTˆMˆMàŒ|Ô ˆØÐ¥ D¡	¤	¨A¢ Ø$ t™O¨dÑ2°]ÑBˆMøøðCøøøð �,Š,‰.Œ.€CÝ
ˆ3�x„x�!‚|€|Ø—H’HÐ2Ð2¨cÐ2Ñ2Ô2Ñ3Ô3ˆ	ØŸ(š(Ð#AÐ#AÐ#AÐ#A¸SÐ#AÑ#AÔ#AÑBÔBˆà˜JÑ&¨Ñ2°VÑ;¸oÑMÐPTÑTð 	ð Ðs   ˜- ­BCÃCc              #   óª  K  — i }|D �]8}||v �r0||         �r'||         d         dk    r,t          ||         d         ¦  «        |t          |¦  «        <   ŒO||         d         dk    r,t          ||         d         ¦  «        |t          |¦  «        <   Œ�||         d         dk    rDd||         v r:t          ||         d         ||         d         ¬¦  «        |t          |¦  «        <   Œã||         d         dk    rCd||         v r9t          ||         d         ||         d         ¬	¦  «        |t          |¦  «        <   �Œ:t	          | |¦  «        V — d S )
NÚtypeÚurir   ÚbnodeÚliteralÚdatatype)rß   zxml:lang)Úlang)r
   r   r	   r   r   )r$   rs   rÈ   Úres_dictr;   s        r1   rÃ   rÃ   {  sg  è è € Ø€HØð ñ ˆØ�!ˆ8‰8˜˜#œ‰8Ø�Œv�fŒ~ Ò&Ð&Ý*0°°3´¸´Ñ*AÔ*A�� #™œÑ'Ð'Ø�3”˜” 7Ò*Ð*Ý*/°°#´°w´Ñ*@Ô*@�� #™œÑ'Ð'Ø�3”˜” 9Ò,Ð,°¸qÀ¼vÐ1EÐ1EÝ*1Ø�c”F˜7”O¨a°¬f°ZÔ.@ð+ñ +ô +�� #™œÑ'Ð'ð �3”˜” 9Ò,Ð,°¸qÀ¼vÐ1EÐ1EÝ*1Ø�c”F˜7”O¨!¨C¬&°Ô*<ð+ñ +ô +�� #™œÑ'ùõ ˜˜hÑ
'Ô
'Ð'Ð'Ð'Ð'Ð'rG   c                 ó,   — t          | |j        ¦  «        S )z<
    http://www.w3.org/TR/sparql11-query/#defn_algGroup
    ©r5   r'   )r$   r¼   s     r1   r    r    Ž  s   € õ
 �C˜œÑ!Ô!Ð!rG   c              #   ó   ‡‡K  — t          | ‰j        ¦  «        }‰j        j        }t          j        ˆfd„¦  «        }|€#|d         }|D ]Š|                     ‰¦  «         Œn;|D ]8Št          ˆfd„|D ¦   «         ¦  «        }||                              ‰¦  «         Œ9|                     ¦   «         D ]&}t          | | 	                    ¦   «         ¦  «        V — Œ't          |¦  «        dk    rt          | ¦  «        V — d S d S )Nc                  ó.   •— t          ‰ j        ¬¦  «        S )N)Úaggregations)r   ÚA)Úaggs   €r1   r„   z#evalAggregateJoin.<locals>.<lambda>œ  s   ø€ ­*À#Ä%Ð*HÑ*HÔ*H€ rG   Tc              3   ó:   •K  — | ]}t          |‰d ¦  «        V — ŒdS )FN)r   )rW   r=   Úrows     €r1   rX   z$evalAggregateJoin.<locals>.<genexpr>§  s/   øè è € Ð?Ð?¨q•e˜A˜s EÑ*Ô*Ð?Ð?Ð?Ð?Ð?Ð?rG   r   )r5   r'   r6   ÚcollectionsÚdefaultdictÚupdateÚtuplerx   r   Úget_bindingsr‚   )r$   rè   r'   Ú
group_exprrq   Ú
aggregatorrt   rê   s    `     @r1   r¡   r¡   –  s6  øøè è € å��c”eÑÔ€Að ””€JÝ
Ô
!Ð"HÐ"HÐ"HÐ"HÑ
IÔ
I€CàÐð ˜”Yˆ
Øð 	#ð 	#ˆCØ×Ò˜cÑ"Ô"Ð"Ð"ð	#ð ð 	ð 	ˆCåÐ?Ð?Ð?Ð?°JÐ?Ñ?Ô?Ñ?Ô?ˆAØ�ŒF�MŠM˜#ÑÔÐÐð —j’j‘l”lð =ð =ˆ
Ý˜S *×"9Ò"9Ñ";Ô";Ñ<Ô<Ð<Ð<Ð<Ð<õ ˆ3�x„x�1‚}€}Ý˜SÑ!Ô!Ð!Ð!Ð!Ð!Ð!ð €}rG   c                 óÈ   ‡— t          | |j        ¦  «        }t          |j        ¦  «        D ]6Št	          ‰j        o
‰j        dk    ¦  «        }t          |ˆfd„|¬¦  «        }Œ7|S )NÚDESCc                 óL   •— t          t          | ‰j        d¬¦  «        ¦  «        S )NT)rÈ   )r   r   r6   )r0   r=   s    €r1   r„   zevalOrderBy.<locals>.<lambda>»  s    ø€ �t¥E¨!¨Q¬V¸tÐ$DÑ$DÔ$DÑEÔE€ rG   )r…   Úreverse)r5   r'   Úreversedr6   ÚboolÚorderrš   )r$   r`   rq   rõ   r=   s       @r1   rŸ   rŸ   ³  sv   ø€ å
�3˜œÑ
Ô
€Cå�d”iÑ Ô ð 
ð 
ˆå�q”wÐ4 1¤7¨fÒ#4Ñ5Ô5ˆÝØÐEÐEÐEÐEÈwð
ñ 
ô 
ˆˆð €JrG   c                 óŽ   — t          | |j        ¦  «        }t          j        ||j        |j        �|j        |j        z   nd ¦  «        S rI   )r5   r'   Ú	itertoolsÚisliceÚstartÚlength)r$   Úslicerq   s      r1   rœ   rœ   Á  sH   € Ý
�3˜œÑ
 Ô
 €CåÔØØŒØ&+¤lÐ&>ˆŒ�e”lÑ"Ð"ÀDñô ð rG   c              #   ó„  K  — d}t          ¦   «         }t          j        ¦   «         }t          | |j        ¦  «        D ]„}||v r|                     |¦  «         nS|V — |                     |¦  «         t          |¦  «        |k    r'|                     |                     ¦   «         ¦  «         | 	                    |¦  «         Œ…dS )zËapply REDUCED to result

    REDUCED is not as strict as DISTINCT, but if the incoming rows were sorted
    it should produce the same result with limited extra memory and time per
    incoming row.
    r   N)
rK   rë   Údequer5   r'   ÚremoveÚaddr‚   ÚpopÚ
appendleft)r$   r`   ÚMAXÚmru_setÚ	mru_queuerê   s         r1   rž   rž   Ë  sÊ   è è € ð €Cõ ‰eŒe€GÝÔ!Ñ#Ô#€Iå˜˜TœVÑ$Ô$ð "ð "ˆØ�'ˆ>ˆ>à×Ò˜SÑ!Ô!Ð!Ð!ð ˆIˆIˆIØ�KŠK˜ÑÔÐÝ�7‰|Œ|˜cÒ!Ð!à—’˜yŸ}š}™œÑ/Ô/Ð/à×Ò˜SÑ!Ô!Ð!Ð!ð"ð "rG   c              #   ó”   K  — t          | |j        ¦  «        }t          ¦   «         }|D ]}||vr|V — |                     |¦  «         Œ d S rI   )r5   r'   rK   r  )r$   r`   rq   Údoner0   s        r1   r�   r�   ñ  s[   è è € Ý
�3˜œÑ
Ô
€Cå‰5Œ5€DØð ð ˆØ�Dˆ=ˆ=ØˆGˆGˆGØ�HŠH�Q‰KŒKˆKøðð rG   c                 óJ   ‡— t          | ‰j        ¦  «        }ˆfd„|D ¦   «         S )Nc              3   óL   •K  — | ]}|                      ‰j        ¦  «        V — Œd S rI   )ÚprojectÚPV)rW   rê   r  s     €r1   rX   zevalProject.<locals>.<genexpr>þ  s1   øè è € Ð3Ð3¨ˆC�KŠK˜œ
Ñ#Ô#Ð3Ð3Ð3Ð3Ð3Ð3rG   rã   )r$   r  rq   s    ` r1   r›   r›   û  s.   ø€ Ý
�3˜œ	Ñ
"Ô
"€Cà3Ð3Ð3Ð3¨sÐ3Ñ3Ô3Ð3rG   c                 óX   — i }d|d<   t          | |j        ¦  «        |d<   |j        |d<   |S )NÚSELECTÚtype_r¶   r´   )r5   r'   r  )r$   rª   rq   s      r1   r¢   r¢     s5   € à
€CØ€Cˆ�LÝ˜s E¤GÑ,Ô,€Cˆ
�OØ”8€Cˆ�LØ€JrG   c                 óX   — i }d|d<   d|d<   t          | |j        ¦  «        D ]}d|d<    |S )NÚASKr  FÚ	askAnswerTrã   )r$   rª   rq   r0   s       r1   r£   r£   
  sG   € Ø
€CØ€Cˆ�LØ€CˆÑÝ�c˜5œ7Ñ#Ô#ð ð ˆØˆˆKÑØà€JrG   c                 óÄ   — |j         }|s|j        j        j        }t          ¦   «         }t	          | |j        ¦  «        D ]}|t          ||¦  «        z  }Œi }d|d<   ||d<   |S )NÚ	CONSTRUCTr  r    )Útemplater'   r!   r   r5   r   )r$   rª   r  r    r/   rq   s         r1   r¤   r¤     ss   € ØŒ~€Hàð %à”7”9Ô$ˆå‰GŒG€Eå�c˜5œ7Ñ#Ô#ð ,ð ,ˆØ•˜x¨Ñ+Ô+Ñ+ˆˆà
€CØ€Cˆ�LØ€Cˆ�Là€JrG   c                 óJ  — t          d„ |                     ¦   «         D ¦   «         ¦  «        }t          | |¬¦  «        }|j        |_        |j        }|j        r¾|j        €t          d¦  «        ‚|                     ¦   «         }d}|j        D ]Š}|j	        r\|r=|j         
                    t          ¦   «         ¦  «        }|                     |¦  «        }d}|                     |j	        d¬¦  «         Œe|j        r|j        }	|                     |	d¬¦  «         Œ‹t          ||¦  «        S )Nc              3   ó>   K  — | ]\  }}t          |¦  «        |fV — Œd S rI   )r   )rW   rt   ru   s      r1   rX   zevalQuery.<locals>.<genexpr>*  s1   è è € ÐJÐJ©T¨Q°� !™œ aÐ(ÐJÐJÐJÐJÐJÐJrG   )ÚinitBindingszRNon-conjunctive-graph doesn't know about graphs! Try a query without FROM (NAMED).FT)Údefault)Údictrr   r   rÓ   ÚalgebraÚdatasetClauserc   rd   re   r  rk   r	   ri   ÚloadÚnamedr5   )
r    rª   r  r×   r$   ÚmainÚfirstDefaultÚdÚdgÚgs
             r1   Ú	evalQueryr%  (  s0  € åÐJÐJ°\×5GÒ5GÑ5IÔ5IÐJÑJÔJÑJÔJ€Lå
�u¨<Ð
8Ñ
8Ô
8€Cà”>€C„LØŒ=€DàÔð +ØŒ;ÐÝð>ñô ð ð
 �iŠi‰kŒkˆàˆØÔ#ð 	+ð 	+ˆAØŒyð +àð (àœ×0Ò0µ±´Ñ9Ô9�BØŸ-š-¨Ñ+Ô+�CØ#'�Là—’˜œ¨D�Ñ1Ô1Ð1Ð1à”ð +Ø”G�Ø—’˜ E�Ñ*Ô*Ð*øå�C˜ÑÔÐrG   rI   )CÚ__doc__rë   rú   r·   Úurllib.requestr   r   Úurllib.parser   r©   rÀ   Ú	pyparsingr   Úrdflibr   r   r	   r
   r   Úrdflib.plugins.sparqlr   Ú!rdflib.plugins.sparql.parserutilsr   Úrdflib.plugins.sparql.sparqlr   r   r   r   r   Úrdflib.plugins.sparql.evalutilsr   r   r   r   r   r   r   r   Ú rdflib.plugins.sparql.aggregatesr   r   r#   r>   rF   rL   rQ   rT   r]   ra   rn   rv   rz   r5   r¥   r½   rÃ   r    r¡   rŸ   rœ   rž   r�   r›   r¢   r£   r¤   r%  r   rG   r1   ú<module>r0     s:  ððð ð  Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $à :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø .Ð .Ð .Ð .Ð .Ð .Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø (Ð (Ð (Ð (Ð (Ð (ð%ð %ð %ðPð ð ð
ð 
ð 
ð
ð 
ð 
ðð ð ðð ð ðð ð ð0ð ð ðð ð ðB
ð 
ð 
ð!ð !ð !ðA7ð A7ð A7ðH*ð *ð *ðZðð ð ð0(ð (ð (ð&"ð "ð "ð"ð "ð "ð:ð ð ðð ð ð#"ð #"ð #"ðLð ð ð4ð 4ð 4ðð ð ðð ð ðð ð ð&"ð "ð "ð "ð "ð "rG   