o
    i                     @   s   d dl 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 d dlmZmZmZ dgZedZed	ZG d
d deZdS )    )IOOptional)ConjunctiveGraphGraph)	Namespace)	XMLWriter)
Serializer)BNodeLiteralURIRefTriXSerializerz&http://www.w3.org/2004/03/trix/trix-1/z$http://www.w3.org/XML/1998/namespacec                       sZ   e Zd Zdef fddZ		ddee dee dee fdd	Z	d
d Z
dd Z  ZS )r   storec                    s"   t t| | |jstdd S )Nz<TriX serialization only makes sense for context-aware stores)superr   __init__context_aware	Exception)selfr   	__class__ Z/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/rdflib/plugins/serializers/trix.pyr      s   zTriXSerializer.__init__Nstreambaseencodingc                 K   s   | j j}t|||dtid| _| jtd  |d u r%| j jd ur%| j j}|d ur0| jd| | j  t	| j t
rI| j  D ]}| | q@nt	| j trV| | j  n
tdt| j  | j  |dd d S )N )extra_nsTriX(http://www.w3.org/XML/1998/namespacebasezUnknown graph type: 
zlatin-1)r   namespace_managerr   TRIXNSwriterpushr   	attribute
namespaces
isinstancer   contexts_writeGraphr   r   typepopwriteencode)r   r   r   r   argsnmsubgraphr   r   r   	serialize   s"   

zTriXSerializer.serializec                 C   st   | j td  |jr| j d|j t|jtr&| j jtd t	|jd |
dD ]}| | q+| j   d S )Ngraphr   uricontent)NNN)r!   r"   r    r   r#   r%   
identifierr   elementstrtriples_writeTripler)   )r   r0   tripler   r   r   r'   6   s   zTriXSerializer._writeGraphc                 C   s   | j td  |D ]g}t|tr| j jtd t|d q
t|tr0| j jtd t|d q
t|trq|j	rM| j jtd t|td t|j	id q
|j
re| j jtd t|td	 t|j
id q
| j jtd t|d q
| j   d S )
Nr9   r1   r2   idtypedLiteraldatatype)r3   
attributesplainLiterallang)r!   r"   r    r%   r   r5   r6   r	   r
   r<   languageXMLNSr)   )r   r9   	componentr   r   r   r8   C   s,   


zTriXSerializer._writeTriple)NN)__name__
__module____qualname__r   r   r   bytesr   r6   r/   r'   r8   __classcell__r   r   r   r   r      s    

N)typingr   r   rdflib.graphr   r   rdflib.namespacer   $rdflib.plugins.serializers.xmlwriterr   rdflib.serializerr   rdflib.termr	   r
   r   __all__r    rA   r   r   r   r   r   <module>   s    