
    Pi4                        d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	m
Z
 ddlmZmZ d Z G d d	e          Z G d
 de
          ZdS )    )annotations)AnyMutableSequence)ConjunctiveGraphGraph)InputSourceParser   )RDFSink
SinkParserc                     d S N )argskwargss     o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/parsers/trig.pybecauseSubGraphr      s    D    c                  &    e Zd ZddZdd
ZddZdS )TrigSinkParserargstrstrhintreturnc                   |                      ||          }|dk     r|S |                     ||          }|dk    r|S |                     ||          }|dk    r|S |                     ||          }|dk    r|                     ||          S |                     ||          }|dk    r|                     ||          S |S )Nr   )	skipSpacegraphsparqlDirective	directivecheckDot	statement)selfr   r   ijs        r   directiveOrStatementz#TrigSinkParser.directiveOrStatement   s     NN61%%q55HJJvq!!66H  ++66HNN61%%66==+++NN61%%66==+++r   r$   resMutableSequence[Any]c                x   |                      ||          }|dk     r|S |}|                     |||          }|dk    r|S ||         dk    rn|                      ||dz             }|dk     r|                     ||d           ||         dk    r,|                    |                                            |dz   S dS )Nr   [r
   zExpected ] got EOF])r   uri_ref2	BadSyntaxappend	blankNode)r#   r   r$   r'   r%   s        r   labelOrSubjectzTrigSinkParser.labelOrSubject)   s     NN61%%q55HMM&!S))66H!9vq1u--A1uuvq*>???ayC

4>>++,,,1urr   c                   d}|                      d||          }|dk    r|}d}g }|                     |||          }|dk    r|d         }|}n+|r|                     ||d           n| j        j        j        }|                     ||          }|dk     r|                     ||d           |||dz            dk    r7|                     ||dz             }|dk     r|                     ||d	           n|}|||dz            d
k    rdS |dz   }| j        |                     ||d           | j        }| j        | _        | j	        }t          | _	        | j                            |          | _        	 |                     ||          }|dk     r|                     ||d           |||dz            dk    r|dz   }n4|                     ||          }|dk     r|                     ||d           ~| j        | _        || _	        || _        |S )z
        Parse trig graph, i.e.

           <urn:graphname> = { .. triples .. }

        return -1 if it doesn't look like a graph-decl
        raise Exception if it looks like a graph, but isn't.
        FGRAPHr   Tz,GRAPH keyword must be followed by graph namezEOF found when expected graphr
   =zEOF found when expecting '{'{r,   NzNested graphs are not allowedzneeded '}', found end.}zexpected statement or '}')	sparqlTokr1   r.   _storer   
identifierr   _context_parentContext_reason2r   newGraphr&   )	r#   r   r$   need_graphidr%   rr   oldParentContextreason2s	            r   r   zTrigSinkParser.graph>   sR    NN7FA..66AL"$1--66aDEAA 	1NN61&TUUUUK%0ENN61%%q55NN61&EFFF!a!e)##vq1u--A1uuvq*HIIIA!a!e)##2E=$NN61&EFFF."m-',,U33	Gvq))A1uuvq*BCCCa!a%i C''E))&!44A1uuvq*EFFF	G +.r   N)r   r   r   r   r   r   )r   r   r$   r   r'   r(   r   r   )r   r   r$   r   r   r   )__name__
__module____qualname__r&   r1   r   r   r   r   r   r      sV           2   *F F F F F Fr   r   c                  "    e Zd ZdZd ZdddZdS )
TrigParserz$
    An RDFLib parser for TriG

    c                    d S r   r   )r#   s    r   __init__zTrigParser.__init__   s    r   utf-8sourcer   r   r   encodingr   r   Nonec                ^   |dvrt          d|z            |j        j        s
J d            t          |j        |j                  }||_        |j        |_        t          |          }|                    |	                                p|
                                pd          }t          ||d          }|                                }|s|                                }|                    |           |j                                        D ]\  }	}
|                    |	|
           d S )N)NrI   )z%TriG files are always utf-8 encoded, zI was passed: %sz(TriG Parser needs a context-aware store!)storer9    T)baseURIturtle)	ExceptionrN   context_awarer   r9   default_contextnamespace_managerr   
absolutizegetPublicIdgetSystemIdr   getCharacterStreamgetByteStream
loadStream	_bindingsitemsbind)r#   rJ   r   rK   
conj_graphsinkrP   pstreamprefix	namespaces              r   parsezTrigParser.parse   sN   ?**M   {(TT*TTT(%EKEDTUUU
%*
" (-'>
$z""''  >F$6$6$8$8>B
 
 4>>>**,, 	,))++F	V!"!2!2!4!4 	/ 	/FIOOFI....	/ 	/r   N)rI   )rJ   r   r   r   rK   r   r   rL   )rB   rC   rD   __doc__rH   re   r   r   r   rF   rF      sF         
  / / / / / / /r   rF   N)
__future__r   typingr   r   rdflib.graphr   r   rdflib.parserr   r	   	notation3r   r   r   r   rF   r   r   r   <module>rl      s    " " " " " " ' ' ' ' ' ' ' ' 0 0 0 0 0 0 0 0 - - - - - - - - * * * * * * * *	 	 	u u u u uZ u u up(/ (/ (/ (/ (/ (/ (/ (/ (/ (/r   