§
    kÃ¿a;)  ã                   ó�  — d Z ddlZddlZddlmZ ddlmZ ddl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 g d
¢ZdZdZdez   dz   Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        e¦  «        Z ej        d¦  «        Z ej        eez   ¦  «        ZdZ dZ! G d„ de"¦  «        Z#ddddddœZ$ ej        d¦  «        Z% ej        d¦  «        Z& ej        d ¦  «        Z'd!„ Z( ej        d"¦  «        Z)d#„ Z* G d$„ d%e"¦  «        Z+ G d&„ d'e"¦  «        Z, G d(„ d)e¦  «        Z-dS )*zWN-Triples Parser
License: GPL 2, W3C, BSD, or MIT
Author: Sean B. Palmer, inamidst.com
é    N)ÚURIRef)ÚBNode)ÚLiteral)ÚdecodeUnicodeEscape)ÚParserError)ÚParser)ÚStringIOÚ
TextIOBaseÚBytesIO)ÚunquoteÚuriquoteÚW3CNTriplesParserÚNTGraphSinkÚNTParserz<([^:]+:[^\s"<>]*)>z"([^"\\]*(?:\\.[^"\\]*)*)"z&(?:@([a-zA-Z]+(?:-[a-zA-Z0-9]+)*)|\^\^z)?z([^\r\n]*)(?:\r\n|\r|\n)z[ \t]*z[ \t]+z[ \t]*\.[ \t]*(#.*)?z3_:([A-Za-z0-9_:]([-A-Za-z0-9_:\.]*[-A-Za-z0-9_:])?)i   Fc                   ó   — e Zd Zd„ Zd„ ZdS )Ú	DummySinkc                 ó   — d| _         d S )Nr   )Úlength)Úselfs    úA/usr/lib/python3/dist-packages/rdflib/plugins/parsers/ntriples.pyÚ__init__zDummySink.__init__(   s   € ØˆŒˆˆó    c                 óH   — | xj         dz  c_         t          |||¦  «         d S )Né   )r   Úprint©r   ÚsÚpÚos       r   ÚtriplezDummySink.triple+   s%   € ØˆŒ�qÑˆŒÝˆa��A‰Œˆˆˆr   N)Ú__name__Ú
__module__Ú__qualname__r   r    © r   r   r   r   '   s2   € € € € € ðð ð ðð ð ð ð r   r   ú	ú
úú"ú\)ÚtÚnÚrr(   r)   z([\x20\x21\x23-\x5B\x5D-\x7E]+)z\\(t|n|r|"|\\)z!\\u([0-9A-F]{4})|\\U([0-9A-F]{8})c                 óþ  — t           s<t          | t          ¦  «        rt          | ¦  «        } n|                      d¦  «        } | S g }| �r¡t
                               | ¦  «        }|rE| |                     ¦   «         d…         } |                     | 	                    d¦  «        ¦  «         Œdt                               | ¦  «        }|r>| dd…         } |                     t          | 	                    d¦  «                 ¦  «         Œ¾t                               | ¦  «        }|r€| |                     ¦   «         d…         } |                     ¦   «         \  }}t          |p|d¦  «        }|dk    rt          d|z  ¦  «        ‚|                     t!          |¦  «        ¦  «         nG|                      d¦  «        rt          d	| dd
…         z  ¦  «        ‚t          d| d         z  ¦  «        ‚| �°¡d                     |¦  «        S )zUnquote an N-Triples string.zunicode-escapeNr   é   é   iÿÿ zDisallowed codepoint: %08Xr)   zIllegal escape at: %s...é
   zIllegal literal character: %rr   Ú )ÚvalidateÚ
isinstanceÚstrr   ÚdecodeÚr_safeÚmatchÚendÚappendÚgroupÚr_quotÚquotÚ	r_uniquotÚgroupsÚintÚ
ParseErrorÚchrÚ
startswithÚjoin)r   ÚresultÚmÚuÚUÚ	codepoints         r   r   r   6   sÔ  € åð "Ý�a�ÑÔð 	+Ý# AÑ&Ô&ˆAˆAà—’Ð)Ñ*Ô*ˆAàˆàˆØñ 	IÝ—’˜Q‘”ˆAØð Ø�a—e’e‘g”g�i�i”L�Ø—’˜aŸgšg a™jœjÑ)Ô)Ð)Øå—’˜Q‘”ˆAØð Ø�a�b�b”E�Ø—’�d 1§7¢7¨1¡:¤:Ô.Ñ/Ô/Ð/Øå—’ Ñ"Ô"ˆAØð 
IØ�a—e’e‘g”g�i�i”L�Ø—x’x‘z”z‘��1Ý   Q¨™OœO�	Ø˜xÒ'Ð'Ý$Ð%AÀIÑ%MÑNÔNÐNØ—’�c )™nœnÑ-Ô-Ð-Ð-Ø—’˜dÑ#Ô#ð IÝ Ð!;¸aÀÀÀ¼fÑ!DÑEÔEÐEå Ð!@À1ÀQÄ4Ñ!GÑHÔHÐHð1 ñ 	Ið2 �wŠw�v‰ŒÐr   z([\x80-\xFF])c                 óL   — t           s| S t                               d„ | ¦  «        S )Nc                 óL   — dt          |                      d¦  «        ¦  «        z  S )Nz%%%02Xr   )Úordr:   )rE   s    r   ú<lambda>zuriquote.<locals>.<lambda>d   s   €  hµ°Q·W²W¸Q±Z´Z±´Ñ&@€ r   )r2   Úr_hibyteÚsub)Úuris    r   r   r   `   s(   € Ýð GØˆ
å�|Š|Ð@Ð@À#ÑFÔFÐFr   c                   óp   — e Zd ZdZdZdd„Zdd„Zd„ Zd„ Zdd„Z	d	„ Z
d
„ Zdd„Zd„ Zdd„Zd„ Zdd„Zd„ ZdS )r   aï  An N-Triples Parser.
    This is a legacy-style Triples parser for NTriples provided by W3C
    Usage::

          p = NTriplesParser(sink=MySink())
          sink = p.parse(f) # file; use parsestring for a string

    To define a context in which blank node identifiers refer to the same blank node
    across instances of NTriplesParser, pass the same dict as `bnode_context` to each
    instance. By default, a new blank node context is created for each instance of
    `NTriplesParser`.
    )Ú
_bnode_idsÚsinkÚbufferÚfileÚlineNc                 óŒ   — |�|| _         ni | _         |�|| _        nt          ¦   «         | _        d | _        d | _        d| _        d S )Nr1   )rQ   rR   r   rS   rT   rU   )r   rR   Úbnode_contexts      r   r   zW3CNTriplesParser.__init__w   sK   € ØÐ$Ø+ˆDŒOˆOà ˆDŒOàÐØˆDŒIˆIå!™œˆDŒIàˆŒØˆŒ	ØˆŒ	ˆ	ˆ	r   c                 óÄ  — t          |d¦  «        st          d¦  «        ‚t          |d¦  «        s-t          |d¦  «        s t          j        d¦  «        |¦  «        }|| _        d| _        	 |                      ¦   «         | _        | j        €nN	 |                      |¬	¦  «         n5# t          $ r( t          d
 	                    | j        ¦  «        ¦  «        ‚w xY wŒo| j
        S )aÝ  
        Parse f as an N-Triples file.

        :type f: :term:`file object`
        :param f: the N-Triples source
        :type bnode_context: `dict`, optional
        :param bnode_context: a dict mapping blank node identifiers (e.g., ``a`` in ``_:a``)
                              to `~rdflib.term.BNode` instances. An empty dict can be
                              passed in to define a distinct context for a given call to
                              `parse`.
        Úreadz)Item to parse must be a file-like object.ÚencodingÚ
charbufferúutf-8r1   TN)rW   zInvalid line: {})Úhasattrr@   ÚcodecsÚ	getreaderrT   rS   ÚreadlinerU   Ú	parselineÚformatrR   )r   ÚfrW   s      r   ÚparsezW3CNTriplesParser.parse†   sü   € õ �q˜&Ñ!Ô!ð 	JÝÐHÑIÔIÐIå�q˜*Ñ%Ô%ð 	-­g°a¸Ñ.FÔ.Fð 	-à)•Ô  Ñ)Ô)¨!Ñ,Ô,ˆAàˆŒ	ØˆŒð	GØŸš™œˆDŒIØŒyÐ ØðGØ—’¨]�Ñ;Ô;Ð;Ð;øÝð Gð Gð GÝ Ð!3×!:Ò!:¸4¼9Ñ!EÔ!EÑFÔFÐFðGøøøð	Gð ŒyÐs   ÂB% Â%2Cc                 ó0  — t          |t          t          t          f¦  «        st	          d¦  «        ‚t          |t          t          f¦  «        r+ t          j        d¦  «        t          |¦  «        ¦  «        }nt          |¦  «        } | j	        |fi |¤Ž dS )zParse s as an N-Triples string.z(Item to parse must be a string instance.r\   N)
r3   r4   ÚbytesÚ	bytearrayr@   r^   r_   r   r	   rd   )r   r   Úkwargsrc   s       r   ÚparsestringzW3CNTriplesParser.parsestring¦   s�   € å˜!�c¥5­)Ð4Ñ5Ô5ð 	IÝÐGÑHÔHÐHÝ�a�%¥Ð+Ñ,Ô,ð 	Ø)•Ô  Ñ)Ô)­'°!©*¬*Ñ5Ô5ˆAˆAå˜‘”ˆAØˆŒ
�1ÐÐ˜ÐÐÐÐÐr   c                 óÈ  — | j         s*| j                             t          ¦  «        }|sdS || _         	 t                               | j         ¦  «        }|r;| j         |                     ¦   «         d…         | _         |                     d¦  «        S | j                             t          ¦  «        }|s| j                              ¦   «         s|dz  }n|sdS | xj         |z  c_         Œ±)z+Read an N-Triples line from buffered input.NTr   r&   )	rS   rT   rY   ÚbufsizÚr_liner7   r8   r:   Úisspace)r   rS   rE   s      r   r`   zW3CNTriplesParser.readline°   sÜ   € ð Œ{ð 	!Ø”Y—^’^¥FÑ+Ô+ˆFØð Ø�tØ ˆDŒKð	&Ý—’˜Tœ[Ñ)Ô)ˆAØð 
&Ø"œk¨!¯%ª%©'¬'¨)¨)Ô4�”Ø—w’w˜q‘z”zÐ!àœŸš­Ñ/Ô/�Øð   d¤k×&9Ò&9Ñ&;Ô&;ð  à˜d‘N�F�FØð  Ø˜4Ø�”˜vÑ%�”ð	&r   c                 ó,  — |                       t          ¦  «         | j        r| j                             d¦  «        rd S |                      |¦  «        }|                       t
          ¦  «         |                      ¦   «         }|                       t
          ¦  «         |                      |¦  «        }|                       t          ¦  «         | j        r't          d 
                    | j        ¦  «        ¦  «        ‚| j                             |||¦  «         d S )Nú#zTrailing garbage: {})ÚeatÚr_wspacerU   rB   ÚsubjectÚ	r_wspacesÚ	predicateÚobjectÚr_tailr@   rb   rR   r    )r   rW   rr   rt   Úobject_s        r   ra   zW3CNTriplesParser.parselineÈ   së   € Ø�Š•ÑÔÐØ”	ð 	˜dœi×2Ò2°3Ñ7Ô7ð 	ØˆFà—,’,˜}Ñ-Ô-ˆØ�Š•ÑÔÐà—N’NÑ$Ô$ˆ	Ø�Š•ÑÔÐà—+’+˜mÑ,Ô,ˆØ�Š•ÑÔÐàŒ9ð 	GÝÐ3×:Ò:¸4¼9ÑEÔEÑFÔFÐFØŒ	×Ò˜ )¨WÑ5Ô5Ð5Ð5Ð5r   c                 ó6   — | j                              |¦  «        S ©N)rU   rB   )r   Útokens     r   ÚpeekzW3CNTriplesParser.peekÚ   s   € ØŒy×#Ò# EÑ*Ô*Ð*r   c                 óÈ   — |                      | j        ¦  «        }|st          d|j        ›d| j        ›�¦  «        ‚| j        |                     ¦   «         d …         | _        |S )NzFailed to eat z at )r7   rU   r@   Úpatternr8   )r   r}   rE   s      r   rp   zW3CNTriplesParser.eatÝ   s^   € Ø�MŠM˜$œ)Ñ$Ô$ˆØð 	Võ �*¸¼¸¸È$Ì)È)ÐTÑUÔUÐUØ”I˜aŸeše™gœg˜i˜iÔ(ˆŒ	Øˆr   c                 óz   — |                       ¦   «         p|                      |¦  «        }|st          d¦  «        ‚|S )Nz Subject must be uriref or nodeID)ÚurirefÚnodeidr@   )r   rW   Úsubjs      r   rr   zW3CNTriplesParser.subjectæ   s=   € à�{Š{‰}Œ}Ð: §¢¨MÑ :Ô :ˆØð 	AÝÐ?Ñ@Ô@Ð@Øˆr   c                 óP   — |                       ¦   «         }|st          d¦  «        ‚|S )NzPredicate must be uriref)r   r@   )r   Úpreds     r   rt   zW3CNTriplesParser.predicateí   s+   € Ø�{Š{‰}Œ}ˆØð 	9ÝÐ7Ñ8Ô8Ð8Øˆr   c                 ó¦   — |                       ¦   «         p(|                      |¦  «        p|                      ¦   «         }|du rt          d¦  «        ‚|S )NFzUnrecognised object type)r   r€   Úliteralr@   )r   rW   Úobjts      r   ru   zW3CNTriplesParser.objectó   sJ   € Ø�{Š{‰}Œ}ÐL §¢¨MÑ :Ô :ÐL¸d¿lºl¹n¼nˆØ�5ˆ=ˆ=ÝÐ7Ñ8Ô8Ð8Øˆr   c                 óä   — |                       d¦  «        rZ|                      t          ¦  «                             d¦  «        }t	          |¦  «        }t          |¦  «        }t          |¦  «        S dS )Nú<r   F)r{   rp   Úr_urirefr:   r   r   ÚURI)r   rO   s     r   r   zW3CNTriplesParser.urirefù   sY   € Ø�9Š9�S‰>Œ>ð 	Ø—(’(�8Ñ$Ô$×*Ò*¨1Ñ-Ô-ˆCÝ˜#‘,”,ˆCÝ˜3‘-”-ˆCÝ�s‘8”8ˆOØˆur   c                 ó  — |                       d¦  «        rr|€| j        }|                      t          ¦  «                             d¦  «        }|                     |d ¦  «        }|�t          |¦  «        S t          ¦   «         }|||<   |S dS )NÚ_r   F)r{   rQ   rp   Úr_nodeidr:   ÚgetÚbNode)r   rW   Úbnode_idÚnew_idÚbnodes        r   r€   zW3CNTriplesParser.nodeid  s†   € Ø�9Š9�S‰>Œ>ð 	àÐ$Ø $¤�Ø—x’x¥Ñ)Ô)×/Ò/°Ñ2Ô2ˆHØ"×&Ò& x°Ñ6Ô6ˆFØÐ!å˜V‘}”}Ð$õ ™œ�à*/�˜hÑ'Ø�Øˆur   c                 óh  — |                       d¦  «        rœ|                      t          ¦  «                             ¦   «         \  }}}|r|}nd }|r.t	          |¦  «        }t          |¦  «        }t          |¦  «        }nd }|r|rt          d¦  «        ‚t	          |¦  «        }t          |||¦  «        S dS )Nr(   z)Can't have both a language and a datatypeF)	r{   rp   Ú	r_literalr>   r   r   rŠ   r@   r   )r   ÚlitÚlangÚdtypes       r   r…   zW3CNTriplesParser.literal  s¾   € Ø�9Š9�S‰>Œ>ð 	-Ø#Ÿxšx­	Ñ2Ô2×9Ò9Ñ;Ô;ÑˆC��uØð Ø��à�Øð Ý ™œ�Ý  ™œ�Ý˜E™
œ
��à�Øð N˜ð NÝ Ð!LÑMÔMÐMÝ˜#‘,”,ˆCÝ˜3  eÑ,Ô,Ð,Øˆur   )NNry   )r!   r"   r#   Ú__doc__Ú	__slots__r   rd   ri   r`   ra   r{   rp   rr   rt   ru   r   r€   r…   r$   r   r   r   r   g   s  € € € € € ðð ð A€Iðð ð ð ðð ð ð ð@ ð  ð  ð&ð &ð &ð06ð 6ð 6ð 6ð$+ð +ð +ðð ð ðð ð ð ðð ð ðð ð ð ðð ð ðð ð ð ð$ð ð ð ð r   r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )r   ©Úgc                 ó   — || _         d S ry   r›   )r   Úgraphs     r   r   zNTGraphSink.__init__*  s   € ØˆŒˆˆr   c                 ó@   — | j                              |||f¦  «         d S ry   )rœ   Úaddr   s       r   r    zNTGraphSink.triple-  s"   € ØŒ�
Š
�A�q˜!�9ÑÔÐÐÐr   N)r!   r"   r#   r™   r   r    r$   r   r   r   r   '  s7   € € € € € Ø€Iðð ð ðð ð ð ð r   r   c                   ó,   — e Zd ZdZdZed„ ¦   «         ZdS )r   zyparser for the ntriples format, often stored with the .nt extension

    See http://www.w3.org/TR/rdf-testcases/#ntriplesr$   c                 ó@  — |                      ¦   «         }|sI|                     ¦   «         }t          |t          ¦  «        r|}n t	          j        d¦  «        |¦  «        }t          t          |¦  «        ¦  «        } |j        |fi |¤Ž | 	                    ¦   «          dS )a9  
        Parse the NT format

        :type source: `rdflib.parser.InputSource`
        :param source: the source of NT-formatted data
        :type sink: `rdflib.graph.Graph`
        :param sink: where to send parsed triples
        :param kwargs: Additional arguments to pass to `.NTriplesParser.parse`
        r\   N)
ÚgetCharacterStreamÚgetByteStreamr3   r
   r^   r_   r   r   rd   Úclose)ÚclsÚsourcerR   rh   rc   ÚbÚparsers          r   rd   zNTParser.parse8  s£   € ð ×%Ò%Ñ'Ô'ˆØð 	1Ø×$Ò$Ñ&Ô&ˆAå˜!�ZÑ(Ô(ð 1à��ð .•FÔ$ WÑ-Ô-¨aÑ0Ô0�Ý"¥;¨tÑ#4Ô#4Ñ5Ô5ˆØˆŒ�QÐ!Ð!˜&Ð!Ð!Ð!Ø	�Š‰	Œ	ˆ	ˆ	ˆ	r   N)r!   r"   r#   r˜   r™   Úclassmethodrd   r$   r   r   r   r   1  s>   € € € € € ð8ð 8ð €Iàðð ñ „[ðð ð r   r   ).r˜   Úrer^   Úrdflib.termr   rŠ   r   r�   r   Úrdflib.compatr   Úrdflib.exceptionsr   r@   Úrdflib.parserr   Úior	   r
   r   Ú__all__r   r…   ÚlitinfoÚcompilerl   rq   rs   rv   r‰   r�   r”   rk   r2   ru   r   r<   r6   r;   r=   r   rM   r   r   r   r   r$   r   r   ú<module>r´      s“  ðð€ð 
€	€	€	Ø €€€à %Ð %Ð %Ð %Ð %Ð %Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø  Ð  Ð  Ð  Ð  Ð  à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à
QÐ
QÐ
Q€à	€Ø
'€Ø
3°fÑ
<¸uÑ
D€à	ˆŒÐ/Ñ	0Ô	0€Øˆ2Œ:�iÑ Ô €ØˆBŒJ�yÑ!Ô!€	Ø	ˆŒÐ+Ñ	,Ô	,€Øˆ2Œ:�fÑÔ€Øˆ2Œ:ÐLÑMÔM€ØˆBŒJ�w Ñ(Ñ)Ô)€	à	€Ø€ðð ð ð ð �ñ ô ð ð ˜ 4¨c¸Ð>Ð>€Ø	ˆŒÐ6Ñ	7Ô	7€Ø	ˆŒÐ%Ñ	&Ô	&€ØˆBŒJÐ;Ñ<Ô<€	ð$ð $ð $ðN ˆ2Œ:Ð&Ñ'Ô'€ðGð Gð Gð}ð }ð }ð }ð }˜ñ }ô }ð }ð@ð ð ð ð �&ñ ô ð ðð ð ð ð ˆvñ ô ð ð ð r   