
    Pi}                        d Z ddlmZ ddlZddl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mZmZ ddlmZmZ ddlmZ ddlmZmZmZmZ 	 ddlZd	Zn# e$ r dZd
ZY nw xY wdgZ  G d de          Z!dS )z~
HextuplesSerializer RDF graph serializer for RDFLib.
See <https://github.com/ontola/hextuples> for details about the format.
    )annotationsN)IOAnyCallableListOptionalTypeUnioncast)DATASET_DEFAULT_GRAPH_IDConjunctiveGraphDatasetGraph)RDFXSD)
Serializer)BNodeIdentifiedNodeLiteralURIRefTFHextuplesSerializerc                  f     e Zd ZU dZded<   ded<   d fdZdd	Z	 	 dd dZd!dZd Z	d"dZ
 xZS )#r   z3
    Serializes RDF graphs to NTriples format.
    z"List[Union[Graph, IdentifiedNode]]contextsr   dumpsstore'Union[Graph, Dataset, ConjunctiveGraph]c                R   t           rt          j        d          | _        t          j        d          | _        t          j        d          | _        t          j        dt          j                            d          z   dz             | _	        t          j        dt          j                            d          z   dz             | _        n9d| _        d| _        d| _        t          j         | _	        t          j         | _        t          | |                               |           S )	Ns	   "localId"s
   "globalId"s   ""   "utf-8localIdglobalId )_HAS_ORJSONorjsonFragmentstr_local_idstr_global_idemptyr   
langStringencodelang_strr   string
xsd_stringsuper__new__)clsr   	__class__s     s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/serializers/hext.pyr/   zHextuplesSerializer.__new__$   s     	-060M0MC171O1OC)/)?)?CI,2Os~,,W555<- -CL /5osz((111D8/ /CNN  )C *CCI!n.CL #
_CNS#&&s+++    c                   |  |  t          |t          t          f          rt          |t                    rt          nt          | _        t	          |                                          | _        |j        r,|j        | _        | j                            |j                   n#d | _        nt          | _        |g| _        d | _        t          j
        | |           d S N)
isinstancer   r   
graph_typelistr   default_contextappendr   r   __init__)selfr   s     r2   r;   zHextuplesSerializer.__init__7   s    DReg'7899 	(%eW55K;K O !!1!122DM$ ,','<$$$U%:;;;;'+$$#DO"GDM#'D D%(((((r3   Nr   stream	IO[bytes]baseOptional[str]encodingkwargsr   returnNonec                X   |t          j        d           |dvrt          j        d| d           | j        j        du rt	          d          | j        D ]}|D ]}t          t          t          t          f         | j
        t          u r| j        nHt          r-t          j        d|                     |          z   dz             n|                     |                    }|                     ||          }|0|                    t          r|n|                                           Όd S )NzIbase has no meaning for Hextuples serialization. I will ignore this valueNr   z8Hextuples files are always utf-8 encoded. I was passed: z*, but I'm still going to use utf-8 anyway!Tz>Hextuple serialization can't (yet) handle formula-aware stores")warningswarnr   formula_aware	Exceptionr   r   r
   strbytesr7   r   r(   r#   r$   r%   _context_str	_hex_linewriter*   )	r<   r=   r?   rA   rB   contexttriplecontext_strhls	            r2   	serializezHextuplesSerializer.serializeK   so    M+  
 ?**M;!); ; ;   :#t++P  
 } 	E 	EG! E E ##u*%  ?e33 

  +<FOC$2C2CG2L2L,Ls,RSSS!%!2!27!;!;  ^^FK88>LL{!C		DDD#E	E 	Er3   rS   Union[bytes, str]c                \   t          |d         t          t          f          rt          |d         t                    r|d         n|                     |d                   }t          |d         t                    r| j        }nyt          |d         t                    r| j        }nVt          |d         t                    r9|d         j        |d         j         }n|d         j        | j	        }n
| j
        }nd S t          |d         t                    r$|d         j        |d         j         }n| j        }n| j        }|                     |d                   |d         ||||g}t          r!t          j        |t          j                  }nt!          j        |          dz   }|S d S )Nr         )option
)r6   r   r   r   
_iri_or_bnr'   r&   datatypelanguager+   r-   r(   r#   r$   r   OPT_APPEND_NEWLINEjson)r<   rR   rS   valuer]   r^   	line_listoutlines           r2   rO   zHextuplesSerializer._hex_liney   s   1I
 
 3	 fQi110q		__VAY//  &)V,, -F1Iu-- ,F1Iw// 	!9%1"()"46HHay)5#'=#'?t &)W-- &!9%1"()"46HH#zHH:q	**q	I  7 ,y9RSSS*Y//$6N4r3   c                    t          |t                    r| S t          |t                    r|                                 S d S r5   )r6   r   r   n3)r<   i_s     r2   r\   zHextuplesSerializer._iri_or_bn   sB    b&!! 	7NE"" 	eegg<4r3   rQ   Union[Graph, IdentifiedNode]rL   c                   t          |t                    r|j        n|}|t          k    rdS | j        St          | j        t
                    r|| j        k    rdS t          | j        t                    r|| j        j        k    rdS | j        t          u rdS t          |t                    r| n|                                S )Nr"   )	r6   r   
identifierr   r9   r   r7   r   re   )r<   rQ   context_identifiers      r2   rN   z HextuplesSerializer._context_str   s    ",We"<"<IG' 	 !9992+4/@@	&$*>>>r4/77&$*>*IIIr?e##2 ,f55)!###&&((	
r3   )r   r   rF   )
r=   r>   r?   r@   rA   r@   rB   r   rC   rD   )rS   rV   )rQ   rg   rC   rL   )__name__
__module____qualname____doc____annotations__r/   r;   rU   rO   r\   rN   __classcell__)r1   s   @r2   r   r      s           1000OOO, , , , , ,&) ) ) ). #")	,E ,E ,E ,E ,E\4 4 4 4l  
 
 
 
 
 
 
 
r3   )"rn   
__future__r   r`   rH   typingr   r   r   r   r   r	   r
   r   rdflib.graphr   r   r   r   rdflib.namespacer   r   rdflib.serializerr   rdflib.termr   r   r   r   r$   r#   ImportError__all__r    r3   r2   <module>rz      si   
 # " " " " "   G G G G G G G G G G G G G G G G G G G G S S S S S S S S S S S S % % % % % % % % ( ( ( ( ( ( > > > > > > > > > > > >MMMKK   FKKK !
!s
 s
 s
 s
 s
* s
 s
 s
 s
 s
s   A 	AA