
    01i4                        S SK Jr  S SKJrJr  S SKJrJr  S SKJ	r	J
r
  SSKJrJr  S r " S S	\5      r " S
 S\
5      rg)    )annotations)AnyMutableSequence)ConjunctiveGraphGraph)InputSourceParser   )RDFSink
SinkParserc                     g N )argskwargss     U/home/james-whalen/.local/lib/python3.13/site-packages/rdflib/plugins/parsers/trig.pybecauseSubGraphr      s        c                  B    \ rS rSrSS jr        SS jrS	S jrSrg)
TrigSinkParser   c                <   U R                  X5      nUS:  a  U$ U R                  X5      nUS:  a  U$ U R                  X5      nUS:  a  U$ U R                  X5      nUS:  a  U R	                  X5      $ U R                  X5      nUS:  a  U R	                  X5      $ U$ )Nr   )	skipSpacegraphsparqlDirective	directivecheckDot	statement)selfargstrhijs        r   directiveOrStatement#TrigSinkParser.directiveOrStatement   s     NN6%q5HJJv!6H  +6HNN6%6==++NN6%6==++r   c                .   U R                  X5      nUS:  a  U$ UnU R                  XU5      nUS:  a  U$ X   S:X  aX  U R                  XS-   5      nUS:  a  U R                  XS5        X   S:X  a$  UR                  U R	                  5       5        US-   $ g)Nr   [r
   zExpected ] got EOF])r   uri_ref2	BadSyntaxappend	blankNode)r   r    r"   resr#   s        r   labelOrSubjectTrigSinkParser.labelOrSubject)   s     NN6%q5HMM&S)6H9v1u-A1uv*>?yC

4>>+,1ur   c                   SnU R                  SX5      nUS:  a  UnSn/ nU R                  XU5      nUS:  a  US   nUnO:U(       a  U R                  XS5        O U R                  R                  R
                  nU R                  X5      nUS:  a  U R                  XS5        XUS-    S:X  a-  U R                  XS-   5      nUS:  a  U R                  XS	5        OUnXUS-    S
:w  a  gUS-   nU R                  b  U R                  XS5        U R                  nU R                  U l        U R                  n[        U l	        U R                  R                  W5      U l         U R                  X5      nUS:  a  U R                  XS5        XUS-    S:X  a  US-   nO+U R                  X5      nUS:  a  U R                  XS5        Me  U R                  U l        Xl	        Xpl        U$ )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)   zNested graphs are not allowedzneeded '}', found end.}zexpected statement or '}')	sparqlTokr/   r+   _storer   
identifierr   _context_parentContext_reason2r   newGraphr$   )	r   r    r"   need_graphidr#   rr   oldParentContextreason2s	            r   r   TrigSinkParser.graph>   s    NN7F.6AL"$1-6aDEANN6&TUKK%%00ENN6%q5NN6&EFa!e#v1u-A1uv*HIAa!e#E==$NN6&EF.."mm--',,U3v)A1uv*BC!a% C'E))&4A1uv*EF  ++.r   )r9   r:   r;   N)r    strr!   intreturnrC   )r    rB   r"   rC   r.   zMutableSequence[Any]rD   rC   )r    rB   r"   rC   rD   rC   )__name__
__module____qualname____firstlineno__r$   r/   r   __static_attributes__r   r   r   r   r      s2    2!(<	*Fr   r   c                  ,    \ rS rSrSrS rSSS jjrSrg)	
TrigParser   z
An RDFLib parser for TriG

c                    g r   r   )r   s    r   __init__TrigParser.__init__   s    r   c                Z   US;  a  [        SU-  5      eUR                  R                  (       d   S5       e[        UR                  UR                  S9nX$l        UR                  Ul        [        U5      nUR                  UR                  5       =(       d    UR                  5       =(       d    S5      n[        XVSS9nUR                  5       nU(       d  UR                  5       nUR                  U5        UR                  R!                  5        H  u  pUR#                  X5        M     g )N)Nutf-8)z%TriG files are always utf-8 encoded, zI was passed: %sz(TriG Parser needs a context-aware store!)storer8    T)baseURIturtle)	ExceptionrR   context_awarer   r8   default_contextnamespace_managerr   
absolutizegetPublicIdgetSystemIdr   getCharacterStreamgetByteStream
loadStream	_bindingsitemsbind)r   sourcer   encoding
conj_graphsinkrT   pstreamprefix	namespaces              r   parseTrigParser.parse   s   ?*M  {{((T*TT(%EKKEDTDTU
%*" (-'>'>
$z"'' >F$6$6$8>B
 4>**,))+F	V!"!2!2!4FOOF. "5r   r   N)rQ   )rc   r   r   r   rd   rB   rD   None)rE   rF   rG   rH   __doc__rN   rk   rI   r   r   r   rK   rK      s    
/ /r   rK   N)
__future__r   typingr   r   rdflib.graphr   r   rdflib.parserr   r	   	notation3r   r   r   r   rK   r   r   r   <module>rt      s4    " ' 0 - *	uZ up(/ (/r   