o
    mi                     @  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__Zcontext_aware	Exception)selfr   	__class__ Y/home/kim/smarthome/.venv/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 )Zextra_nsZTriX(http://www.w3.org/XML/1998/namespacebasezUnknown graph type: 
zlatin-1)r   Znamespace_managerr	   TRIXNSwriterpushr   	attribute
namespaces
isinstancer   Zcontexts_writeGraphr   r   typepopwriteencode)r   r   r   r   r   nmZ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strZtriples_writeTripler+   )r   r0   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 )
Nr8   r1   r2   idZtypedLiteraldatatype)r3   
attributesZplainLiterallang)r$   r%   r#   r(   r   r5   r6   r   r   r:   languageXMLNSr+   )r   r8   	componentr   r   r   r7   G   s,   


zTriXSerializer._writeTriple)r   r   )NN)
r   r   r   r   r   r   r   r   r   r   )	__name__
__module____qualname____doc__r   r/   r)   r7   __classcell__r   r   r   r   r      s    
N)
__future__r   typingr   r   r   Zrdflib.graphr   r   Zrdflib.namespacer   Z$rdflib.plugins.serializers.xmlwriterr	   Zrdflib.serializerr
   Zrdflib.termr   r   r   __all__r#   r>   r   r   r   r   r   <module>   s    