
    if                       d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
 ddlmZmZ ddlmZmZmZ ddlmZ ddl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! ddl"m#Z# ddl$m%Z%m&Z&m'Z'm(Z( erddl)m*Z*m+Z+ ddlm,Z,m-Z-m.Z. g dZ/e#Z0e#jb                  e#jd                  e#jf                  e#jh                  e#jj                  dZ6e#j:                  e#jd                  e#jb                  e#jj                  e#jh                  e#jn                  e#jp                  gZ9e9e#jt                  e#jv                  gz   Z< e(d       e(d       e(d      gZ=e9e#jv                  gz   e=z   Z>e#jd                  e#jn                  e#jb                  gZ?e9e#jt                  gz   e=z   Z@e9e#jt                  e#jv                  gz   e=z   ZAe#jd                  e#jh                  e#jn                  gZBdZCeCdfZDeCdfZE G d de(      ZF G d d      ZG G d dej                        ZId"dZJ G d d e!      ZKy!)#z
An RDF/XML parser for RDFLib
    )annotations)TYPE_CHECKINGAnyDictListNoReturnOptionalTuple)	urldefragurljoin)handlermake_parser	xmlreader)ErrorHandler)escape	quoteattr)ErrorParserError)Graph)RDF	is_ncname)InputSourceParser)RDFVOC)BNode
IdentifierLiteralURIRef)AttributesImplLocator)_ObjectType_SubjectType_TripleType)create_parserBagIDElementHandlerRDFXMLHandlerRDFXMLParser)aboutIDtyperesource	parseTypez4http://www.w3.org/1999/02/22-rdf-syntax-ns#aboutEachz:http://www.w3.org/1999/02/22-rdf-syntax-ns#aboutEachPrefixz0http://www.w3.org/1999/02/22-rdf-syntax-ns#bagID$http://www.w3.org/XML/1998/namespacebaselangc                  *     e Zd ZdgZ fdZd Z xZS )r%   lic                :    t         t        |   |       d| _        y Nr   )superr   __init__r2   )selfval	__class__s     LC:\Projects\mas-dev\.venv\Lib\site-packages\rdflib/plugins/parsers/rdfxml.pyr6   zBagID.__init__Z   s    fd$S)    c                X    | xj                   dz  c_         t        d| j                   z     S N   z_%s)r2   RDFNSr7   s    r:   next_lizBagID.next_li_   s"    1UTWW_%%r;   )__name__
__module____qualname__	__slots__r6   rA   __classcell__)r9   s   @r:   r%   r%   W   s    I
&r;   r%   c                       e Zd Zg dZd Zd Zy)r&   )startcharendr2   idr/   subject	predicateobjectlistlanguagedatatypedeclareddatac                    d | _         d | _        d | _        d| _        d | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        y r4   )rH   rI   rJ   r2   rK   r/   rL   rN   rO   rP   rQ   rR   rS   r@   s    r:   r6   zElementHandler.__init__w   s]    
				r;   c                X    | xj                   dz  c_         t        d| j                   z     S r=   )r2   r   r@   s    r:   rA   zElementHandler.next_li   s"    1edggo&&r;   N)rB   rC   rD   rE   r6   rA    r;   r:   r&   r&   e   s    I"'r;   r&   c                  d   e 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d
ZddZd&dZd'dZd(dZ ee      Zd(dZ ee      Zd(dZ ee      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+dZ d-dZ!d,dZ"y).r'   c                @    || _         d| _        | j                          y )NF)storepreserve_bnode_idsreset)r7   rY   s     r:   r6   zRDFXMLHandler.__init__   s    
"'

r;   c                    t               }| j                  |_        d |_        d |g| _        i | _        i | _        i g| _        | j                  d   | _        y )Nc                     y NrV   )nameqnames     r:   <lambda>z%RDFXMLHandler.reset.<locals>.<lambda>   s    4r;   )	r&   document_element_startrH   rJ   stackidsbnode_ns_contexts_current_context)r7   document_elements     r:   r[   zRDFXMLHandler.reset   sd    )+!%!<!<76

 $&,.
=
 ;?:K:KB:Or;   c                    || _         y r^   )locator)r7   rk   s     r:   setDocumentLocatorz RDFXMLHandler.setDocumentLocator   s	    r;   c                     y r^   rV   r@   s    r:   startDocumentzRDFXMLHandler.startDocument       r;   c                    | j                   j                  | j                  j                                || j                  |<   | j                  j                  ||xs dd       y )N F)override)rg   appendrh   copyrY   bind)r7   prefix	namespaces      r:   startPrefixMappingz RDFXMLHandler.startPrefixMapping   sO      !6!6!;!;!=>+1i(

	R%@r;   c                F    | j                   d   | _        | j                   d= y Nrb   )rg   rh   )r7   rv   s     r:   endPrefixMappingzRDFXMLHandler.endPrefixMapping   s#     $ 1 1" 5b!r;   c                   | j                   }|j                  t                      | j                  }| j                  }|j                  t        d       }|xt        |      \  }}|r#|j                  rt        |j                  |      }n| j                  j                         xs | j                  j                         }	|	rct        |	|      }nV|r|j                  }|F| j                  j                         xs | j                  j                         }	|	rt        |	      \  }}||_        |j                  t        d       }
|
|r|j                  }
|
|_        |j                  |||       y r^   )rd   rs   r&   currentparentgetBASEr   r/   r   rk   getPublicIdgetSystemIdLANGrP   rH   )r7   r_   r`   attrsrd   r}   r~   r/   fragsystemIdrP   s              r:   startElementNSzRDFXMLHandler.startElementNS   s$    

^%&,,yyt$"4JD$&++v{{D1<<335S9Q9Q9S"8T2D{{|<<335S9Q9Q9S!*8!4JD$99T4(!??#dE5)r;   c                p    | j                   j                  ||       | j                  j                          y r^   )r}   rJ   rd   popr7   r_   r`   s      r:   endElementNSzRDFXMLHandler.endElementNS   s$    u%

r;   c                F    | j                   j                  }|r	 ||       y y r^   )r}   rI   )r7   contentrI   s      r:   
characterszRDFXMLHandler.characters   s     ||  M r;   c                     y r^   rV   )r7   r   s     r:   ignorableWhitespacez!RDFXMLHandler.ignorableWhitespace   ro   r;   c                     y r^   rV   )r7   targetrS   s      r:   processingInstructionz#RDFXMLHandler.processingInstruction   ro   r;   c                   |\  }}}| j                   j                  |t        j                  t        j                  f       | j                   j                  |t        j
                  |f       | j                   j                  |t        j                  |f       | j                   j                  |t        j                  |f       y r^   )rY   addr   r+   	StatementrL   rM   rN   )r7   sidspospos         r:   add_reifiedzRDFXMLHandler.add_reified   s}    1a

SXXs}}56

S[[!,-

S]]A./

SZZ+,r;   c                    | j                   }|j                         d|j                         d|j                         d}t	        ||z         )N:z: )rk   r   getLineNumbergetColumnNumberr   )r7   messagerk   infos       r:   errorzRDFXMLHandler.error   sG    ,,!!!###%

 $.))r;   c                     | j                   d   S )Nrd   r@   s    r:   get_currentzRDFXMLHandler.get_current       zz"~r;   c                     | j                   d   S rz   r   r@   s    r:   get_nextzRDFXMLHandler.get_next   r   r;   c                     | j                   d   S )Nr   r@   s    r:   
get_parentzRDFXMLHandler.get_parent   r   r;   c                    t        | j                  j                  |d      }|r|d   dk(  r|d   dk7  rd|z  }t        |      S )Nr>   )allow_fragmentsrb   #z%s#)r   r}   r/   r   )r7   uriresults      r:   
absolutizezRDFXMLHandler.absolutize  sE    **CC3r7c>fRjC&7V^Ff~r;   c                p   |d   t        |d         }nt        dj                  |            }i }|j                         D ]p  \  }}|d   |d   }ndj                  |      }|j                  t              s|dd j                         dk(  rN|t        v r||t        |   <   c||t        |      <   r ||fS )Nr   r>   rq      xml)r   joinitems
startswithXMLNSlowerUNQUALIFIEDr?   )r7   r_   r`   r   attsnvatts           r:   convertzRDFXMLHandler.convert  s     7?$q'?D "''$-(DKKMDAqt|dggaj~~e$Aa(8E(A# $%U3Z $%VC[! " Tzr;   c                    |d   rZt        dj                  |            t        j                  k(  r/t	        | d      }| j
                  |_        | j                  |_        y | j                  |||       y )Nr   rq   next)	r   r   r   r   getattrnode_element_startrH   node_element_endrJ   )r7   r_   r`   r   r   s        r:   rc   z$RDFXMLHandler.document_element_start)  s[     7vbggdm,

:4(D00DJ,,DH##D%7r;   c                   | j                  |||      \  }}| j                  }| j                  }t        | d      }| j                  |_        | j                  |_        |t        v r| j                  d|z         t        j                  |v rt        j                  |v st        j                  |v r| j                  d       |t        j                     }t        |      s| j                  d|z          |d|z        }	|	| j                  v r| j                  d|	z         d| j                  |	<   n6t        j                  |v rt        j                  |v st        j                  |v r| j                  d       |t        j                     }
t        |
      s| j                  d|
z         | j                   d	u r8|
| j"                  v r| j"                  |
   }	nt%               }	|	| j"                  |
<   nwt%        |
      }	nkt        j                  |v rOt        j                  |v st        j                  |v r| j                  d        ||t        j                           }	n
t%               }	|t        j&                  k7  r2| j(                  j+                  |	t,        j.                   ||      f       |j0                  }|D ]  }|j3                  t5        t6                    s ||      }	 t9        ||   |      }n{|t,        j.                  k(  r*t,        j.                  } ||t,        j.                           }n>|t>        v r|t@        v r| j                  d
|z          ||      }	 t9        ||   |      }| j(                  j+                  |	|f        |	|_!        y # t:        $ r%}| j                  |j<                         Y d }~Qd }~ww xY w# t:        $ r%}| j                  |j<                         Y d }~d }~ww xY w)Nr   zInvalid node element URI: %sz9Can have at most one of rdf:ID, rdf:about, and rdf:nodeIDz&rdf:ID value is not a valid NCName: %s#%sz)two elements cannot use the same ID: '%s'r>   *rdf:nodeID value is not a valid NCName: %sF"Invalid property attribute URI: %s)"r   r}   r   r   property_element_startrH   property_element_endrJ   NODE_ELEMENT_EXCEPTIONSr   r   r*   r)   nodeIDr   re   rZ   rf   r   DescriptionrY   r   r   r+   rP   r   strr?   r   r   msgNODE_ELEMENT_ATTRIBUTESPROPERTY_ATTRIBUTE_EXCEPTIONSrL   )r7   r_   r`   r   r   r}   r   r   rK   rL   r   rP   r   rM   rN   es                   r:   r   z RDFXMLHandler.node_element_start7  s5    \\$u5
d,,__
 tV$00
,,**JJ5<=99||t#v}}'<

VWfiiBR=

CbHI ,G$(("

FPQ !DHHW]]d"yyD FLLD$8

VW&--(FV$

G&PQ&&%/TZZ'"jj0G#gG)0DJJv&-\\T!yyD FMMT$9

VW fll!34GgG6%%%JJNNGSXXz$/?@A ##C>>#e*-&sO	&$T#Y9F HH	#DN3//55

?#EF&sO	&$T#Y9F JJNNGY781 4 "+  &JJquu%%&   &JJquu%%&s0   #NO	ON??O	O5O00O5c                    | j                   j                  r?| j                  | j                  d   k7  r#| j	                  ddj                  |      z         | j                  j                  | j                   _        y )N   z1Repeat node-elements inside property elements: %srq   )r~   rN   r}   rd   r   r   rL   r   s      r:   r   zRDFXMLHandler.node_element_end  sX     ;;$,,$**Q-"?JJCbggdmS "\\11r;   c                
   | j                  |||      \  }}| j                  }| j                  }t        | d      }d }d |_        d |_        |j                  t        t                    s ||      |_	        nS|t        j                  k(  r|j                         |_	        n*|t        v r| j                  d|z         n ||      |_	        |j                  t        j                   d       }	|	0t#        |	      s| j                  d|	z          |d|	z        |_        nd |_        |j                  t        j&                  d       }
|j                  t        j(                  d       }|j                  t        j*                  d       }|
|| j                  d       |
, ||
      }| j,                  |_        | j0                  |_        n'|t#        |      s| j                  d|z         | j4                  du r:|| j6                  v r| j6                  |   }n)t9               }|| j6                  |<   |}nt9        |      x}}| j,                  |_        | j0                  |_        n|U|D ]>  }|t        j*                  k7  s|t        j                   k7  s+| j                  d|z         @ |d	k(  rLt9               x|_        }| j<                  |_        | j@                  |_        | jB                  |_        ||_,        y |d
k(  rHd |_        tD        jF                  x}|_        | j,                  |_        | jH                  |_        ||_,        y tK        dt        jL                        }| jN                  |_        tP        di|_)        | jT                  |_        | jN                  |_        | jV                  |_        ||_,        y d }| j<                  |_        | j,                  |_        | j0                  |_        |j                  t        jZ                  d       x}|_-        |j\                  }|	 ||      }n|D ]  }|j                  t        t                    s	 ||      }n.|t^        v r3|t`        v r| j                  d|z         n ||      }|tD        jb                  k(  rte        ||         }n|d }tK        ||   ||      }|
t9               }| jf                  ji                  ||f        |d|_        d |_,        y d |_        ||_,        y )Nr   z Invalid property element URI: %sz&rdf:ID value is not a value NCName: %sr   z=Property element cannot have both rdf:nodeID and rdf:resourcer   Fz#Property attr '%s' now allowed hereResource
Collectionrq   )rQ   r   r   )5r   r}   r   r   rS   rO   r   r   r?   rM   r   r2   rA   PROPERTY_ELEMENT_EXCEPTIONSr   r   r*   r   rK   r,   r   r-   r   rH   r   rJ   rZ   rf   r   rL   property_element_charrI   r   r   r   nillist_node_element_endr   
XMLLiteralliteral_element_charr   rR   literal_element_startliteral_element_endrN   rQ   rP   PROPERTY_ELEMENT_ATTRIBUTESr   r+   r   rY   r   )r7   r_   r`   r   r   r}   r   r   rN   rK   r,   r   
parse_typerL   r   rQ   rP   rM   r   s                      r:   r   z$RDFXMLHandler.property_element_start  sa    \\$u5
d,,__
 tV$(, s5z* *4 0GVYY ' 1G00JJ9D@A !+4 0GXXfii&>R=

CbHI#EBJ/GJGJ88FOOT2&--.XXf..5
F$6JJVW)F00DJ,,DHV$

G&PQ&&%/TZZ'!ZZ/F#gG)0DJJv&$F#(=000DJ,,DH%Cf...3&))3C

#H3#NO   +/4w6GOf#'#=#=GL!%!<!<DJ#88DH" "(#  </#'GL,/GG3FW\!%!8!8DJ#99DH "( %R&2C2CDF#'#<#<GL(-u~G$!%!;!;DJ $ 9 9DI#77DH!'#99!44
00&*hhv&EE7###!(+H~~c%j1 *3I7799JJG#MN *3I#((?tCy)A+#'S	8X>A>"WF

	156) * >GL!GNGL#GNr;   c                `    | j                   }|j                  |xj                  |z  c_        y y r^   )r}   rS   )r7   rS   r}   s      r:   r   z#RDFXMLHandler.property_element_char  s(    ,,<<#LLD L $r;   c                :   | j                   }|j                  S|j                  G|j                  }|j                  d }t        |j                  ||j                        |_        d |_        | j                  j                  | j                  k(  ra|j                  t        j                  k7  rD| j                  j                  |j                  t        j                  t        j                  f       |j                  | j                  j                  | j                  j                   |j"                  |j                  f       |j$                  G| j'                  |j$                  | j                  j                   |j"                  |j                  f       d |_        y r^   )r}   rS   rN   rP   rQ   r   r   rJ   r   r   r   rY   r   rO   restr~   rL   rM   rK   r   )r7   r_   r`   r}   literalLangs        r:   r   z"RDFXMLHandler.property_element_end  s   ,,<<#(>!**K+"$W\\;@P@PQGNGL99==D666~~(

chh@A>>%JJNNDKK//1B1BGNNSTzz%  JJ!4!4g6G6G X r;   c                   | j                   }| j                  j                  t        j                  k(  rt               }|| j                  _        | j                  j                  | j                  j                  t        j                  |j                  f       || j                  _
        d | j                  _        y t               }| j                  j                  | j                  j                  t        j                  |f       | j                  j                  |t        j                  |j                  f       || j                  _        y r^   )r}   r~   rO   r   r   r   rY   r   firstrL   rN   rI   r   )r7   r_   r`   r}   rO   s        r:   r   z#RDFXMLHandler.list_node_element_end+  s    ,,;;sww&7D  $DKKJJNNDKK,,ciiIJ!%DKK#DKK7D JJNNDKK,,chh=>JJNND#))W__=>#DKKr;   c           	        | j                   }| j                  | j                  _        | j                  | j                  _        | j                  | j                  _        | j                  j                  j                         |_	        |d   r| j                  |d      }|rd|d|d   |_        nd|d   z  |_        |d   |j                  vr]||j                  |d   <   |r |xj                  d|d|d   dz  c_        n)|xj                  d	|d   z  z  c_        nd|d   z  |_        |j                         D ]  \  }}|d   rO|d   |j                  vr"| j                  |d      |j                  |d   <   |j                  |d      dz   |d   z   }n|d   }|xj                  d
|dt        |      z  c_         |xj                  dz  c_        y )Nr   <r   r>   z<%sz xmlns:z=""z xmlns="%s" =>)r}   r   r   rH   r   rI   r   rJ   r~   rR   rt   rh   rN   r   r   )r7   r_   r`   r   r}   rv   values          r:   r   z#RDFXMLHandler.literal_element_start=  s    ,,44		22		00		;;//4467**473F-3T!W!=!&a7g...,2  a)NN&$q'&JJNNNmd1g&==N"T!W_GN ;;=KD%AwAw'"2"22040E0Ed1g0NG$$T!W-''Q036a@ AwNN$	%0@AAN ) 	#r;   c                T    | j                   xj                  t        |      z  c_        y r^   )r}   rN   r   )r7   rS   s     r:   r   z"RDFXMLHandler.literal_element_char_  s    vd|+r;   c                    |d   r*| j                   |d      }|rd|d|d   d}nd|d   z  }nd|d   z  }| j                  xj                  | j                  j                  |z   z  c_        y )Nr   z</r   r>   r   z</%s>)rh   r~   rN   r}   )r7   r_   r`   rv   rJ   s        r:   r   z!RDFXMLHandler.literal_element_endb  sn    7**473F$*DG4Q'DG#Cdll11C77r;   N)rY   r   )returnNone)rk   r    )rv   Optional[str]rw   r   r   r   )rv   r   r   r   )r_   Tuple[Optional[str], str]r   r   r   r   )r_   r   r   r   )r   r   r   r   )r   r   r   r#   )r   r   r   r   )r   zOptional[ElementHandler])r   r   r   r   )r_   r   r   r   r   z Tuple[URIRef, Dict[URIRef, str]])r_   Tuple[str, str]r   r   r   r   )r_   r   r   r   )rS   r   r   r   )#rB   rC   rD   r6   r[   rl   rn   rx   r{   r   r   r   r   r   r   r   r   propertyr}   r   r   r   r~   r   r   rc   r   r   r   r   r   r   r   r   r   rV   r;   r:   r'   r'      sP   
P"A
"*-*=K*	*B
-*
 {#G
 HD
 j!F-=K	)8	8#	83A	8		8Q"#Q"3AQ"	Q"f	2|$#|$3A|$	|$|!
&$$ # 3A 	 D,	8r;   r'   c                *   t               }	 |j                  dd       |j                  t        j
                  d       t        |      }|j                  |        |j                  |       |j                  t                      |S # t        $ r Y sw xY w)Nr   r.   r>   )r   start_namespace_declAttributeError
setFeaturer   feature_namespacesr'   rl   setContentHandlersetErrorHandlerr   )r   rY   parserrdfxmls       r:   r$   r$   n  s    ]F 	##E+QR g00!45!F
f%
V$
<>*M  s   B 	BBc                      e Zd Zd ZddZy)r(   c                     y r^   rV   r@   s    r:   r6   zRDFXMLParser.__init__  ro   r;   c                    t        ||      | _        | j                  j                         }|j                  dd       }|||_        | j                  j                  |       y )NrZ   )r$   _parsergetContentHandlerr   rZ   parse)r7   sourcesinkargscontent_handlerrZ   s         r:   r  zRDFXMLParser.parse  sV    $VT2,,88:!XX&:DA)1CO. 	6"r;   N)r  r   r	  r   r
  r   r   r   )rB   rC   rD   r6   r  rV   r;   r:   r(   r(     s    
#r;   r(   N)r   r   rY   r   r   zxmlreader.XMLReader)L__doc__
__future__r   typingr   r   r   r   r   r	   r
   urllib.parser   r   xml.saxr   r   r   xml.sax.handlerr   xml.sax.saxutilsr   r   rdflib.exceptionsr   r   rdflib.graphr   rdflib.namespacer   r   rdflib.parserr   r   rdflib.plugins.parsers.RDFVOCr   rdflib.termr   r   r   r   xml.sax.xmlreaderr   r    r!   r"   r#   __all__r?   r)   r*   r+   r,   r-   r   r   rQ   CORE_SYNTAX_TERMSr   r2   SYNTAX_TERMS	OLD_TERMSr   r   r   r   r   r   r   r   r%   r&   ContentHandlerr'   r$   r(   rV   r;   r:   <module>r     s   # L L L + 3 3 ( . 0  + - 0 : :9CC
W
 \\
))KK!! JJ
II
LL

OO
MM
OO  !F$6$6		#BB AB
GH
=>	 		 	  "99fmmV\\B   	  ++VYY77)C   &yy&//6==I .vv&F &#' #'L`8G** `8F$#6 #r;   