o
    
i                     @  s   d dl mZ d dl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 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 )    )annotations)IOAny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                      sB   e Zd ZdZd fddZ		ddddZdd Zdd Z  ZS )r   zTriX RDF graph serializer.storer   c                   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__ S/home/ubuntu/.local/lib/python3.10/site-packages/rdflib/plugins/serializers/trix.pyr      s   zTriXSerializer.__init__Nstream	IO[bytes]baseOptional[str]encodingkwargsr   returnNonec                 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   r   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_writeTripler0   )r   r6   tripler   r   r   r.   :   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 )
Nr?   r7   r8   idtypedLiteraldatatype)r9   
attributesplainLiterallang)r(   r)   r'   r,   r   r;   r<   r   r   rB   languageXMLNSr0   )r   r?   	componentr   r   r   r>   G   s,   


zTriXSerializer._writeTriple)r   r   )NN)
r   r   r   r   r   r   r   r   r   r    )	__name__
__module____qualname____doc__r   r5   r.   r>   __classcell__r   r   r   r   r      s    
N)
__future__r   typingr   r   r   rdflib.graphr   r   rdflib.namespacer   $rdflib.plugins.serializers.xmlwriterr	   rdflib.serializerr
   rdflib.termr   r   r   __all__r'   rG   r   r   r   r   r   <module>   s    