
    i                        d Z ddlmZ ddlmZ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mZ erddlmZmZ dgZ G d	 de      Zy
)zb
Trig RDF graph serializer for RDFLib.
See <http://www.w3.org/TR/trig/> for syntax specification.
    )annotations)IOTYPE_CHECKINGAnyDictListOptionalTupleUnion)ConjunctiveGraphGraph)TurtleSerializer)BNodeNode)_ContextType_SubjectTypeTrigSerializerc                  b     e Zd ZdZdZd fdZddZd fdZ	 	 	 d		 	 	 	 	 	 	 	 	 	 	 d
dZ xZ	S )r   trigz    c                l   |  |j                   rt        rt        |t              sJ t	        |j                               | _        |j                  j                  | _        |j                  r5| j
                  j                  |j                         n|g| _        d | _        t        t        | /  |       y N)context_awarer   
isinstancer   listcontextsdefault_context
identifierappendsuperr   __init__)selfstore	__class__s     NC:\Projects\mas-dev\.venv\Lib\site-packages\rdflib/plugins/serializers/trig.pyr    zTrigSerializer.__init__   s    !%)9::: !12DM#(#8#8#C#CD $$$$U%:%:;"GDM#'D nd,U3    c                   | j                   D ]  }t        |      dk(  r|| _        | j                  |j                  d       i | _        |D ]  }| j                  |        | j
                  j                         D ]  }| j                  |xx   dz  cc<    | j                         | j
                  f| j                  |<    y )Nr   F   )r   lenr"   getQNamer   	_subjectspreprocessTriplekeys_referencesorderSubjects	_contexts)r!   contexttriplesubjects       r$   
preprocesszTrigSerializer.preprocess'   s    }}G7|q  DJMM',,e4DN!%%f- "  >>..0  )Q.) 1 (,'9'9';T^^&LDNN7# %r%   c                8    t         t        |           i | _        y r   )r   r   resetr/   )r!   r#   s    r$   r5   zTrigSerializer.reset9   s    nd)+  	r%   c                   | j                          || _        ||| _        n1| j                  j                  | j                  j                  | _        ||| _        | j                          | j                          d}| j                  j                         D ]y  \  }\  }}	|si | _	        || _        |	| _
        | j                  r<|j                  | j                  k(  r#| j                  | j                         dz          nt        |j                  t               r|j                  j#                         }
n8| j%                  |j                  d      }
|
|j                  j#                         }
| j                  | j                         d|
z  z          | xj&                  dz  c_        |D ]>  }| j)                  |      r|rd}| j+                  |      s+|r.| j                  d       @ | xj&                  dz  c_        | j                  d       | | j-                          |j                  dj/                  d             y )	NTz
{Fz
%s {r'   
z}
zlatin-1)r5   streambaser"   	_spaciousr3   startDocumentr/   items_serializedr*   r   r   writeindentr   r   n3r)   depthisDone	statementendDocumentencode)r!   r8   r9   encodingspaciouskwargs	firstTimer"   ordered_subjectssubjectsirir2   s               r$   	serializezTrigSerializer.serialize@   s    	

DIZZ__(

DI%DN	37>>3G3G3I/E/$h#!DDJ%DN##(8(8D<P<P(P

4;;=501 e..6**--/C --(8(8%@C{#..113

4;;=8c>9:JJ!OJ+;;w' %I>>'*9JJt$ , JJ!OJJJu= 4J@ 	T[[+,r%   )r"   zUnion[Graph, ConjunctiveGraph])returnNone)NNN)r8   z	IO[bytes]r9   Optional[str]rF   rP   rG   zOptional[bool]rH   r   rN   rO   )
__name__
__module____qualname__
short_nameindentStringr    r3   r5   rM   __classcell__)r#   s   @r$   r   r      sg    JL4M$ #"&#'9-9- 9-  	9-
 !9- 9- 
9-r%   N)__doc__
__future__r   typingr   r   r   r   r   r	   r
   r   rdflib.graphr   r   !rdflib.plugins.serializers.turtler   rdflib.termr   r   r   r   __all__r    r%   r$   <module>r_      s>   
 # M M M 0 > #7
e-% e-r%   