3
dz                 @   s   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mZ d dlmZmZ dgZe	dZe	d	ZG d
d deZdS )    )
Serializer)	XMLWriter)URIRefLiteralBNode)	Namespace)GraphConjunctiveGraph)	text_typebTriXSerializerz&http://www.w3.org/2004/03/trix/trix-1/z$http://www.w3.org/XML/1998/namespacec                   s6   e Zd Z fddZd
ddZdd Zdd	 Z  ZS )r   c                s"   t t| j| |jstdd S )Nz<TriX serialization only makes sense for context-aware stores)superr   __init__Zcontext_aware	Exception)selfstore)	__class__ A/tmp/pip-build-7vycvbft/rdflib/rdflib/plugins/serializers/trix.pyr      s    zTriXSerializer.__init__Nc             K   s   | j j}t|||dtid| _| jjtd  |d krJ| j jd k	rJ| j j}|d k	r`| jjd| | jj  t	| j t
rxJ| j j D ]}| j| qW n,t	| j tr| j| j  ntdt| j  | jj  |jtd d S )N )Zextra_nsZTriXz(http://www.w3.org/XML/1998/namespacebasezUnknown graph type: 
)r   Znamespace_managerr   TRIXNSwriterpushbase	attribute
namespaces
isinstancer	   Zcontexts_writeGraphr   r   typepopwriter   )r   streamr   encodingargsnmZsubgraphr   r   r   	serialize   s     

zTriXSerializer.serializec             C   sx   | j jtd  |jr&| j jd|j t|jtrL| j jtd t	|jd x|j
dD ]}| j| qXW | j j  d S )Ngraphz(http://www.w3.org/XML/1998/namespacebaseuri)content)NNN)r   r   r   r   r   r   
identifierr   elementr
   Ztriples_writeTripler    )r   r'   tripler   r   r   r   2   s    zTriXSerializer._writeGraphc             C   s   | j jtd  x|D ]}t|tr>| j jtd t|d qt|trb| j jtd t|d qt|tr|j	r| j jtd t|td t|j	id q|j
r| j jtd t|td	 t|j
id q| j jtd t|d qW | j j  d S )
Nr-   r(   )r)   idZtypedLiteraldatatype)r)   
attributesZplainLiterallang)r   r   r   r   r   r+   r
   r   r   r/   languageXMLNSr    )r   r-   	componentr   r   r   r,   >   s,    



zTriXSerializer._writeTriple)NN)__name__
__module____qualname__r   r&   r   r,   __classcell__r   r   )r   r   r      s   
N)Zrdflib.serializerr   Z$rdflib.plugins.serializers.xmlwriterr   Zrdflib.termr   r   r   Zrdflib.namespacer   Zrdflib.graphr   r	   sixr
   r   __all__r   r3   r   r   r   r   r   <module>   s   