
    i4                        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y)    )annotations)AnyMutableSequence)ConjunctiveGraphGraph)InputSourceParser   )RDFSink
SinkParserc                      y N )argskwargss     JC:\Projects\mas-dev\.venv\Lib\site-packages\rdflib/plugins/parsers/trig.pybecauseSubGraphr      s        c                  4    e Zd ZddZ	 	 	 	 	 	 	 	 ddZddZy)TrigSinkParserc                @   | j                  ||      }|dk  r|S | j                  ||      }|dk\  r|S | j                  ||      }|dk\  r|S | j                  ||      }|dk\  r| j	                  ||      S | j                  ||      }|dk\  r| j	                  ||      S |S )Nr   )	skipSpacegraphsparqlDirective	directivecheckDot	statement)selfargstrhijs        r   directiveOrStatementz#TrigSinkParser.directiveOrStatement   s     NN61%q5HJJvq!6H  +6HNN61%6==++NN61%6==++r   c                0   | j                  ||      }|dk  r|S |}| j                  |||      }|dk\  r|S ||   dk(  rY| j                  ||dz         }|dk  r| j                  ||d       ||   dk(  r$|j                  | j	                                |dz   S y)Nr   [r
   zExpected ] got EOF])r   uri_ref2	BadSyntaxappend	blankNode)r   r   r!   resr"   s        r   labelOrSubjectzTrigSinkParser.labelOrSubject)   s     NN61%q5HMM&!S)6H!9vq1u-A1uvq*>?ayC

4>>+,1ur   c                   d}| j                  d||      }|dk\  r|}d}g }| j                  |||      }|dk\  r|d   }|}n6|r| j                  ||d       n | j                  j                  j
                  }| j                  ||      }|dk  r| j                  ||d       |||dz    dk(  r.| j                  ||dz         }|dk  r| j                  ||d	       n|}|||dz    d
k7  ry|dz   }| j                  | j                  ||d       | j                  }| j                  | _        | j                  }t        | _	        | j                  j                        | _        	 | j                  ||      }|dk  r| j                  ||d       |||dz    dk(  r|dz   }n+| j                  ||      }|dk  r| j                  ||d       f| 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'   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   zTrigSinkParser.graph>   s    NN7FA.6AL"$1-6aDEANN61&TUKK%%00ENN61%q5NN61&EF!a!e#vq1u-A1uvq*HIA!a!e#E==$NN61&EF.."mm--',,U3vq)A1uvq*BCa!a% C'E))&!4A1uvq*EF  ++.r   N)r   strr    intreturnr?   )r   r>   r!   r?   r,   zMutableSequence[Any]r@   r?   )r   r>   r!   r?   r@   r?   )__name__
__module____qualname__r#   r-   r   r   r   r   r   r      s2    2!(<	*Fr   r   c                       e Zd ZdZd ZdddZy)
TrigParserz$
    An RDFLib parser for TriG

    c                     y r   r   )r   s    r   __init__zTrigParser.__init__   s    r   c                >   |dvrt        d|z        |j                  j                  sJ d       t        |j                  |j                        }||_        |j                  |_        t        |      }|j                  |j                         xs |j                         xs d      }t        ||d      }|j                         }|s|j                         }|j                  |       |j                  j!                         D ]  \  }	}
|j#                  |	|
        y )N)Nutf-8)z%TriG files are always utf-8 encoded, zI was passed: %sz(TriG Parser needs a context-aware store!)storer5    T)baseURIturtle)	ExceptionrJ   context_awarer   r5   default_contextnamespace_managerr   
absolutizegetPublicIdgetSystemIdr   getCharacterStreamgetByteStream
loadStream	_bindingsitemsbind)r   sourcer   encoding
conj_graphsinkrL   pstreamprefix	namespaces              r   parsezTrigParser.parse   s	   ?*M  {{((T*TT(%EKKEDTDTU
%*
" (-'>'>
$z"'' >F$6$6$8>B
 4>**,))+F	V!"!2!2!4FIOOFI. "5r   N)rI   )r[   r   r   r   r\   r>   r@   None)rA   rB   rC   __doc__rG   rc   r   r   r   rE   rE      s    
/r   rE   N)
__future__r   typingr   r   rdflib.graphr   r   rdflib.parserr   r	   	notation3r   r   r   r   rE   r   r   r   <module>rk      s4    " ' 0 - *	uZ up(/ (/r   