
    PiX1                       d Z ddlmZ ddlZddlZddlmZmZmZ ddl	m
Z
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 dd	lmZ dd
lmZm Z  ddlm Z! erddl"Z#ddl$m%Z%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          Z0 ej-        d          Z1 ej-        e*          Z2 ej-        d          Z3 ej-        e+e,z             Z4dZ5dZ6 G d d          Z7 ej-        d          Z8 ej-        d          Z9 ej-        d          Z:d+d!Z; ej-        d"          Z<d,d$Z=ee>ef         Z? G d% d&          Z@ G d' d(          ZA G d) d*e          ZBdS )-zX
N-Triples Parser
License: GPL 2, W3C, BSD, or MIT
Author: Sean B. Palmer, inamidst.com
    )annotationsN)BytesIOStringIO
TextIOBase)	IOTYPE_CHECKINGAnyMatchMutableMappingOptionalPatternTextIOUnion)_string_escape_mapdecodeUnicodeEscape)ParserError)InputSourceParser)BNode)LiteralURIRef)r   )Graph_ObjectType_PredicateType_SubjectType)unquoteuriquoteW3CNTriplesParserNTGraphSinkNTParser	DummySinkz<([^:]+:[^\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 )r!   c                    d| _         d S )Nr   )length)selfs    s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-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.tripleA   s%    qaAr(   N)__name__
__module____qualname__r'   r0    r(   r&   r!   r!   =   s2              r(   r!   z([\x20\x21\x23-\x5B\x5D-\x7E]+)z\\([tbnrf"'\\])z'\\u([0-9A-Fa-f]{4})|\\U([0-9A-Fa-f]{8})r-   strreturnc                   t           s<t          | t                    rt          |           } n|                     d          } | S g }| rt
                              |           }|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: %08X\zIllegal escape at: %s...
   zIllegal literal character: %rr    )validate
isinstancer5   r   decoder_safematchendappendgroupr_quotr   	r_uniquotgroupsint
ParseErrorchr
startswithjoin)r-   resultmuU	codepoints         r&   r   r   K   s    "a 	+#A&&AA)**A 	IQA aeeggiiLaggajj)))QA abbE0<===""A 
IaeeggiiLxxzz1QOO	x''$%AI%MNNNc)nn----d## I !;af!DEEE !@1Q4!GHHH1  	I2 wwvr(   z([\x80-\xFF])uric                L    t           s| S t                              d |           S )Nc                L    dt          |                     d                    z  S )Nz%%%02Xr*   )ordrD   )rN   s    r&   <lambda>zuriquote.<locals>.<lambda>y   s    hQWWQZZ&@ r(   )r=   r_hibytesub)rR   s    r&   r   r   u   s(     G
||@@#FFFr(   c                      e Zd ZdZdZ	 	 d*d+dZ	 	 d,d-dZd.dZd/dZd0d1dZ	d2dZ
d3dZd0d4d Zd4d!Z	 d0d5d#Zd6d%Z	 d0d7d'Zd8d)ZdS )9r   a  An N-Triples Parser.

    This is a legacy-style Triples parser for NTriples provided by W3C

    Example:
        ```python
        p = W3CNTriplesParser(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
    `W3CNTriplesParser`.
    )
_bnode_idssinkbufferfileline	skolemizeNr[   'Optional[Union[DummySink, NTGraphSink]]bnode_contextOptional[_BNodeContextType]c                    d| _         ||| _        ni | _        |  ||| _        nt                      | _        d | _        d | _        d| _        d S )NFr<   )r_   rZ   r[   r!   r\   r]   r^   )r%   r[   ra   s      r&   r'   zW3CNTriplesParser.__init__   sZ    
 $+DOO DO0DII!DI%)BF	#%			r(   Ff-Union[TextIO, IO[bytes], codecs.StreamReader]r_   boolr6   Union[DummySink, NTGraphSink]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.

        Args:
            f: The N-Triples source
            bnode_context: A dict mapping blank node identifiers (e.g., `a` in `_:a`)
                to [`BNode`][rdflib.term.BNode] instances. An empty dict can be
                passed in to define a distinct context for a given call to
                `parse`.
            skolemize: Whether to skolemize blank nodes

        Returns:
            The sink containing the parsed triples
        readz)Item to parse must be a file-like object.encoding
charbufferutf-8r<   TN)ra   zInvalid line: {})hasattrrI   codecs	getreaderr_   r]   r\   readliner^   	parselineformatr[   )r%   rd   ra   r_   s       r&   parsezW3CNTriplesParser.parse   s   ( q&!! 	JHIIIq*%% 	-ga.F.F 	-) ))!,,A"		GDIy G];;;; G G G !3!:!:49!E!EFFFG	G ys   B, ,2Cr-   Union[bytes, bytearray, str]Nonec                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.rl   N)
r>   r5   bytes	bytearrayrI   rn   ro   r   r   rs   )r%   r-   kwargsrd   s       r&   parsestringzW3CNTriplesParser.parsestring   s    !c5)455 	IGHHHa%+,, 	) ))'!**55AAA
1r(   Optional[str]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\   r]   ri   bufsizr_linerA   rB   rD   isspace)r%   r\   rN   s      r&   rp   zW3CNTriplesParser.readline   s     { 	!Y^^F++F t DK	&T[))A &"k!%%''))4wwqzz! //  dk&9&9&;&;  dNFF  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_wspacer^   rK   subject	r_wspaces	predicateobjectr_tailrI   rr   r[   r0   )r%   ra   r   r   object_s        r&   rq   zW3CNTriplesParser.parseline   s    	 	di22377 	F,,}--NN$$	++m,,9 	G3::49EEFFF	)W55555r(   tokenr5   c                6    | j                             |          S N)r^   rK   )r%   r   s     r&   peekzW3CNTriplesParser.peek  s    y##E***r(   patternPattern[str]
Match[str]c                    |                     | j                  }|st          d|j        d| j                  | j        |                                d          | _        |S )NzFailed to eat z at )rA   r^   rI   r   rB   )r%   r   rN   s      r&   r   zW3CNTriplesParser.eat
  s^    MM$)$$ 	V *$))TUUUIaeeggii(	r(   Union[bNode, URIRef]c                z    |                                  p|                     |          }|st          d          |S )Nz Subject must be uriref or nodeID)urirefnodeidrI   )r%   ra   subjs      r&   r   zW3CNTriplesParser.subject  s=    {{}}:M : : 	A?@@@r(   c                P    |                                  }|st          d          |S )NzPredicate must be uriref)r   rI   )r%   preds     r&   r   zW3CNTriplesParser.predicate  s+    {{}} 	97888r(   Union[URI, bNode, Literal]c                    |                                  p(|                     |          p|                                 }|du rt          d          |S )NFzUnrecognised object type)r   r   literalrI   )r%   ra   objts      r&   r   zW3CNTriplesParser.object   sL     {{}}LM : :Ldllnn5==7888r(   Union[te.Literal[False], URI]c                    |                      d          rZ|                     t                                        d          }t	          |          }t          |          }t          |          S dS )N<r*   F)r   r   r_urirefrD   r   r   URI)r%   rR   s     r&   r   zW3CNTriplesParser.uriref(  sY    99S>> 	((8$$**1--C#,,C3--Cs88Our(   $Union[te.Literal[False], bNode, URI]c                   |                      d          r| j        rN|                     t                                        d          }t          |                                          S || j        }|                     t                                        d          }|                    |d           }|t          |          S t                      }|||<   |S dS )N_r*   F)r   r_   r   r_nodeidrD   bNoderZ   get)r%   ra   bnode_idnew_idbnodes        r&   r   zW3CNTriplesParser.nodeid0  s     99S>> 	!~ !88H--33A66X00222 !($(OM88H--33A66&**8T::% ==( "GGE.3M(+ Lur(   !Union[te.Literal[False], Literal]c                h   |                      d          r|                     t                                                    \  }}}|r|}nd }|r.t	          |          }t          |          }t          |          }nd }|r|rt          d          t	          |          }t          |||          S dS )N"z)Can't have both a language and a datatypeF)	r   r   	r_literalrG   r   r   r   rI   r   )r%   litlangdtypes       r&   r   zW3CNTriplesParser.literalI  s    99S>> 	-#xx	2299;;Cu   E

 N N !LMMM#,,C3e,,,ur(   )NN)r[   r`   ra   rb   )NF)rd   re   ra   rb   r_   rf   r6   rg   )r-   rt   r6   ru   )r6   r{   r   )ra   rb   r6   ru   )r   r5   r6   rf   )r   r   r6   r   )r6   r   )ra   rb   r6   r   )r6   r   )ra   rb   r6   r   )r6   r   )r1   r2   r3   __doc__	__slots__r'   rs   rz   rp   rq   r   r   r   r   r   r   r   r   r4   r(   r&   r   r      se          NI 9=59& & & & &2 6:	& & & & &P	  	  	  	 & & & &46 6 6 6 6$+ + + +           <@        <@    2     r(   r   c                  "    e Zd ZdZddZddZdS )r   ggraphr   c                    || _         d S r   r   )r%   r   s     r&   r'   zNTGraphSink.__init__`  s    r(   r-   r   r.   r   r/   r   r6   ru   c                @    | j                             |||f           d S r   )r   addr,   s       r&   r0   zNTGraphSink.triplec  s"    

Aq!9r(   N)r   r   )r-   r   r.   r   r/   r   r6   ru   )r1   r2   r3   r   r'   r0   r4   r(   r&   r   r   ]  sA        I        r(   r   c                  .    e Zd ZdZdZedd            ZdS )r    zParser for the N-Triples format, often stored with the .nt extension.

    See http://www.w3.org/TR/rdf-testcases/#ntriples
    r4   sourcer   r[   r   ry   r	   r6   ru   c                @   |                                 }|sI|                                }t          |t                    r|}n t	          j        d          |          }t          t          |                    } |j        |fi | |	                                 dS )zParse the NT format.

        Args:
            source: The source of NT-formatted data
            sink: Where to send parsed triples
            **kwargs: Additional arguments to pass to `W3CNTriplesParser.parse`
        rl   N)
getCharacterStreamgetByteStreamr>   r   rn   ro   r   r   rs   close)clsr   r[   ry   rd   bparsers          r&   rs   zNTParser.parseo  s     %%'' 	1$$&&A!Z(( 1 .F$W--a00";t#4#455Q!!&!!!						r(   N)r   r   r[   r   ry   r	   r6   ru   )r1   r2   r3   r   r   classmethodrs   r4   r(   r&   r    r    g  sC         
 I   [  r(   r    )r-   r5   r6   r5   )rR   r5   r6   r5   )Cr   
__future__r   rn   reior   r   r   typingr   r   r	   r
   r   r   r   r   r   rdflib.compatr   r   rdflib.exceptionsr   rI   rdflib.parserr   r   rdflib.termr   r   r   r   r   typing_extensionsterdflib.graphr   r   r   r   __all__r   r   litinfocompiler   r   r   r   r   r   r   r~   r=   r!   r@   rE   rF   r   rW   r   r5   _BNodeContextTyper   r   r    r4   r(   r&   <module>r      so    # " " " " "  				 , , , , , , , , , ,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 B A A A A A A A 7 7 7 7 7 7 - - - - - - - - & & & & & & ' ' ' ' ' ' ' ' % % % % % % N""""MMMMMMMMMMMM   
 
'
3f
<u
D	/	0	02:i  BJy!!		+	,	,2:f2:LMMBJw())		        
6	7	7	*	+	+BJABB	$ $ $ $N 2:&''G G G G #3:. [ [ [ [ [ [ [ [|           v     r(   