§
    kÃ¿a`  ã                   óŒ   — d Z ddlmZmZmZ ddlmZmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlmZmZ ddlZ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.
é    )ÚIOÚOptionalÚUnion)ÚGraphÚConjunctiveGraph)ÚLiteralÚURIRefÚNodeÚBNode)Ú
Serializer)ÚRDFÚXSDNÚHextuplesSerializerc                   ó~   — e Zd ZdZdeeef         fd„Z	 	 ddee	         de
e         de
e         fd	„Zd
„ Zd„ Zd„ ZdS )r   z3
    Serializes RDF graphs to NTriples format.
    Ústorec                 ó>  — |  t          |t          ¦  «        rat          |                     ¦   «         ¦  «        | _        |j        r,|j        | _        | j                             |j        ¦  «         nd | _        n|g| _        d | _        t          j        | |¦  «         d S ©N)Ú
isinstancer   ÚlistÚcontextsÚdefault_contextÚappendr   Ú__init__)Úselfr   s     úA/usr/lib/python3/dist-packages/rdflib/plugins/serializers/hext.pyr   zHextuplesSerializer.__init__   s›   € ØÐ,Ý�eÕ-Ñ.Ô.ð 		(Ý  §¢Ñ!1Ô!1Ñ2Ô2ˆDŒMØÔ$ð ,Ø',Ô'<�Ô$Ø”×$Ò$ UÔ%:Ñ;Ô;Ð;Ð;à'+�Ô$Ð$à"˜GˆDŒMØ#'ˆDÔ åÔ˜D %Ñ(Ô(Ð(Ð(Ð(ó    Núutf-8ÚstreamÚbaseÚencodingc                 ó@  — |�t          j        d¦  «         |dvrt          j        d|› d�¦  «         | j        j        du rt	          d¦  «        ‚| j        D ]F}|D ]A}|                      ||¦  «        }|�'|                     |                     ¦   «         ¦  «         ŒBŒGd 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   Ú	_hex_lineÚwriteÚencode)r   r   r   r    ÚkwargsÚcontextÚtripleÚhls           r   Ú	serializezHextuplesSerializer.serialize#   sæ   € ð ÐÝŒMð+ñô ð ð
 ˜?Ð*Ð*ÝŒMð;Ø!)ð;ð ;ð ;ñô ð ð Œ:Ô# tÐ+Ð+ÝØPñô ð ð ”}ð 	.ð 	.ˆGØ!ð .ð .�Ø—^’^ F¨GÑ4Ô4�Ø�>Ø—L’L §¢¡¤Ñ-Ô-Ð-øð.ð	.ð 	.r   c                 ó  — t          |d         t          t          f¦  «        �r]t          |d         t          ¦  «        r|d         n|                      |d         ¦  «        }t          |d         t          ¦  «        rd}n~t          |d         t          ¦  «        rd}n`t          |d         t          ¦  «        rC|d         j        �|d         j        › }n)|d         j        �t          j        }nt          j
        }nd S t          |d         t          ¦  «        r|d         j        �|d         j        › }nd}nd}d|                      |d         ¦  «        ›d|d         ›d|›d|›d|›d|                      |¦  «        ›d	�S d S )
Nr   é   ÚglobalIdÚlocalIdÚ z["z", "é   z"]
)r   r	   r   r   Ú
_iri_or_bnÚdatatypeÚlanguager   Ú
langStringr   ÚstringÚ_context)r   r,   r+   Úvaluer6   r7   s         r   r'   zHextuplesSerializer._hex_lineB   s‘  € ÝØ�1ŒI�¥�ñ
ô 
ñ .	õ ˜f Qœi­Ñ1Ô1ð0��q”	�	à—_’_ V¨A¤YÑ/Ô/ð õ ˜& œ)¥VÑ,Ô,ð à%��Ý˜F 1œI¥uÑ-Ô-ð à$��Ý˜F 1œI¥wÑ/Ô/ð 	Ø˜!”9Ô%Ð1Ø"(¨¤)Ô"4Ð6�H�Hà˜a”yÔ)Ð5Ý#&¤>˜˜å#&¤:˜˜à�tõ ˜& œ)¥WÑ-Ô-ð Ø˜!”9Ô%Ð1Ø"(¨¤)Ô"4Ð6�H�Hà!�H�Hà�øð —’  q¤	Ñ*Ô*Ð*Ð*Ø�q”	�	�	Ø��Ø��Ø��Ø—’˜gÑ&Ô&Ð&Ð&ðð ð �4r   c                 óŠ   — t          |t          ¦  «        r|› S t          |t          ¦  «        r|                     ¦   «         › S d S r   )r   r	   r   Ún3)r   Úi_s     r   r5   zHextuplesSerializer._iri_or_bns   sB   € Ý�b�&Ñ!Ô!ð 	Ø�7ˆNÝ˜�EÑ"Ô"ð 	Ø—e’e‘g”g�<Ðà�4r   c                 ó|   — | j         €dS |j        dk    rdS |�| j         �|j        | j         j        k    rdS |j        S )Nr3   zurn:x-rdflib:default)r   Ú
identifier)r   r+   s     r   r:   zHextuplesSerializer._context{   sT   € ØÔÐ'Ø�2ØÔÐ!7Ò7Ð7Ø�2ØÐ  TÔ%9Ð%EØÔ! TÔ%9Ô%DÒDÐDØ�rØÔ!Ð!r   r"   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   Úbytesr   Ústrr.   r'   r5   r:   © r   r   r   r      s»   € € € € € ðð ð)˜e EÐ+;Ð$;Ô<ð )ð )ð )ð )ð$ #Ø")ð	.ð .à�5”	ð.ð �sŒmð.ð ˜3”-ð	.ð .ð .ð .ð>/ð /ð /ðbð ð ð"ð "ð "ð "ð "r   )rD   Útypingr   r   r   Úrdflib.graphr   r   Úrdflib.termr   r	   r
   r   Úrdflib.serializerr   Úrdflib.namespacer   r   r#   Ú__all__r   rG   r   r   ú<module>rN      sä   ððð ð 'Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø (Ð (Ð (Ð (Ð (Ð (Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø €€€à Ð
!€ðt"ð t"ð t"ð t"ð t"˜*ñ t"ô t"ð t"ð t"ð t"r   