
    Pi
                    &   d Z ddlmZ ddl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mZmZmZmZmZmZmZ ddlmZ ddlmZmZmZmZmZmZ ddlmZmZ dd	l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- ddZ.ddZ/ddZ0ddZ1ddZ2ddZ3	 ddd!Z4dd"Z5dd$Z6dd(Z7dd+Z8dd.Z9ddd0Z:dd8Z;dd<Z<dd?Z=ddDZ>eddG            Z?eddI            Z?ddLZ?ddOZ@ddRZAddTZBddUZCddVZDddWZE G dX dYeF          ZGdZ d[ fdd`ZHda fdddZIde df dfddiZJddjZKddlZLddnZMddqZNdddtZOdduZPddyZQddzZRdd|ZSdd~ZTddZddZU	 	 dddZVddZWddZX	 	 dddZY	 	 dddZZ G d deF          Z[ G d d          Z\ddZ]ddZ^dS )z
Converting the 'parse-tree' output of pyparsing to a SPARQL Algebra expression

http://www.w3.org/TR/sparql11-query/#sparqlQuery
    )annotationsN)reduce)AnyCallableDefaultDictDictIterableListMappingOptionalSetTupleoverload)ParseResults)AlternativePathInvPathMulPathNegatedPathPathSequencePath)
TrueFilterand_)simplify)	CompValueExpr)PrologueQueryUpdate)BNode
IdentifierLiteralURIRefVariablepr   exprList[CompValue]returnc                &    t          d| |          S )NOrderByr$   r%   r   r*   s     q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/sparql/algebra.pyr)   r)   0   s    Y!$////    2typing.Union[List[Dict[Variable, str]], CompValue]c                $    t          d|           S )N
ToMultiSetr$   r+   r1   s    r,   r0   r0   4   s    \Q''''r-   p1p2c                &    t          d| |          S )NUnionr2   r3   r+   r6   s     r,   r5   r5   8       W++++r-   Optional[CompValue]c                &    t          d| |          S )NJoinr6   r+   r6   s     r,   r:   r:   <   s    Vr****r-   c                &    t          d| |          S )NMinusr6   r+   r6   s     r,   r<   r<   @   r7   r-   termr    graphc                &    t          d| |          S )NGraph)r=   r$   r+   )r=   r>   s     r,   r@   r@   D   s    W451111r-   triples9Optional[List[Tuple[Identifier, Identifier, Identifier]]]c                (    t          d| pg           S )NBGPrA   r+   rE   s    r,   rD   rD   H   s     UGMr2222r-   c                (    t          d| ||          S )NLeftJoinr2   r3   r%   r+   rH   s      r,   rG   rG   N   s    ZB2D9999r-   r   c                &    t          d| |          S )NFilterr%   r$   r+   rK   s     r,   rJ   rJ   R   s    XDA....r-   typing.Union[Identifier, Expr]varr#   c                (    t          d| ||          S )NExtendr$   r%   rM   r+   rP   s      r,   rO   rO   V   s     X37777r-   resList[Dict[Variable, str]]c                $    t          d|           S )NvaluesrQ   r+   rU   s    r,   ValuesrV   \   s    X3''''r-   PVList[Variable]c                &    t          d| |          S )NProjectr$   rW   r+   r[   s     r,   rZ   rZ   `   s    Y!++++r-   Optional[List[Variable]]c                &    t          d| |          S )NGroupr*   r+   r*   s     r,   r^   r^   d   s    W----r-   triple)Tuple[Identifier, Identifier, Identifier]	varsknown"Set[typing.Union[BNode, Variable]]	varscountDict[Identifier, int]Tuple[int, int, bool]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xra   s     r,   
<listcomp>z_knownTerms.<locals>.<listcomp>o   sB       I%%*Q58I*J*J% %%%r-   c              3  D   K   | ]}                     |d           V  dS )r   N)get)rj   rk   rc   s     r,   	<genexpr>z_knownTerms.<locals>.<genexpr>u   s1      11QY]]1a  111111r-      )lensumri   r!   )r_   ra   rc   s    ``r,   _knownTermsrs   h   s|     	     	
 	
 
1111&111	1	11vay'***
 
r-   l_3Iterable[Tuple[Identifier, Identifier, Identifier]]/List[Tuple[Identifier, Identifier, Identifier]]c                   d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     rt          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
    r=   strra   "Set[typing.Union[Variable, BNode]]c                l    t          | t          t          f          r|                    |            d S d S N)ri   r#   r   add)r=   ra   s     r,   _addvarzreorderTriples.<locals>._addvar   s;    dXu-.. 	 MM$	  	 r-   c                    g | ]}d |fS r{   rh   rj   rk   s     r,   rl   z"reorderTriples.<locals>.<listcomp>   s    	 	 	 4)	 	 	 r-      r   c              3  V   K   | ]#}t          |d                    |d          fV  $dS )r   N)rs   )rj   rk   rc   ra   s     r,   ro   z!reorderTriples.<locals>.<genexpr>   s<      XXAQqT9i@@!A$GXXXXXXr-   Nc                    g | ]
}|d          S )r   rh   r   s     r,   rl   z"reorderTriples.<locals>.<listcomp>   s    QAaDr-   )r=   rx   ra   ry   )	setcollectionsdefaultdictintri   r#   r   rq   sorted)rt   r}   tcijrc   ra   s         @@r,   reorderTriplesr   z   s           
!	 R	 	 	 B47EEI'2'>s'C'CI " "1 	" 	"A!h.// "!!	" 	
A c"gg++ XXXXXQSTUTVTVQWXXXXX122qE!HQK!ec"ggoo"QU)A,q/Q"6"6AYq\ & &9%%%%FA !ec"ggoo"QU)A,q/Q"6"6 	
Q c"gg++ "r-   lUtyping.Union[List[List[Identifier]], List[Tuple[Identifier, Identifier, Identifier]]]c           	         t          d |           t                    dz  dk    rt          d          t          fdt	          dt                    d          D                       S )Nc                    | |z   S r{   rh   )rk   ys     r,   <lambda>ztriples.<locals>.<lambda>   s
    QU r-      r   zthese aint triplesc              3  R   K   | ]!}|         |d z            |dz            fV  "dS )r   rp   Nrh   )rj   rk   _ls     r,   ro   ztriples.<locals>.<genexpr>   s>      VVA2a5"QU)RAY7VVVVVVr-   )r   rq   	Exceptionr   range)r   r   s    @r,   rA   rA      sr    
 
""A	&	&BB!,---VVVVq#b''STAUAUVVVVVVr-   typing.Union[CompValue, str]prologuer   Optional[Identifier]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)	ri   r   name
absolutizer!   stringr   r   r"   )r$   r   s     r,   translatePNamer      s     !Y &6W&&q)))6Yqv0C0CAJ0O0O    
 
Av		 &""1%%%& &r-   r"   Nonec                    d S r{   rh   r1   s    r,   translatePathr      s    &)cr-   r   c                    d S r{   rh   r1   s    r,   r   r      s    ),r-   typing.Union[CompValue, URIRef]Optional[Path]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)ri   r   r   rq   partr   r   modlistr   r   r   r   r1   s    r,   r   r      s   
 !Y %+6&&&16{{avay &//V~%%16{{avay #QV,,Vy  5 	2vafd++ 216{{a'''666"16!9ae444"1615111V)))!&$'' 'qv;;!###M222qvay)))qv&V///!&$'' +"?AF#;<<<"16***K%+ %+B 0/r-   e-typing.Union[Expr, Literal, Variable, URIRef]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_NOTEXISTSrJ   T)ri   r   r   translateGroupGraphPatternr>   no_isolated_scopens    r,   _cztranslateExists.<locals>._c	  sh    a## 	5v@@@4QW==7<8++04AG---	5 	5@@++r-   	visitPost)traverse)r   r   s     r,   translateExistsr     s*    5 5 5 	b!!!AHr-   partsOptional[Expr]c                   g }d}|t          |           k     rh| |         }|j        dk    r=|                    t          |j                             |                     |           n|dz  }|t          |           k     h|r	t          | S dS )zFILTER expressions apply to the whole group graph pattern in which
    they appear.

    http://www.w3.org/TR/sparql11-query/#sparqlCollectFilters
    r   rJ   r   N)rq   r   appendr   r%   popr   )r   filtersr   r$   s       r,   collectAndRemoveFiltersr     s     G	A
c%jj..!H6XNN?1622333IIaLLLLFA c%jj..  W~4r-   graphPatternc                f    d }| j         D ]&}t          |          }|s|}t          ||          }'|S r{   )r>   r   r5   )r   Ags      r,   !translateGroupOrUnionGraphPatternr   /  sI    !A  &q)) 	AAaAA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{   )r0   translateValuesr   s    r,   translateInlineDatar   ?  s    ol33444r-   c                d   | j         r| S | 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)          |t+          |j                  |j                  }}t/          dt1          |          d|j                  |rt3          ||          }d|_         |S )zB
    http://www.w3.org/TR/sparql11-query/#convertGraphPattern
    	SubSelectr   TriplesBlockrD   rA   OptionalGraphPatternrJ   MinusGraphPatternr6   GroupOrUnionGraphPatternGraphGraphPattern
InlineDataServiceGraphPattern)rD   rO   Bindz#Unknown part in GroupGraphPattern: z - rK   T)
translatedr   r0   	translater   r   r   rD   rA   r   r>   rG   r$   r%   r   r<   r:   r   r   r   rO   r   rM   r   typerJ   )r   r   r   r$   Gr   s         r,   r   r   C  s   
   K''
 )L11!4555 %l&788GA  6^##  !B%*--bE)	 2 22HHQKKKKA  6+++*1733Av!!QQV,,Q:..V***9!'BBCCCAAV111?BBCCCAAV***8;;<<<AAV|##1!44555AAV,,,a   AAV(((a   AAVv q/!&111599AA )@DQP    &1%%% ALHr-   c                      e Zd ZddZdS )StopTraversalrvboolc                    || _         d S r{   )r   )selfr   s     r,   __init__zStopTraversal.__init__  s    r-   N)r   r   )__name__
__module____qualname__r   rh   r-   r,   r   r     s(             r-   r   c                    d S r{   rh   r   s    r,   r   r         t r-   c                    d S r{   rh   r   s    r,   r   r          r-   r   visitPreCallable[[Any], Any]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 )zhTraverse a parse-tree, visit each node

    if visit functions return a value, replace current node
    Nc                2    g | ]}t          |          S rh   	_traverserj   rk   r   r   s     r,   rl   z_traverse.<locals>.<listcomp>  s%    ===a	!Xy11===r-   c                2    g | ]}t          |          S rh   r   r   s     r,   rl   z_traverse.<locals>.<listcomp>  s%    CCCAi8Y77CCCr-   )ri   r   r   tupler   itemsr   )r   r   r   _ekvals    ``   r,   r   r     s     
!B	~	yt!dL)** 7=====1====	Au		 7CCCCCCCCDDD	Ay	!	! 7ggii 	7 	7FAsS(I66AaDD	1B	~	Hr-   c                    d S r{   rh   )r   vs     r,   r   r     s    4 r-   visitorCallable[[Any, Any], Any]c                *   g }t          | t          t          t          f          rfd| D             }nTt          | t                    r?|                                 D ]*\  }}|#|                    t          |                     + | |          S )zm
    Traverse a parse-tree, visit each node

    if visit functions return a value, replace current node
    c                0    g | ]}t          |          S rh   )_traverseAgg)rj   rk   r   s     r,   rl   z _traverseAgg.<locals>.<listcomp>  s#    333A|Aw''333r-   )ri   r   r   r   r   r   r   r  )r   r   rQ   r   r   s    `   r,   r  r    s     C!dL%011 73333333	Ay	!	! 7ggii 	7 	7FAs

<W5566671c??r-   c                    d S r{   rh   r   s    r,   r   r     r   r-   c                    d S r{   rh   r   s    r,   r   r     r   r-   completeOptional[bool]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   r  rsts         r,   r   r     sX    dHi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)ri   r   r   
startswithr   )rk   s    r,   _hasAggregater    sP     !Y &6\** 	&%%%& &	& 	&r-   Optional[Variable]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__rQ   N)ri   r   r   r  r   r#   rq   )r   r   aggvars      r,   _aggsr    sv     !Y AF$5$5l$C$C 	,Q/00%	   r-   Set[Variable]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{   rM   evarrj   r   s     r,   ro   z_findVars.<locals>.<genexpr>   s*      AAq15?AFAAAAAAr-   N)ri   r#   r|   r   r   rM   
projectionupdate)rk   rQ   s     r,   	_findVarsr    s     !X 


!Y 6VGGAENNNHV{""| B

AAALAAAAAAH  #"r-   childrenList[Set[Variable]]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_varsrO   c                $    g | ]\  }}|d k    |S )r%   rh   )rj   childr   s      r,   rl   z_addVars.<locals>.<listcomp>  s!    MMM;5$dfnnnnnr-   r   c              3  2   K   | ]}|j         p|j        V  d S r{   r  r  s     r,   ro   z_addVars.<locals>.<genexpr>  s*      BBAEOQVBBBBBBr-   )
ri   r#   r   r   r   r   operatoror_zipr  )rk   r  ss      r,   _addVarsr+    s'    !X A3xx	Ay	!	! 6+++AgJJVxMM#h*:*:MMM AgJJ VHL(CEEBBCCAgJv$$< BBQ\BBBBBAAAz(,#%%000r-   >typing.Union[CompValue, List[Expr], Expr, List[str], Variable]r   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)ri   r   r   r  r#   )r   r   s     r,   _sampler1  '  sn    
 !Y AF$5$5l$C$C !X 5166+!44445 566r-   c                N    t          | t                    rt          |           S d S r{   )ri   r   simplifyFilters)r   s    r,   _simplifyFiltersr4  2  s,    !T "q!!!" "r-   qM1Tuple[CompValue, List[Tuple[Variable, Variable]]]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   Tr  Fr  r   r.  )r0  rQ   AggregateJoin)r   r$   )r  r  r   r%   	functoolspartialr1  r  havingr  orderbyrM   r#   rq   r   r   )r5  r6  Er   r   r   s         r,   translateAggregatesr@  7  s    *,AA 	| I 	I 	IAv I!!&)*;Gqv*N*N*NOO!!&)*;EQ*G*G*GHH -$777 :AHg..9,Ua888999 	=5999 ;QY00	I-eq999::: 	| & 	& 	&Au &lc!ffqj9::#5AErJJJKKK"ae%%%_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   )rM   valueri   r   r   dictr)  rV   )r   rQ   r   valss       r,   r   r   [  s     &(C5 
7 
agaj$'' /7 	( 	(CJJa#''''	( G 	/ 	/DJJtCt,,--....#;;r-   *Tuple[Optional[CompValue], List[Variable]]c                ~   t          | t                     t          | j        t                    | _        t                      }| j        dk    r4t          | j                  }| j        dt          |          fS d| _	        n.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 t3          d | j        pg D                       rt+          |          }d	}|rt7          | |          \  }}ng }|D ]\  }}t%          |||          }| j        r"t9          t;          | j        j         |          }| j        r0t?          |tA          tC          | j                                      }| j        s9tE          |          D ]}	|t          |	j#                  z  }t          |          }
nt                      }t                      }
| j        D ]}}|j        r||
vr|
                    |j                   (|j$        r@||
vr|
                    |j$                   |                    |j        |j$        f           otK          d          |D ]\  }}t%          |||          }| j        r$tM          |d | j        j        D                       }tO          ||
          }| 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   DescribeQueryNDISTINCTrU   FGroupAsr*   Tr9  c              3  \   K   | ]'}|j         	t          |j        t          d           V  (dS )Fr9  N)r  r   r%   r  r   s     r,   ro   ztranslate.<locals>.<genexpr>  sO       
 
v
QV]U;;;
 
 
 
 
 
r-   r1   rK   r6   zI expected a var or evar here!c                F    g | ]}t          d |j        |j                  S )OrderCondition)r%   order)r   r%   rM  )rj   r   s     r,   rl   ztranslate.<locals>.<listcomp>  s<        *qwGGG  r-   DistinctREDUCEDReducedr   Slice)r$   startlength)r$   rR  ),r   r4  r   wherer   r   r   rM   r   modifierr;  r<  r  r   groupby	conditionri   r   rO   r%   r   r^   r=  r  r>  anyr  r@  rJ   r   valuesClauser:   r0   r   _find_first_child_projectionsrW   r  r   r)   rZ   limitoffsetoffsettoPythonlimit)r5  VSr6  	aggregate
conditionsr   aggregateAliasesaliasrM   child_projectionrW   r?  r   r   r\  s                  r,   r   r   p  s   
 a!"""qw-888AG B 	v  
 ZZ 7?b>! $AJJ 	)+I2>>>??? 	#17++AIy 
$ 	! 	!A!Y'' AFi,?,?1afae,,Ea    AJ'''		=5999AI}u===  
 
\'R
 
 
 
 
 AJJJ	 1!Q77 ' " "
s1eS!! 	x 8ah01Q777 	~ GA*_Q^%D%DEEFFF<  
 !>a @ @ 	+ 	+#&)***BB"XXFFVV 
	B 
	BAu 	BB;;IIae$$$ BB;;IIaf%%%!&!&)**** @AAA 	  	 DAqq!QAA 	y 
 ,  
 
 	2Az *:##****AAZ9$$)q)))A} 
6=+])2244F=*1F1=3F3O3O3Q3Q  AA 'Qf555Ab5Lr-   Iterable[CompValue]c              #     K   |                                  D ]=}t          |t                    r&|j        dk    r|V  't	          |          D ]}|V  >dS )z
    Recursively find the first child instance of a Projection operation in each of
    the branches of the query execution plan/tree.
    rZ   N)rT   ri   r   r   rZ  )r6  child_oprd  s      r,   rZ  rZ    s{       HHJJ + +h	** 	+}	))(Eh(O(O + +$*****+ +r-   r   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:   rD   r   rA   N)ri   r   r   r2   rq   rA   r3   r   r   s    r,   r   r     s    !Y 6VtyE!!c!$,&7&71&<&<ttyE!!c!$,&7&71&<&<t "!&<&<Vu__)!)44AiLH  _r-   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)rQ  rN  T)ri   r   r   all)r   r  s     r,   analyserl    s[     !Y 	6VHAfI5V,,,5x== tr-   r   baseOptional[str]initNsOptional[Mapping[str, Any]]Optional[Prologue]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   rm  r   bindr   iriprefixr   )r$   rm  ro  r   r   r   rk   s          r,   translateProloguery  +  s     ::   LLNN 	  	 DAqMM!Q  @ @6VEHMMV|##MM!(H$7$7$>$>???Or-   quadsyTuple[List[Tuple[Identifier, Identifier, Identifier]], DefaultDict[str, List[Tuple[Identifier, Identifier, Identifier]]]]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{   )rA   r   r   r   quadsNotTriplesr=   )rz  
alltriplesallquadsr5  s       r,   translateQuadsr  D  s     } U]++


 	%%   7& 	7 	7Ay 7   GAI$6$66   xr-   uc                   | 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DeleteWhererz  rA   )r  r  ModifyrT  z$Unknown type of update operation: %s)	r   r  rz  deleteinsertr   rT  r   r   )r  r   r   r5  s       r,   translateUpdate1r  [  s	   v444	
*	*	*	
>	>	>ag&&1'
)6222	
8		8 	T5CAHN5S5S2AHY'!28 	T5CAHN5S5S2AHY'!2/88'

>BCCCAJHr-   r   c                   g }d}| j         s|S t          | j        | j                   D ]\  }}t          ||||          }t	          |t          j        t          |                    }t          |t                    }t	          |t                    }|                    t          ||                     t          ||          S )z=
    Returns a list of SPARQL Update Algebra expressions
    Nr   r   )requestr)  r   ry  r   r;  r<  r   r   r4  r   r   r  r   )r5  rm  ro  rQ   r   r$   r  s          r,   translateUpdater  s  s     CH9 
AJ	** 	2 	21$Qfh?? Q)"3NX"V"V"VWWWa)**Q-000

#Ax001111 (C   r-   r   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   r  r   ConstructQueryN)r$   templatedatasetClause)r$   r  rW   )r   )ry  r   r;  r<  r   r   r  r   r  rA   r   r   r  rl  r+  r   )	r5  rm  ro  r   PrW   r  r  rQ   s	            r,   translateQueryr    s!    !1tV44H 	!	).8LLL  AaD adOOEAraD&Mty$$$-.qT]D71Q4=)))!	QWWW!	QmKKK
3(
+
+
+Cg&&&&h3r-   c                      e Zd ZdS )ExpressionNotCoveredExceptionN)r   r   r   rh   r-   r,   r  r    s        Dr-   r  c                  @    e Zd ZdZddZ	 	 	 dddZddZd ZddZdS )_AlgebraTranslatora  Translator of a Query's algebra to its equivalent SPARQL (string).

    Coded as a class to support storage of state during the translation process,
    without use of a file.

    Anticipated Usage:

    ```python
    translated_query = _AlgebraTranslator(query).translateAlgebra()
    ```

    An external convenience function which wraps the above call,
    `translateAlgebra`, is supplied, so this class does not need to be
    referenced by client code at all in normal use.
    query_algebrar   c                ^    || _         t          j        t                    | _        d| _        d S )Nrs  )r  r   r   r   	aggr_vars_alg_translation)r   r  s     r,   r   z_AlgebraTranslator.__init__  s/    *#D)) 	 &(r-   Nr   oldrx   newsearch_from_matchsearch_from_match_occurrencer   countc                    d }|rS|rQ || j         ||          }| j         d |         }| j         |d                              |||          }	||	z   | _         d S | j                             |||          | _         d S )Nc                    |                                                      |          }|dk    rO|dk    rI|                                                      ||t          |          z             }|dz  }|dk    r|dk    I|S )Nr   r   )lowerfindrq   )haystackneedler   rR  s       r,   find_nthz-_AlgebraTranslator._replace.<locals>.find_nth  s}    NN$$))&11E1**Q ((--fec&kk6IJJQ 1**Q Lr-   )r  replace)
r   r  r  r  r  r  r  positionfiledata_prefiledata_posts
             r,   _replacez_AlgebraTranslator._replace  s    	 	 	  	S!= 	Sx%'8:V H  0(;L 1())<DDS#uUUM$0=$@D!!!$($9$A$A#sE$R$RD!!!r-   node_arg.typing.Union[Identifier, CompValue, Expr, str]r'   c                   t          |t                    rc|| j                                        v r4| j        |                             d                                          }|S |                                S t          |t                    rd|j        z   dz   S t          |t                    r|S t          d
                    |                    )Nr   {},The expression {0} might not be covered yet.)ri   r    r  keysr   n3r   r   rx   r  format)r   r  grp_vars      r,   convert_node_argz#_AlgebraTranslator.convert_node_arg  s     h
++ 	4>..0000.266q99<<>>{{}}$),, 	&,,#&& 	O/>EEhOO  r-   c                @    t          |t                    r|j        dk    rd|j        j        z   dz    _        dBS |j        dk    rd                    d |j        D                       }                     d|                                dd	d
                                ddd
                                ddd
           dBS |j        dk    r8                     dd|j        j        z   dz   |j	        j        z   dz              dBS |j        dk    r8                     dd|j        j        z   dz   |j	        j        z   dz              dBS |j        dk    rt          |j
        t                    r|j
        j        }nt          d          |j        r|j        j        dk    rD                     dd|j        j        z   dz                                   dd|z   dz              dBS                      dd|z   dz   |j        j        z   dz              dBS                      dd|z   dz              dBS |j        dk    r8                     dd |j        j        z   d!z   |j	        j        z   dz              dBS |j        d"k    rGd#|j                                        z   d$z   |j        j        z   dz   }                     d%|           dBS |j        d&k    r j                                        }|                    d'          }                     |j                                        d(                     |j
                  z   d)z   |j                                        z   d*z   d'|+                                d,d|j        j        z   dz              dBS |j        d-k    r:d|j        j        z   d.z   |j	        j        z   dz   }                     d/|           dBS |j        d0k    rg }|j
        r|j
        D ]M}t          |t$                    r(|                    |                                           ?t          d                               d1d|j        j        z   dz                                   dd2d3                    |          z   d3z              dBS                      d1d|j        j        z   dz              dBS |j        dk    rӉ                     d4d|j        j        z   dz              |j        D ]}t          |j        t$                    r|j                                        }	nt          d           j        |j                                     |j                   |j                            d5          d6         }
d}|j        r
|j        d3z   }|
d7k    rT                     |	d8|z   |j                                        z   d9z   |j                                        z   d*z              nL                     |	|
                                d(z   |z                        |j                  z   d*z                                   d:                                         |j                                                 |j                             dBS |j        d;k    r<                     d;d3                     fd<|j        D                                  dBS |j        d=k    r:                     d>d                    d? |j        D                                  dBS |j        d@k    rt          d          |j        dAk    rg }|j
        D ]s}t          |j
        t$                    rI|j
                                        }|j        |j        d(z   |z   d*z   }n|}|                    |           et          d                               dCd|j        j        z   dz                                   dDd3                    |          d3z              dBS |j        dEk    rg }|j        D ]M}t          |t$                    r(|                    |                                           ?t          d          d}|j        j        dAk    rdF}                     dGd3                    |          d z   |j        j        z   dz   dz   |z   dz              dBS |j        dHk    r(                     dIdJ|j        j        z   dz              dBS |j        dKk    r(                     dLdM|j        j        z   dz              dBS |j        dNk    rZdOtA          |j!                  z   dPz   tA          |j"                  z   }                     dQd|j        j        z   dz   |z              dBS |j        dRk    rc|j        j        dSk    r(                     dTd |j        j        z   dz              dBS                      dTdU|j        j        z   dz   dz              dBS |j        dVk    r                     |j
                  }|j#        }t          tH          tK          |j&                            r-d(dW                     fdX|j&        D                       z   d*z   }n                     |j&                  }dY                    |||Z          }                     d[|           dBS |j        d\k    r\d]                     fd^|j&        D                       }                     d_                     |j
                  d]z   |z              dBS |j        d`k    rbda                     fdb|j&        D                       }                     dcd(                     |j
                  z   daz   |z   d*z              dBS |j        ddk    rz                     |j
                  }|}tO          |j#                  D ]1\  }}||d3z                        |j&        |                   z   d3z   z  }2                     de|           dBS |j        dfk    rz                     |j
                  }|}tO          |j#                  D ]1\  }}||d3z                        |j&        |                   z   d3z   z  }2                     dg|           dBS |j        dhk    r3                     didj                     |j
                  z              dBS |j        (                    dk          r8                     |j)                  }                     dldm|z   d*z              dBS |j        (                    dn          rj                     |j*                  }                     |j+                  }do|j,        j        z   dpz   |z   dWz   |z   d*z   }                     dq|           dBS |j        (                    dr          rB                     dsdtdW                     fdu|j)        D                       z   d*z              dBS |j        (                    dv          rH                     dwdx|j-        j        z   dz              t]          |j-         j/        y           |j-        S |j        (                    dz          rH                     d{d||j-        j        z   dz              t]          |j-         j/        y           |j-        S |j        (                    d}          rT                     d~d                     |j,                  z   dWz                        |j*                  z   d*z              dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          rT                     dd                     |j,                  z   dWz                        |j*                  z   d*z              dBS |j        (                    d          rT                     dd                     |j,                  z   dWz                        |j*                  z   d*z              dBS |j        (                    d          r                     dd           dBS |j        (                    d          r                     dd           dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          ru                     |j)                  |j!        g}|j"        r|                    |j"                   ddW                    |          z   d*z   }                     d|           dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          r6                     dd                     |j)                  z   d*z              dBS |j        (                    d          rT                     dd                     |j,                  z   dWz                        |j*                  z   d*z              dBS |j        (                    d          rT                     dd                     |j,                  z   dWz                        |j*                  z   d*z              dBS |j        (                    d          rT                     dd                     |j,                  z   dWz                        |j*                  z   d*z              dBS |j        (                    d          rT                     dd                     |j,                  z   dWz                        |j*                  z   d*z              dBS |j        (                    d          rT                     dd                     |j,                  z   dWz                        |j*                  z   d*z              dBS |j        (                    d¦          r6                     ddĉ                     |j)                  z   d*z              dBS |j        (                    dŦ          rRdƠ                    dW                     fdǄ|j)        D                       Ȧ          }                     d|           dBS |j        (                    dʦ          rT                     dd̉                     |j,                  z   dWz                        |j*                  z   d*z              dBS |j        (                    dͦ          rg                     |j0                                       |j1                  g}ddW                    |          z   d*z   }                     d|           dBS |j        (                    dЦ          rr                     dd҉                     |j)                  z   dWz                        |j1                  z   dWz                        |j2                  z   d*z              dBS |j        dk    r6                     ddՉ                     |j)                  z   d*z              dBS |j        dk    r6                     dd؉                     |j)                  z   d*z              dBS |j        dk    r6                     ddۉ                     |j)                  z   d*z              dBS |j        dk    r6                     ddމ                     |j)                  z   d*z              dBS |j        dk    r                     dd           dBS |j        dk    r                     dd           dBS |j        dk    r6                     dd                     |j)                  z   d*z              dBS |j        dk    r6                     dd                     |j)                  z   d*z              dBS |j        dk    r6                     dd                     |j)                  z   d*z              dBS |j        dk    r6                     dd                     |j)                  z   d*z              dBS |j        dk    r6                     dd                     |j)                  z   d*z              dBS |j        dk    r6                     dd                     |j)                  z   d*z              dBS |j        dk    r6                     dd                     |j)                  z   d*z              dBS |j        dk    r6                     dd                     |j)                  z   d*z              dBS |j        dk    r6                     dd                     |j)                  z   d*z              dBS |j        d k    r8                     dd                     |j)                  z   d*z              dBS |j        dk    r8                     dd                     |j)                  z   d*z              dBS |j        dk    r8                     dd                     |j)                  z   d*z              dBS |j        d	k    r8                     d
d                     |j)                  z   d*z              dBS |j        dSk    rg } |j        d         3                                D ]a}!t          |!t$                    r(|                     |!                                           ?t          d                    |!                    dd3                    |           z   d*z   }"d}#|j        D ]}$g }%|$4                                D ]}&t          |&t$                    r(|%                    |&                                           ?t          |&t@                    r|%                    |&           jt          d                    |&                    |#d(d3                    |%          z   d*z   z  }#ĉ                     dS|"dz   |#z   dz              dBS |j        dk    rj                     dd                     |j                  z   dz   |j-        j        z   dz              t]          |j-         j/        y           |j-        S dBS dBS (  z4<https://www.w3.org/TR/sparql11-query/#sparqlSyntax>SelectQueryz-*-SELECT-*- {r  rD   rs  c              3     K   | ]]}|d                                           dz   |d                                          z   dz   |d                                          z   dz   V  ^dS r    r   rp   .Nr  rj   r_   s     r,   ro   z7_AlgebraTranslator.sparql_query_text.<locals>.<genexpr>  st       " " 1ILLNNS(6!9<<>>9C?&),,..PSVV" " " " " "r-   z{BGP}z-*-SELECT-*-SELECTr   )r  z	{GroupBy}z{Having}r:   z{Join}r  z}{rG   z
{LeftJoin}z}OPTIONAL{{z}}rJ   z)This expression might not be covered yet.r:  z{Filter}zHAVING({z})zFILTER({z}) {r5   z{Union}z{{z	}}UNION{{r@   zGRAPH z {{z{Graph}rO   z-*-select-*-(z as ))r  r  z{Extend}r<   z}MINUS{{z{Minus}r^   z{Group}z	GROUP BY r  z{AggregateJoin}_r   GroupConcatzGROUP_CONCAT(z;SEPARATOR=z(SAMPLE({0}) as {0})GroupGraphPatternSubc                :    g | ]}                     |          S rh   r  )rj   patternr   s     r,   rl   z8_AlgebraTranslator.sparql_query_text.<locals>.<listcomp>  s'    VVVd33G<<VVVr-   r   z{TriplesBlock}c              3     K   | ]]}|d                                           dz   |d                                          z   dz   |d                                          z   dz   V  ^dS r  r  r  s     r,   ro   z7_AlgebraTranslator.sparql_query_text.<locals>.<genexpr>  s         # q	 ),,..)  !),,..	)
      r-   ToListr)   Nz	{OrderBy}z{OrderConditions}rZ   zORDER BY {OrderConditions}z	{Project}rN  z
{Distinct}z
DISTINCT {rP  z	{Reduced}z	REDUCED {rQ  zOFFSET z LIMIT z{Slice}r0   rT   z{ToMultiSet}z{-*-SELECT-*- {r"  z, c              3  B   K   | ]}                     |          V  d S r{   r  rj   r%   r   s     r,   ro   z7_AlgebraTranslator.sparql_query_text.<locals>.<genexpr>  s1      #W#WDD$9$9$$?$?#W#W#W#W#W#Wr-   z{left} {operator} {right})leftr'  rightz{RelationalExpression}ConditionalAndExpressionz && c                :    g | ]}                     |          S rh   r  r  s     r,   rl   z8_AlgebraTranslator.sparql_query_text.<locals>.<listcomp>  '    HHHTT**400HHHr-   z{ConditionalAndExpression}ConditionalOrExpressionz || c                :    g | ]}                     |          S rh   r  r  s     r,   rl   z8_AlgebraTranslator.sparql_query_text.<locals>.<listcomp>  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  B   K   | ]}                     |          V  d S r{   r  )rj   argr   s     r,   ro   z7_AlgebraTranslator.sparql_query_text.<locals>.<genexpr>  s1      OOs 5 5c : :OOOOOOr-   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  B   K   | ]}                     |          V  d S r{   r  )rj   elemr   s     r,   ro   z7_AlgebraTranslator.sparql_query_text.<locals>.<genexpr>  s1      "T"T44#8#8#>#>"T"T"T"T"T"Tr-   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 )5ri   r   r   r$   r  joinrA   r  r2   r3   r%   r  r=   r  r  r  rM   r  r    r   r   rQ   r  r0  splitdistinct	separatorupperr  r   rM  rW   rx   rR  rS  opr   r   other	enumerateendswithr  arg2arg3arg1r>   r   sparql_query_texttextr  replacementr  rT   )'r   noderA   r%   query_stringselect_occurrencesgroup_by_varsrM   agg_func
identifieragg_func_namer  order_conditionsr   condproject_variablesorder_by_patternslicer  r  rW  inner_nodes	left_sidemultiplicationr   r'  addition	bound_varr  r   if_expressionargscolumnskeyrT   rowsr  rowr=   s'   `                                      r,   r"  z$_AlgebraTranslator.sparql_query_text  s$    dI&& d		"yM))(=(Kc(Q%%% e## '' " ""&," " "   gw/// nhbAAA k2R888j"B77777f$$cDGL047$',FL     j(( $',&6EL     h&&di33 9>DD7C   6 
Hv{o55j#2Cc2IJJJj*t2Cd2JKKKKK&
T(9F(BTV[(PSV(V     MM*j4.?$.FGGGGGg%%tdgl2[@47<ORVV     g%%$),,..05846;FMi.....h&&#4::<<%1%7%7%G%G"HKKMM++DI667 hkkmm$ 	
 '51C  	 	 	 j#*;c*ABBBBBg%%TW\)J6ELi.....g%% "9 F#y  %c:66 )00::::"? K# #  MM)S46;->-DEEEMM#[388M3J3J%JS%P     MM)S46;->-DEEEEEo--/tv{1BS1HIII $ * *H!(,
;; %-\__%6%6

;G   N8<077FFF$,M$7$7$<$<Q$?M!H( ;#+#4s#:$55&"&' 'm..001 ,	,
 '033556 ""	 	 	 	 &)//11!"&' #33HMBBC "	"   MM.55 11(-@@  --hm<<	   K* *V 444*HHVVVVDIVVVWW     n,,$GG   '+l         h&&3?   i''#%   A!!&*55 
fiikk7.#$7S=3#6#<DD#&D(//5555;G   k3+<s+BCCC1388<L3M3MPS3STTTTTi''$&!7  C!#z22 )00::::;G   $& 6;)++'C$HH.//fk"  "	"
 '' !!	 	 	 	 	 j((lL46;,F,LMMMMMi''k;+Ds+JKKKKKg%%!C
OO3i?#dkBRBRRitv{):S)@5)HIIIIIl**6;(**MM.$2Dt2KLLLLLMM&(>(Ls(RUX(X     444,,TY77WdD$4$455 >))#W#W#W#WDJ#W#W#WWWX E !11$*==E7>>% ?  	 6	BBBBB888$kkHHHHTZHHH  0))$)44v=K     777$kkHHHHTZHHH  /$//	:::VCkQTWW     888 11$)<<	!*#,TW#5#5  KAx" 3)>)>tz!})M)MMPSSNN :NKKKKK222 11$)<<	$#,TW#5#5  KAx 3)>)>tz!})M)MMPSSHH 4h?????j((lC$2G2G	2R2R,RSSSSS ##G,, Y" 11$(;;	/I1E1KLLLLL##D)) V",,TY77,,TY77  $).0584?$FMPSS  nm<<<<<##J// N"(iiOOOOdhOOOOOP     ##$455 G"
 &(84:?(JT(Q   d.DEEEEz!##$788 }"
 )+?$*/+QTX+X   d.DEEEEz! ##J// p"(++DI667 ++DI667 	     ##O44 c"%x$2G2G2Q2Q'QTW'W     ##$566 _"'!6!6tx!@!@@3F     ##$788 Z") 4#8#8#B#BBSH     ##$788 U") 4#8#8#B#BBSH     ##M22 P"#Vd.C.CDH.M.M%MPS%S     ##N33 L"$g0E0Edh0O0O&ORU&U     ##$677 H"($"7"7"A"AACG     ##M22 C"#Vd.C.CDH.M.M%MPS%S     ##O44 "%x$2G2G2Q2Q'QTW'W     ##G,, {"%++DI667 ++DI667 	     ##$566 r"'++DI667 ++DI667 	     ##N33 i".99999##$566 g"1;????? ##$455 c"& 5 5dh ? ??#E     ##$455 ^"--dh77D; -KK,,, 499T??2S80$77777##O44 X"%x$2G2G2Q2Q'QTW'W     ##O44 T"%x$2G2G2Q2Q'QTW'W     ##$788 P") ++DI667 ++DI667 	     ##$566 G"'++DI667 ++DI667 	     ##$677 ~"(++DI667 ++DI667 	     ##$788 u") ++DI667 ++DI667 	     ##$677 l"(++DI667 ++DI667 	     ##$<== c".%(=(=dh(G(GG#M     ##$455 ^"'.."T"T"T"T48"T"T"TTT /   0$77777##$9:: Y"+"++DI667 ++DI667 	     ##G,, P"))$)44))$,77  $))D//1C7/66666##I.. I"'++DH556 ++DL99: 	
 ++D,<==> 	 	 	 	 	 m++#Vd.C.CDH.M.M%MPS%S     o--%x$2G2G2Q2Q'QTW'W     n,,$g0E0Edh0O0O&ORU&U     o--%x$2G2G2Q2Q'QTW'W     n,,.99999 m++ow77777n,,$g0E0Edh0O0O&ORU&U     o--%x$2G2G2Q2Q'QTW'W     m++#Vd.C.CDH.M.M%MPS%S     o--%x$2G2G2Q2Q'QTW'W     ///'!6!6tx!@!@@3F     ///'!6!6tx!@!@@3F     000($"7"7"A"AACG     l**"ED,A,A$(,K,K$Kc$Q    
 m++#Vd.C.CDH.M.M%MPS%S     n,,$g0E0Edh0O0O&ORU&U     ...& 5 5dh ? ??#E     ...& 5 5dh ? ??#E     ...& 5 5dh ? ??#E     h&&8A;++--  C!#z22 svvxx0000;JQQRUVV   $chhw&7&77#= H 6 6DC $  %dJ77 JJ $		    (c22 JJt,,,,"? N U U$(!" !"# # 
 C#((3--/#55DDht(;c(ABBBBB333+++DI667 jo& 	   d.DEEEEz!Id		" d		"t 43r-   c                P    t          | j        j        | j                   | j        S )Nr  )r   r  algebrar"  r  )r   s    r,   translateAlgebraz#_AlgebraTranslator.translateAlgebraf  s'    #+d6LMMMM$$r-   )r  r   )NNr   )
r  rx   r  rx   r  rx   r  r   r  r   )r  r  r'   rx   )r'   rx   )	r   r   r   __doc__r   r  r  r"  r>  rh   r-   r,   r  r    s          ( ( ( ( "&,0S S S S S2   $g	" g	" g	"V% % % % % %r-   r  r  rx   c                J    t          |                                           }|S )a  
    Translates a SPARQL 1.1 algebra tree into the corresponding query string.

    Args:
        query_algebra: An algebra returned by `translateQuery`.

    Returns:
        The query form generated from the SPARQL 1.1 algebra tree for
            SELECT queries.
    )r  )r  r>  )r  query_from_algebras     r,   r>  r>  k  s2     ,#    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  )endrC  z%s))ri   r   printr   )r$   indr   pps      r,   rH  zpprintAlgebra.<locals>.pp}  s     !Y'' 	!HHHFqvvv    		# 		#A CAA
     BqtS6\""""eckr-   )rC  )r=  AttributeError)r5  rk   rH  s     @r,   pprintAlgebrarJ  |  s         ,
19    	 	ABqEEEE	 	 	s    99)r$   r   r%   r&   r'   r   )r$   r.   r'   r   )r2   r   r3   r   r'   r   )r2   r   r3   r8   r'   r   )r=   r    r>   r   r'   r   r{   )rA   rB   r'   r   )r%   r   r$   r   r'   r   )r$   r   r%   rL   rM   r#   r'   r   )rQ   rR   r'   r   )r$   r   rW   rX   r'   r   )r$   r   r%   r\   r'   r   )r_   r`   ra   rb   rc   rd   r'   re   )rt   ru   r'   rv   )r   r   r'   rv   )r$   r   r   r   r'   r   )r$   r"   r'   r   )r$   r   r'   r   )r$   r   r'   r   )r   r   r'   r   )r   r&   r'   r   )r   r   r'   r8   )r   r   r'   r   )r   r   r   r   r   r   )r   r   r   r  )r   r   r   r   r  r  r'   r   )r'   r   )r'   r  )rQ   r  r'   r8   )r  r   r'   r  )r   r,  r   r  r'   r8   )r   r   r'   r   )r5  r   r6  r   r'   r7  )r   r   r'   r.   )r5  r   r'   rE  )r6  r   r'   re  )r   r   r'   r8   )r   r   r  r   r'   r   )NN)
r$   r   rm  rn  ro  rp  r   rq  r'   r   )rz  r   r'   r{  )r  r   r   r   r'   r   )r5  r   rm  rn  ro  rp  r'   r   )r5  r   rm  rn  ro  rp  r'   r   )r  r   r'   rx   )_r?  
__future__r   r   r;  r'  typingr   r   r   r   r   r	   r
   r   r   r   r   r   	pyparsingr   rdflib.pathsr   r   r   r   r   r   rdflib.plugins.sparql.operatorsr   r   r   r3  !rdflib.plugins.sparql.parserutilsr   r   rdflib.plugins.sparql.sparqlr   r   r   rdflib.termr   r    r!   r"   r#   r)   r0   r5   r:   r<   r@   rD   rG   rJ   rO   rV   rZ   r^   rs   r   rA   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r  r  r+  r1  r4  r@  r   r   rZ  rl  ry  r  r  r  r  r  r  r>  rJ  rh   r-   r,   <module>rS     s    # " " " " "                                          # " " " " "                = < < < < < < < G G G G G G = = = = = = = = @ @ @ @ @ @ @ @ @ @ E D D D D D D D D D D D D D0 0 0 0( ( ( (, , , ,+ + + +, , , ,2 2 2 2
 JN3 3 3 3 3: : : :/ / / /8 8 8 8( ( ( (, , , ,. . . . .   $. . . .bW W W W& & & &( 
 ) ) ) 
 ) 
 , , , 
 ,*+ *+ *+ *+Z   *   2	 	 	 	T T T T5 5 5 5E E E EP    I    &4^&4n    @ ?P>O     * &4^&4n#	    *& & & &       "1 1 1 1D5 5 5 5 5" " " "
!3 !3 !3 !3H   *H H H HV+ + + + 
 
 
 
   , +/#'	    2       .   4 *.! ! ! ! !> *.!  !  !  !  ! H	 	 	 	 	I 	 	 	p
% p
% p
% p
% p
% p
% p
% p
%f   "     r-   