
    iE=                    ,   d dl mZ d dl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 d dlm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 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( g dZ) G d de      Z*dZ+dZ, ed      Z-ddZ. G d de      Z/y)    )annotationsN)IOAnyDict	GeneratorOptionalSetTuple)escape	quoteattr)
Collection)Graph)RDFRDFS	Namespace)RDFVOC)	XMLWriter)
Serializer)BNodeIdentifiedNode
IdentifierLiteralNodeURIRef)first	more_than   )ESCAPE_ENTITIES)fixXMLSerializerPrettyXMLSerializerc                  l     e Zd Zd fdZddZ	 	 d	 	 	 	 	 	 	 	 	 d	dZd
ddZ	 d
	 	 	 	 	 	 	 ddZ xZS )r    c                ,    t         t        |   |       y N)superr    __init__)selfstore	__class__s     PC:\Projects\mas-dev\.venv\Lib\site-packages\rdflib/plugins/serializers/rdfxml.pyr&   zXMLSerializer.__init__   s    mT+E2    c              #  :  K   | j                   }|j                  }i }t        |j                               D ]%  }|j	                  |      \  }}}t        |      ||<   ' t        d      }d|v r
|d   |k(  sJ ||d<   |j                         D ]  \  }}||f  y w)N+http://www.w3.org/1999/02/22-rdf-syntax-ns#rdf)r(   namespace_managerset
predicatescompute_qname_strictr   items)	r'   r(   nmbindings	predicateprefix	namespacenameRDFNSs	            r*   
__bindingszXMLSerializer.__bindings   s     

$$&(U--/0I&(&=&=i&H#FIt%i0HV 1
 DEHE?e+++#HUO!)!1FI)## "2s   BBc                   ||| _         n1| j                  j                   | j                  j                   | _         | _        i | _        | j                  fdx| _        } |d| j                  z          |d       d|v r |d|d   z         n!| j                   r |d| j                   z         t        | j                               }|j                          |D ]"  \  }}|r |d|d|d        |d	|z         $  |d
       | j                  j                         D ]  }	| j                  |	d         |d       | `y )Nc                F    j                  | j                  d            S )Nreplace)writeencode)uniencodingstreams    r*   <lambda>z)XMLSerializer.serialize.<locals>.<lambda><   s    cjj96U)Vr+   z$<?xml version="1.0" encoding="%s"?>
z	<rdf:RDF
xml_basez   xml:base="%s"
z	   xmlns:z="z"
z   xmlns="%s"
>
r   z</rdf:RDF>
)baser(   _XMLSerializer__stream_XMLSerializer__serializedrB   r?   list_XMLSerializer__bindingssortsubjectssubject)
r'   rC   rG   rB   kwargsr?   r5   r7   r8   rN   s
    ` `      r*   	serializezXMLSerializer.serialize-   s2    DIZZ__(

DI35==VV
U 	5EF 	l &
);;<YY&23 )*!)FIfi@A')34	 "*
 	e zz**,GLL!$ -
 	n r+   c                   || j                   vrd| j                   |<   t        |t        t        f      r| j                  }d|z  }d}t        |t              r ||d|d|d       n*t        | j                  |            } ||d|d|       |d d f| j                  v rP |d       | j                  j                  |      D ]  \  }}| j                  |||dz            ||d	|d       y  |d
       y y y )Nr     zrdf:Description< rdf:nodeID=""z rdf:about=rF   <//>
)
rI   
isinstancer   r   r?   r   
relativizer(   predicate_objectsr6   )	r'   rN   depthr?   indentelement_nameurir6   objects	            r*   rN   zXMLSerializer.subjectb   s    $+++)*Dg&'E6?3

0gu-V\7ST#DOOG$<=C&,LMT4(DJJ6%L-1ZZ-I-I'-R)	6 y&%!)D .S >? &M+ 4 ,r+   c                   | j                   }d|z  }| j                  j                  j                  |      }t	        |t
              rcd}|j                  r|d|j                  z  z  }|j                  r|d|j                  z  z  } ||d||dt        |t              d|d	       y t	        |t              r ||d|d	|d
       y  ||d|dt        | j                  |            d       y )NrR    z xml:lang="%s"z rdf:datatype="%s"rS   >rV   rF   rT   z"/>
z rdf:resource=rW   )r?   r(   r/   qname_strictrX   r   languagedatatyper   r   r   r   rY   )r'   r6   r_   r[   r?   r\   qname
attributess           r*   r6   zXMLSerializer.predicate}   s     



,,99)Dfg&J.@@
2V__DD
5*fV_.MuV
 &%(VUFKLui0G&HJr+   r(   r   )returnz)Generator[Tuple[str, URIRef], None, None]NN
rC   z	IO[bytes]rG   Optional[str]rB   rl   rO   r   ri   Noner   )rN   r   r[   intri   rm   r6   r   r_   r   r[   ro   ri   rm   )	__name__
__module____qualname__r&   rK   rP   rN   r6   __classcell__r)   s   @r*   r    r       s|    3$. #"&	33 3  	3
 3 
3j"8 GH#-7@C	r+   r    z(http://www.w3.org/XML/1998/namespacelangz(http://www.w3.org/XML/1998/namespacebasezhttp://www.w3.org/2002/07/owl#c                2    | j                  d      r| dd S | S )z:strip off _: from nodeIDs... as they are not valid NCNamesz_:   N)
startswith)vals    r*   r   r      s    
~~d12w
r+   c                  f     e Zd Zdd fdZ	 	 d	 	 	 	 	 	 	 	 	 ddZd	d
dZ	 d		 	 	 	 	 	 	 ddZ xZS )r!   c                J    t         t        |   |       t               | _        y r$   )r%   r!   r&   r0   forceRDFAbout)r'   r(   	max_depthr)   s      r*   r&   zPrettyXMLSerializer.__init__   s    !41%8*-%r+   c                    i | _         | j                  }||| _        n|j                  |j                  | _        |j                  dd      | _        | j                  dkD  sJ d       |j
                  x| _        }t        |||      x| _        }i }t        |j                               j                  |j                  d t        j                              }	|	D ]  }
|j                  |
      \  }}}|||<    d|d<   |j!                  t"        j                         d|v r|j%                  t&        |d          n,| j                  r |j%                  t&        | j                         |j)                  |j+                                |j-                         D ]6  }d d |f|v r|d |f|v s| j/                  |d       %| j/                  |d       8 t               }|j-                         D ]6  }t1        |t2              r|j5                  |       %| j/                  |d       8 |D ]#  }|| j                   vs| j/                  d       % |j7                  t"        j                         |j9                  d	j;                  d
             d | _         y )Nr}      r   z max_depth must be greater than 0r-   r.   rE   r   
zlatin-1) _PrettyXMLSerializer__serializedr(   rG   getr}   r/   r4   r   writerr0   r1   unionobjectsr   typer2   pushr   	attributeXMLBASE
namespacesr3   rM   rN   rX   r   addpopr?   r@   )r'   rC   rG   rB   rO   r(   r4   r   r   possibler6   r7   r8   localrN   bnodesbnodes                    r*   rP   zPrettyXMLSerializer.serialize   s?    46

DIZZ#

DIK3~~!E#EE!..."(X>>f
!%"2"2"45;;MM$)
 "I')'>'>y'I$FIu!*Jv "
 J
5FJJWfZ&89YYWdii0***,-
 ~~'GdG$-T7+u4LL!,Wa( (  ~~'G'5)

7#LL!$	 ( ED---Wa(  	

6::T[[+, !r+   c                n   | j                   }| j                  }|| j                  v r|j                  t        j
                         |j                  t        j                  | j                  |             |j                  t        j
                         | j                  j                  |       y || j                  vrNd| j                  |<   t        |j                  |t        j                              }	 | j                   j#                  |       |xs t        j
                  }|j                  |       t'        |t(              r5d } |d      rY|j                  t        j*                  t-        |             n/|j                  t        j                  | j                  |             |d d f|v rH|j/                  |      D ]4  \  }}	|t        j                  k(  r|	|k(  r| j1                  ||	|dz          6 |j                  |       y || j                  v r|j                  t        j
                         |j                  t        j                  | j                  |             |j                  t        j
                         | j                  j                  |       y y # t$        $ r d }Y w xY w)Nr   c                     y)NT )ceils    r*   subj_as_obj_more_thanz:PrettyXMLSerializer.subject.<locals>.subj_as_obj_more_than  s    r+   )r(   r   r|   r   r   Descriptionr   aboutrY   r   remover   r   r   r   r   r4   rf   	ExceptionrX   r   nodeIDr   rZ   r6   )
r'   rN   r[   r(   r   r   elementr   r6   r_   s
             r*   rN   zPrettyXMLSerializer.subject   s   

d(((KK**+V\\4??7+CDJJv))*%%g.D---)*Dg&w9:Dd# 0f00GKK '5)  )+$$V]]CLA   tw/GHt$-).)@)@)I%Iv%1fn y&%!)D	 *J JJw***KK**+V\\4??7+CDJJv))*%%g. +A  s   8J% %J43J4c                   | j                   }| j                  }|j                  |       t        |t              r|j
                  r |j                  t        |j
                         |j                  t        j                  k(  rt        |j                  t        j                  j                  j                        rN|j                  t         j"                  d       |j%                  d       |j&                  j)                  |       nF|j                  r*|j                  t         j                  |j                         |j%                  |       n|| j*                  v s|d d f|vrt        |t,              rJt/        |j1                  d d |f      d      r|j                  t         j2                  t5        |             n|j                  t         j6                  | j9                  |             n]t;        |j=                  |t        j:                              rd| j*                  |<   dd l}|jA                  dtC        |      z  dz   tD        d       |j                  t         j"                  d	       tG        ||      }|D ]^  }t        |tH              r| jJ                  jM                  |       | jO                  |       t        |tH              rPd| j*                  |<   ` nit;        |jQ                  |t        jR                  tT        jV                  tX        jV                  gf            r@t        |tH              r0|j                  t         j6                  | j9                  |             n|| jZ                  k  r| jO                  ||dz          nt        |t,              r||| j*                  vrD|d d f|v r=t]        t_        |ja                  |
                  dk(  r| jO                  ||dz          nY|j                  t         j2                  t5        |             n/|j                  t         j6                  | j9                  |             |jc                  |       y )Nr   ra   r   r   z&Assertions on %s other than RDF.first z/and RDF.rest are ignored ... including RDF.Listrw   )
stacklevelr   )r_   )2r   r(   r   rX   r   rd   r   XMLLANGre   r   
XMLLiteralvaluexmldomminidomDocumentr   	parseTypetextrC   r?   r   r   r   triplesr   r   resourcerY   r   r   warningswarnreprUserWarningr   r   r|   r   rN   triples_choicesr   OWL_NSClassr   r}   lenrJ   rM   r   )	r'   r6   r_   r[   r   r(   r   colitems	            r*   r6   zPrettyXMLSerializer.predicate/  s0    

Ifg&  &//:#..0Zcggoo666   !1!19=B##F+??$$V__fooFF# d'''D$'50&%(U]]D$+?@!D$$V]]CK@  $//&2IJ U]]639956 -.!!&)  <tF|KGH 	     !1!1<@ /D!$/**..t4LL&%dF323))$/   ))FLL$**+EF
 !0$$V__doof6MNdnn,LL3.d&7&77#T40E9U^^6^%B CDI VUQY7((FD $$V__doof6MN

9r+   )r   rh   rj   rk   rn   )rN   r   r[   ro   rp   )rq   rr   rs   r&   rP   rN   r6   rt   ru   s   @r*   r!   r!      s    0 #"&	G!G! G!  	G!
 G! 
G!R6/r GHX#X-7X@CX	Xr+   r!   )ry   strri   r   )0
__future__r   xml.dom.minidomr   typingr   r   r   r   r   r	   r
   xml.sax.saxutilsr   r   rdflib.collectionr   rdflib.graphr   rdflib.namespacer   r   r   rdflib.plugins.parsers.RDFVOCr   $rdflib.plugins.serializers.xmlwriterr   rdflib.serializerr   rdflib.termr   r   r   r   r   r   rdflib.utilr   r   	xmlwriterr   __all__r    r   r   r   r   r!   r   r+   r*   <module>r      sv    "  A A A . (  1 1 0 : ( P P ( &
9CJ CL 5
4	3	4^* ^r+   