
    01i .                    0   S r SSKJr  SSKJrJrJrJrJr  SSK	J
r
  SSKJrJr  SSKJrJr  SSKJr  SSKJrJrJr  SS	KJrJrJr  SS
 jrSS jrSS jrSS jrSS jrSS jr SS jr!SS jr"SS jr#SS jr$SS jr%SS jr&SS jr' S       SS jjr(g)z)
Code for carrying out Update Operations
    )annotations)TYPE_CHECKINGIteratorMappingOptionalSequence)Graph)evalBGPevalPart)_fillTemplate_join)	CompValue)
FrozenDictQueryContextUpdate)
IdentifierURIRefVariablec                \    US:X  a  U R                   $ U R                  R                  U5      $ )NDEFAULT)graphdatasetget_context)ctxgs     V/home/james-whalen/.local/lib/python3.13/site-packages/rdflib/plugins/sparql/update.py_graphOrDefaultr      s(    I~yy{{&&q))    c                j   US:X  a  U R                   /$ US:X  aQ  U R                  R                  5        Vs/ s H+  nUR                  U R                   R                  :w  d  M)  UPM-     sn$ US:X  a#  [	        U R                  R                  5       5      $ U R                  R                  U5      /$ s  snf )z
return a list of graphs
r   NAMEDALL)r   r   contexts
identifierlistr   )r   r   cs      r   	_graphAllr&      s     	I~		{	
g [[))+
 ,||syy333 +
 	
 
eCKK((*++''*++
s   (B0"B0c                    [         (       a!  [        UR                  [        5      (       d   eUR                  (       a&  U R                  UR                  SUR                  S9  gU R                  UR                  SS9  g)z,
http://www.w3.org/TR/sparql11-update/#load
F)defaultintoTr(   N)r   
isinstanceirir   graphiriload)r   us     r   evalLoadr0   ,   sU    
 }!%%((((zzAJJ7%r   c                    U R                   R                  UR                  5      n[        U5      S:  a  [	        SUR
                  -  5      e[	        S5      e)z.
http://www.w3.org/TR/sparql11-update/#create
r   zGraph %s already exists.zCreate not implemented!)r   r   r-   len	Exceptionr#   r   r/   r   s      r   
evalCreater5   :   sH     	

+A
1vz2Q\\ABB
-
..r   c                ^    [        XR                  5       H  nUR                  S5        M     g)z-
http://www.w3.org/TR/sparql11-update/#clear
NNNN)r&   r-   remover4   s      r   	evalClearr9   D   s$     sJJ'	#$ (r   c                    U R                   R                  R                  (       aB  [        XR                  5       H(  nU R                   R                  R                  U5        M*     g[        X5        g)z,
http://www.w3.org/TR/sparql11-update/#drop
N)r   storegraph_awarer&   r-   remove_graphr9   r4   s      r   evalDropr>   L   sL     {{$$3

+AKK**1- , 	#r   c                    U R                   nX!R                  -  nUR                   H/  nU R                  R	                  U5      nX1R                  U   -  nM1     g)z2
http://www.w3.org/TR/sparql11-update/#insertData
Nr   triplesquadsr   r   r   r/   r   cgs       r   evalInsertDatarE   W   sL    
 			ANA WW[[$$Q'
ggaj r   c                    U R                   nX!R                  -  nUR                   H/  nU R                  R	                  U5      nX1R                  U   -  nM1     g)z2
http://www.w3.org/TR/sparql11-update/#deleteData
Nr@   rC   s       r   evalDeleteDatarG   f   sL    
 			ANA WW[[$$Q'
ggaj r   c                   [        XR                  5      nUR                   HZ  nU R                  R	                  U5      nU R                  U5      n[        U[        [        XQR                  U   5      5      5      nM\     U H  nU R                  nU[        UR                  U5      -  nUR                   HI  nU R                  R	                  UR                  U5      5      nU[        UR                  U   U5      -  nMK     M     g)z3
http://www.w3.org/TR/sparql11-update/#deleteWhere
N)r
   rA   rB   r   r   	pushGraphr   r$   r   r   get)r   r/   resr   rD   r%   s         r   evalDeleteWhererL   v   s    
 !(YY 7CWW[[$$Q'MM"Cga456  II	]199a((A((q2B-
A..B 	 r   c                   U nUR                   (       a  SnUR                    H  nUR                  (       a@  U(       d  [        5       nU R                  U5      n SnU R	                  UR                  SS9  MT  UR
                  (       d  Mg  UR
                  nU R	                  USS9  M     UR                   (       dG  UR                  (       a6  U R                  R                  UR                  5      nU R                  U5      n [        XR                  5      nUR                   (       aP  W(       a  Un UR                  (       a6  U R                  R                  UR                  5      nU R                  U5      n [        U5       GHv  n[        U R                  5      [        L a  U R                  OU R                  R                  nUR                  (       a  U[!        UR                  R"                  U5      -  nUR                  R$                  R'                  5        H=  u  piU R                  R                  UR)                  U5      5      n
U
[!        X5      -  n
M?     UR*                  (       d  M  U[!        UR*                  R"                  U5      -  nUR*                  R$                  R'                  5        H=  u  piU R                  R                  UR)                  U5      5      n
U
[!        X5      -  n
M?     GMy     g )NFTr*   )usingr(   r	   rI   r.   named
withClauser   r   r   wherer$   typer   default_contextdeleter   rA   rB   itemsrJ   insert)r   r/   originalctxotherDefaultddgr   rK   r%   qrD   s              r   
evalModifyr\      s   K 	wwAyy#B--+C#'LD1GGE* . 77q||KK##ALL1mmA
3
 CwwC<<''5A--"C#Y syy/U2SYY8S8S88 - 0 0!44B,,.[[,,QUU1X6mA)) / 888 - 0 0!44B,,.[[,,QUU1X6mA)) /' r   c                    UR                   u  p#[        X5      n[        X5      nUR                  UR                  :X  a  gXT-  ng)zM

add all triples from src to dst

http://www.w3.org/TR/sparql11-update/#add
N)r   r   r#   r   r/   srcdstsrcgdstgs         r   evalAddrc      sA     wwHC3$D3$D $//) 	LDr   c                d   UR                   u  p#[        X5      n[        X5      nUR                  UR                  :X  a  gUR                  S5        XT-  nU R                  R
                  R                  (       a&  U R                  R
                  R                  U5        gUR                  S5        g)z

remove all triples from dst
add all triples from src to dst
remove all triples from src

http://www.w3.org/TR/sparql11-update/#move
Nr7   )r   r   r#   r8   r   r;   r<   r=   r^   s         r   evalMovere      s     wwHC3$D3$D $//) 	KK"# 	LD
{{$$&&t, 	&'r   c                    UR                   u  p#[        X5      n[        X5      nUR                  UR                  :X  a  gUR                  S5        XT-  ng)zj

remove all triples from dst
add all triples from src to dst

http://www.w3.org/TR/sparql11-update/#copy
Nr7   )r   r   r#   r8   r^   s         r   evalCopyrg     sP     wwHC3$D3$D $//) 	KK"# 	LDr   Nc                   UR                    GH  n[        S U=(       d    0 R                  5        5       5      n[        XS9nUR                  Ul         UR
                  S:X  a  [        XC5        Me  UR
                  S:X  a  [        XC5        M  UR
                  S:X  a  [        XC5        M  UR
                  S:X  a  [        XC5        M  UR
                  S:X  a  [        XC5        M  UR
                  S:X  a  [        XC5        M  UR
                  S	:X  a  [        XC5        GM  UR
                  S
:X  a  [        XC5        GM2  UR
                  S:X  a  [        XC5        GMP  UR
                  S:X  a  [        XC5        GMn  UR
                  S:X  a  [!        XC5        GM  [#        SU< 35      e   g!   UR$                  (       d  e  GM  = f)a*  http://www.w3.org/TR/sparql11-update/#updateLanguage

'A request is a sequence of operations [...] Implementations MUST
ensure that operations of a single request are executed in a
fashion that guarantees the same effects as executing them in
lexical order.

Operations all result either in success or failure.

If multiple operations are present in a single request, then a
result of failure from any operation MUST abort the sequence of
operations, causing the subsequent operations to be ignored.'

This will return None on success and raise Exceptions on error

!!! warning "Security Considerations"

    This method can access indirectly requested network endpoints, for
    example, query processing will attempt to access network endpoints
    specified in `SERVICE` directives.

    When processing untrusted or potentially malicious queries, measures
    should be taken to restrict network and file access.

    For information on available security measures, see the RDFLib
    [Security Considerations](../security_considerations.md)
    documentation.

c              3  @   #    U  H  u  p[        U5      U4v   M     g 7fN)r   ).0kvs      r   	<genexpr>evalUpdate.<locals>.<genexpr>@  s     V9UXa[!,9Us   )initBindingsLoadClearDropCreateAddMoveCopy
InsertData
DeleteDataDeleteWhereModifyzUnknown update operation: N)algebradictrU   r   prologuenamer0   r9   r>   r5   rc   re   rg   rE   rG   rL   r\   r3   silent)r   updaterp   r/   r   s        r   
evalUpdater     sI   F ^^V,:L"9S9S9UVV5<zz	vv 7"#!6! 8#3"56! 6! <'s&<'s&=('8#3"! EFF= >	88 sN   F+2F+F+,F+	F+&F+F+!F+?F+F+;F+F++G)r   r   r   strreturnzOptional[Graph])r   r   r   r   r   zSequence[Graph])r   r   r/   r   r   Nonerj   )r   r	   r   r   rp   z"Optional[Mapping[str, Identifier]]r   r   ))__doc__
__future__r   typingr   r   r   r   r   rdflib.graphr	   rdflib.plugins.sparql.evaluater
   r   rdflib.plugins.sparql.evalutilsr   r   !rdflib.plugins.sparql.parserutilsr   rdflib.plugins.sparql.sparqlr   r   r   rdflib.termr   r   r   r   r&   r0   r5   r9   r>   rE   rG   rL   r\   rc   re   rg   r    r   r   <module>r      s    # G G  < @ 7 I I 4 4*,(&/% /*@*F((B8 8<DDD 5D 
	Dr   