
    Pi=                       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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Zd dlmZmZmZ d dlmZ d dlmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z% e
rd d	l&m'Z'  ed
          Z( G d de)          Z* G d de*          Z+ G d de*          Z, G d de*          Z- G d de	          Z. G d de          Z/ G d de/          Z0 G d d          Z1 G d d          Z2 G d d          Z3 G d d           Z4dS )!    )annotationsN)MappingMutableMapping)TYPE_CHECKINGAny	ContainerDict	GeneratorIterableListOptionalTupleTypeVarUnion)ConjunctiveGraphDatasetGraph)NamespaceManager)	CompValue)BNode
IdentifierLiteralNodeURIRefVariable)Path_AnyTc                      e Zd ZdddZdS )SPARQLErrorNmsgOptional[str]c                <    t                               | |           d S N)	Exception__init__selfr    s     p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/sparql/sparql.pyr%   zSPARQLError.__init__$   s    4%%%%%    r#   r    r!   __name__
__module____qualname__r%    r)   r(   r   r   #   s-        & & & & & & &r)   r   c                      e Zd ZdddZdS )NotBoundErrorNr    r!   c                <    t                               | |           d S r#   r   r%   r&   s     r(   r%   zNotBoundError.__init__)       T3'''''r)   r#   r*   r+   r/   r)   r(   r1   r1   (   s-        ( ( ( ( ( ( (r)   r1   c                      e Zd ZdZd ZdS )AlreadyBoundz<Raised when trying to bind a variable that is already bound!c                :    t                               |            d S r#   r3   r'   s    r(   r%   zAlreadyBound.__init__0   s    T"""""r)   Nr,   r-   r.   __doc__r%   r/   r)   r(   r6   r6   -   s)        FF# # # # #r)   r6   c                      e Zd ZddZdS )SPARQLTypeErrorr    r!   c                <    t                               | |           d S r#   r3   r&   s     r(   r%   zSPARQLTypeError.__init__5   r4   r)   Nr*   r+   r/   r)   r(   r<   r<   4   s(        ( ( ( ( ( (r)   r<   c                  `    e Zd ZdZdg fddZdd	ZddZddZddZddZ	ddZ
ddZddZdS )Bindingsz

    A single level of a stack of variable-value bindings.
    Each dict keeps a reference to the dict below it,
    any failed lookup is propegated back

    In python 3.3 this could be a collections.ChainMap
    NouterOptional[Bindings]c                <    t          |          | _        || _        d S r#   )dict_dr@   )r'   r@   ds      r(   r%   zBindings.__init__C   s    "&q''


r)   keystrreturnc                r    || j         v r| j         |         S | j        st                      | j        |         S r#   )rD   r@   KeyErrorr'   rF   s     r(   __getitem__zBindings.__getitem__G   s9    $'>>73<z 	**z#r)   r   boolc                :    	 | |          dS # t           $ r Y dS w xY w)NTFrJ   rK   s     r(   __contains__zBindings.__contains__O   s7    	II4 	 	 	55	s    
valueNonec                    || j         |<   d S r#   rD   r'   rF   rQ   s      r(   __setitem__zBindings.__setitem__V   s    r)   c                     t          d          )NzDelItem is not implemented!)r$   rK   s     r(   __delitem__zBindings.__delitem__Y   s    5666r)   intc                R    d}| }| |t          |j                  z  }|j        }| |S Nr   )lenrD   r@   )r'   irE   s      r(   __len__zBindings.__len__\   s7     $mQTNAA m r)   Generator[str, None, None]c              #  B   K   | }||j         E d {V  |j        }|d S d S r#   )rD   r@   )r'   rE   s     r(   __iter__zBindings.__iter__d   s9       $mtOOOOOOOA mmmmmr)   c                R     dd                      fd D                       z   dz   S )Nz
Bindings({z, c              3  ,   K   | ]}||         fV  d S r#   r/   ).0kr'   s     r(   	<genexpr>z#Bindings.__str__.<locals>.<genexpr>l   s+      'C'CDG'C'C'C'C'C'Cr)   z}))joinr8   s   `r(   __str__zBindings.__str__j   s4    dii'C'C'C'Cd'C'C'CCCCdJJr)   c                     t          |           S r#   )rG   r8   s    r(   __repr__zBindings.__repr__n   s    4yyr)   )r@   rA   )rF   rG   rH   rG   )rF   r   rH   rM   )rF   rG   rQ   r   rH   rR   )rF   rG   rH   rR   rH   rY   )rH   r_   rH   rG   )r,   r-   r.   r:   r%   rL   rP   rV   rX   r^   ra   rh   rj   r/   r)   r(   r?   r?   9   s          482              7 7 7 7      K K K K     r)   r?   c                  h    e Zd ZdZddZd Zdd	ZddZddZddZ	ddZ
ddZd dZd!dZd!dZdS )"
FrozenDictz^
    An immutable hashable dict

    Taken from http://stackoverflow.com/a/2704866/81121

    argsr   kwargsc                6    t          |i || _        d | _        d S r#   )rC   rD   _hash)r'   ro   rp   s      r(   r%   zFrozenDict.__init__z   s!    04d0Ef0E0E$(


r)   c                *    t          | j                  S r#   )iterrD   r8   s    r(   ra   zFrozenDict.__iter__~       DG}}r)   rH   rY   c                *    t          | j                  S r#   )r\   rD   r8   s    r(   r^   zFrozenDict.__len__       47||r)   rF   r   c                    | j         |         S r#   rT   rK   s     r(   rL   zFrozenDict.__getitem__   s    ws|r)   c                    | j         [d| _         |                                 D ]?\  }}| xj         t          |          z  c_         | xj         t          |          z  c_         @| j         S r[   )rr   itemshashrU   s      r(   __hash__zFrozenDict.__hash__   sd     :DJ"jjll * *
U

d3ii'



d5kk)


zr)   varsContainer[Variable]c                ^    t          fd|                                 D                       S )Nc              3  0   K   | ]}|d          v |V  dS r   Nr/   rd   xr}   s     r(   rf   z%FrozenDict.project.<locals>.<genexpr>   s+      BBQqTT\\!\\\\BBr)   )rn   rz   r'   r}   s    `r(   projectzFrozenDict.project   s.    BBBBTZZ\\BBBBBBr)   other!t.Mapping[Identifier, Identifier]rM   c                b    t          t          |                               |                     S r#   )rM   setintersection)r'   r   s     r(   disjointDomainzFrozenDict.disjointDomain   s'    D		..u556666r)   c                \    | D ](}	 | |         ||         k    r dS # t           $ r Y %w xY wdS )NFTrO   )r'   r   re   s      r(   
compatiblezFrozenDict.compatible   s\     	 	A7eAh&& 55 '    ts   
))c                    t          t          j        |                                 |                                                    }|S r#   )rn   	itertoolschainrz   r'   r   ress      r(   mergezFrozenDict.merge   s0    u{{}}EEFF
r)   rG   c                *    t          | j                  S r#   )rG   rD   r8   s    r(   rh   zFrozenDict.__str__   rw   r)   c                *    t          | j                  S r#   )reprrD   r8   s    r(   rj   zFrozenDict.__repr__   ru   r)   N)ro   r   rp   r   rk   )rF   r   rH   r   )r}   r~   rH   rn   )r   r   rH   rM   )r   r   rH   rn   rl   )r,   r-   r.   r:   r%   ra   r^   rL   r|   r   r   r   r   rh   rj   r/   r)   r(   rn   rn   r   s         ) ) ) )           C C C C7 7 7 7      
        r)   rn   c                      e Zd ZddZddZddZddZedd            Zed d            Z	ed!d            Z
	 d"d#dZd$dZdS )%FrozenBindingsctxQueryContextc                >    t          j        | g|R i | || _        d S r#   )rn   r%   r   )r'   r   ro   rp   s       r(   r%   zFrozenBindings.__init__   s.    D242226222r)   rF   Union[Identifier, str]rH   r   c                    t          |t                    st          |          }t          |t          t          f          s|S || j        vr| j        j        |         S | j        |         S r#   )
isinstancer   r   r   rD   r   initBindingsrK   s     r(   rL   zFrozenBindings.__getitem__   sf    #t$$ 	 3--C#x011 	Jdg 8(--73<r)   r}   r~   c                j    t          | j        fd|                                 D                       S )Nc              3  0   K   | ]}|d          v |V  dS r   r/   r   s     r(   rf   z)FrozenBindings.project.<locals>.<genexpr>   s+      (Q(QqAaDDLLLLLL(Q(Qr)   r   r   rz   r   s    `r(   r   zFrozenBindings.project   s2    dh(Q(Q(Q(QDJJLL(Q(Q(QRRRr)   r   r   c                    t          | j        t          j        |                                 |                                                    }|S r#   )r   r   r   r   rz   r   s      r(   r   zFrozenBindings.merge   s4    TXytzz||U[[]]'S'STT
r)   datetime.datetimec                    | j         j        S r#   )r   nowr8   s    r(   r   zFrozenBindings.now   s    x|r)   t.Mapping[Identifier, BNode]c                    | j         j        S r#   )r   bnodesr8   s    r(   r   zFrozenBindings.bnodes   s    xr)   Optional[Prologue]c                    | j         j        S r#   )r   prologuer8   s    r(   r   zFrozenBindings.prologue   s    x  r)   Nbefore_exceptOptional[Container[Variable]]c                z     sg t           j         fd                                 D                       S )zY
        return a frozen dict only of bindings made in self
        since before
        c              3  t   K   | ]2}|d          v s"|d          j         j        v s|d                   .|V  3dS r   )r   r   )rd   r   r   r   r'   s     r(   rf   z(FrozenBindings.forget.<locals>.<genexpr>   s`       	 	aDGOOttx444ad|+  ,+++	 	r)   r   )r'   r   r   s   ```r(   forgetzFrozenBindings.forget   se      	G H	 	 	 	 	 		 	 	
 
 	
r)   c                j    t          | j        fd|                                 D                       S )z@
        return a frozen dict only of bindings in these
        c              3  0   K   | ]}|d          v |V  dS r   r/   )rd   r   theses     r(   rf   z*FrozenBindings.remember.<locals>.<genexpr>   s+      (R(RqAaDEMMMMMM(R(Rr)   r   )r'   r   s    `r(   rememberzFrozenBindings.remember   s4     dh(R(R(R(RDJJLL(R(R(RSSSr)   )r   r   )rF   r   rH   r   )r}   r~   rH   r   )r   r   rH   r   rH   r   )rH   r   )rH   r   r#   )r   r   r   r   rH   r   )rH   r   )r,   r-   r.   r%   rL   r   r   propertyr   r   r   r   r   r/   r)   r(   r   r      s                 S S S S       X    X ! ! ! X! NR
 
 
 
 
2T T T T T Tr)   r   c                      e Zd ZdZ	 	 	 	 d.d/d	Zed0d            Z	 d1d2dZed3d            Z	 	 d4d5dZ	d6dZ
d1d7d"Zd1d8d&Zd9d(Zd:d)Zd;d*Zd;d+Zd<d-ZdS )=r   z@
    Query context - passed along when evaluating the query
    NgraphOptional[Graph]bindings4Optional[Union[Bindings, FrozenBindings, List[Any]]]r   "Optional[Mapping[str, Identifier]]c                l   || _         t          |pg           | _        |r| j                            |           |  |  t	          |t
          t          f          r|rt                      | _        t                      | _	        |D ]}|j
        rI|                    |j
                  }| xj	        |z  c_	        |s|                     |j
        d           R|j        r]t          | j        j        |j                  }|                    |j                  }||z  }|s|                     |j        d           nJ|| _        t           j        j        j        r| j        | _	        n | j        j        | _	        nd | _        || _	        d | _        d | _        t/          j        t2                    | _        d S )N)rE   T)default)store
identifierF)r   r?   r   updater   r   r   _datasetr   r   r   get_contextloadnameddatasetr   rdflibpluginssparqlSPARQL_DEFAULT_GRAPH_UNIONdefault_contextr   _nowcollectionsdefaultdictr   r   )	r'   r   r   r   datasetClauserE   
from_graphnamedGraphsfrom_named_graphss	            r(   r%   zQueryContext.__init__   s    ) 8>r222 	/M  ...#Aeg'7899 	 > '		"WW
& > >Ay >%*%6%6qy%A%A


j0

) ? IIaiI>>> >&+"&,"4' ' ' -2,=,=ag,F,F)#'880 > IIaguI===> !&>(C >!%DJJ!%!=DJJ DMDJ,015	;F;R<
 <
r)   rH   r   c                    | j         3t          j                            t          j        j                  | _         | j         S r#   )r   datetimer   timezoneutcr8   s    r(   r   zQueryContext.now,  s0    9 )--h.?.CDDDIyr)   4Optional[Union[FrozenBindings, Bindings, List[Any]]]c                    t          | j        | j        n| j        |p| j        | j                  }| j        |_        | j        |_        | j        |_        |S )N)r   )r   r   r   r   r   r   r   )r'   r   rs      r(   clonezQueryContext.clone2  s\     !]6DMMDJ%*
 
 

 ]
*;r)   r   c                <    | j         t          d          | j         S )z "current datasetNzwYou performed a query operation requiring a dataset (i.e. ConjunctiveGraph), but operating currently on a single graph.)r   r$   r8   s    r(   r   zQueryContext.dataset?  s-     = ;  
 }r)   Fsourcer   r   rM   intoOptional[Identifier]rp   r   rR   c                   fd}t           j        j        j        s.|r*| xj        | j                            |          z  c_        dS dS |r || j        |           dS ||} || j                            |          |           dS )aP  
        Load data from the source into the query context's.

        Args:
            source: The source to load from.
            default: If `True`, triples from the source will be added
                to the default graph, otherwise it will be loaded into a
                graph with `source` URI as its name.
            into: The name of the graph to load the data into. If
                `None`, the source URI will be used as as the name of the
                graph.
            **kwargs: Keyword arguments to pass to
                [`parse`][rdflib.graph.Graph.parse].
        c                ,   	  | j         |fddiS # t          $ r Y nw xY w	  | j         |fddiS # t          $ r Y nw xY w	  | j         |fddiS # t          $ r Y nw xY w	  | j         |fddiS # t          $ r t          d|z            w xY w)Nformatturtlexmln3ntz3Could not load %s as either RDF/XML, N3 or NTriples)parser$   )r   r   rp   s     r(   _loadz QueryContext.load.<locals>._load`  s(   "u{6EE(EfEEE   "u{6BB%B6BBB   "u{6AA$A&AAA   "u{6AA$A&AAA   IFR  s9    
  4 
A AA 
A"!A"&A6 6BN)r   r   r   SPARQL_LOAD_GRAPHSr   r   r   )r'   r   r   r   rp   r   s       ` r(   r   zQueryContext.loadJ  s    ,	 	 	 	 	( ~$7 	>  ?

dl66v>>>



? ?  >dj&)))))<!Ddl..t44f=====r)   rF   Union[str, Path]Optional[Union[str, Path]]c                |    t          |t          t          f          s|S 	 | j        |         S # t          $ r Y d S w xY wr#   )r   r   r   r   rJ   rK   s     r(   rL   zQueryContext.__getitem__  sR    #x011 	J	=%% 	 	 	44	s   - 
;;rG   Optional[Any]c                8    	 | |         S # t           $ r |cY S w xY wr#   rO   )r'   rF   r   s      r(   getzQueryContext.get  s5    	9 	 	 	NNN	s   
 r}   Optional[Iterable[Variable]]r   c                    r3t          | fd| j                                        D                       S t          | | j                                                  S )zO
        Return a static copy of the current variable bindings as dict
        c              3  .   K   | ]\  }}|v 	||fV  d S r#   r/   )rd   re   vr}   s      r(   rf   z(QueryContext.solution.<locals>.<genexpr>  s/      MM$!Q1991v9999MMr)   )r   r   rz   r   s    `r(   solutionzQueryContext.solution  sg      	?!MMMM$-*=*=*?*?MMM   "$(;(;(=(=>>>r)   rQ   c                j    || j         v r| j         |         |k    rt                      || j         |<   d S r#   )r   r6   rU   s      r(   rV   zQueryContext.__setitem__  s<    $-DM#$6%$?$?.. "cr)   c                <    |                                  }||_        |S r#   )r   r   )r'   r   r   s      r(   	pushGraphzQueryContext.pushGraph  s    JJLLr)   c                T    |                      t          | j                            }|S r#   )r   r?   r   )r'   r   s     r(   pushzQueryContext.push  s"    JJx..//r)   c                ,    |                      g           S r#   r   r8   s    r(   cleanzQueryContext.clean  s    zz"~~r)   frozenbindingsc                0    |                      |          }|S )zO
        Create a new read/write query context from the given solution
        r   )r'   r   cs      r(   thawzQueryContext.thaw  s     JJ~&&r)   )NNNN)r   r   r   r   r   r   r   r#   )r   r   rH   r   )rH   r   )FN)
r   r   r   rM   r   r   rp   r   rH   rR   )rF   r   rH   r   )rF   rG   r   r   rH   r   )r}   r   rH   r   )rF   rG   rQ   rG   rH   rR   )r   r   rH   r   )rH   r   )r   r   rH   r   )r,   r-   r.   r:   r%   r   r   r   r   r   rL   r   r   rV   r   r   r   r  r/   r)   r(   r   r      sr         "&IM;?/
 /
 /
 /
 /
b    X PT        X %)	6> 6> 6> 6> 6>p       	? 	? 	? 	? 	?# # # #   
           r)   r   c                  2    e Zd ZdZddZdd	ZddZddZdS )ProloguezI
    A class for holding prefixing bindings and base URI information
    rH   rR   c                T    d | _         t          t                                | _        d S r#   )baser   r   namespace_managerr8   s    r(   r%   zPrologue.__init__  s#    #'	!1%''!:!:r)   prefixr!   	localnamer   c                    | j         j                            |pd          }|t          d|z            t	          ||pdz             S )N zUnknown namespace prefix : %s)r  r   	namespacer$   r   )r'   r  r  nss       r(   resolvePNamezPrologue.resolvePName  sO    #)33FLbAA:;fDEEEbIO,---r)   urir   c                @    | j                             ||d           d S )NT)replace)r  bind)r'   r  r  s      r(   r  zPrologue.bind  s&    ##FC#>>>>>r)   iriOptional[Union[CompValue, str]]c                d   t          |t                    rk|j        dk    r |                     |j        |j                  S |j        dk    r4t          |j        |j        | 	                    |j
                            S n/t          |t                    rd|vrt          || j                  S |S )z
        Apply BASE / PREFIXes to URIs
        (and to datatypes in Literals)

        TODO: Move resolving URIs to pre-processing
        pnameliteral)langdatatype:)r  )r   r   namer  r  r  r   stringr  
absolutizer  r   r  )r'   r  s     r(   r  zPrologue.absolutize  s     c9%% 		/x7""((S]CCCx9$$JSX8U8U    %
 V$$ 	/SCZZ#DI....
r)   N)rH   rR   )r  r!   r  r!   rH   r   )r  r!   r  r   rH   rR   )r  r  rH   r  )r,   r-   r.   r:   r%   r  r  r  r/   r)   r(   r  r    sn         ; ; ; ;. . . .? ? ? ?     r)   r  c                      e Zd ZdZddZdS )	Queryz'
    A parsed and translated query
    r   r  algebrar   c                &    || _         || _        |  d S r#   r   r  r'   r   r  s      r(   r%   zQuery.__init__       IIIr)   N)r   r  r  r   r9   r/   r)   r(   r  r    8         J J J J J Jr)   r  c                      e Zd ZdZddZdS )	Updatez(
    A parsed and translated update
    r   r  r  List[CompValue]c                &    || _         || _        |  d S r#   r!  r"  s      r(   r%   zUpdate.__init__  r#  r)   N)r   r  r  r'  r9   r/   r)   r(   r&  r&    r$  r)   r&  )5
__future__r   r   r   r   typingtcollections.abcr   r   r   r   r   r	   r
   r   r   r   r   r   r   rdflib.plugins.sparqlr   rdflib.graphr   r   r   rdflib.namespacer   !rdflib.plugins.sparql.parserutilsr   rdflib.termr   r   r   r   r   r   rdflib.pathsr   r   r$   r   r1   r6   r<   r?   rn   r   r   r  r  r&  r/   r)   r(   <module>r3     s   " " " " " "              3 3 3 3 3 3 3 3                              9 9 9 9 9 9 9 9 9 9 - - - - - - 7 7 7 7 7 7 J J J J J J J J J J J J J J J J "!!!!!! 	& & & & &) & & &
( ( ( ( (K ( ( (
# # # # #; # # #( ( ( ( (k ( ( (
6 6 6 6 6~ 6 6 6r; ; ; ; ; ; ; ;|CT CT CT CT CTZ CT CT CTL~ ~ ~ ~ ~ ~ ~ ~B' ' ' ' ' ' ' 'TJ J J J J J J JJ J J J J J J J J Jr)   