3
Kd                 @   s`   d dl mZ d dlmZ d dlmZ ddlmZmZ dd Z	G dd	 d	eZ
G d
d deZdS )    )absolute_import)ConjunctiveGraph)Parser   )
SinkParserRDFSinkc              O   s   d S )N )argskwargsr   r   M/var/www/html/virt/lib/python3.6/site-packages/rdflib/plugins/parsers/trig.pybecauseSubGraph   s    r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TrigSinkParserc             C   s   | j ||}|dk r|S | j||}|dkr0|S | j||}|dkrH|S | j||}|dkrh| j||S | j||}|dkr| j||S |S )Nr   )	skipSpacegraphZsparqlDirective	directiveZcheckDotZ	statement)selfargstrhijr   r   r   directiveOrStatement   s     z#TrigSinkParser.directiveOrStatementc             C   s   | j ||}|dk r|S |}| j|||}|dkr6|S || dkr| j ||d }|dk rh| j||d || dkr|j| j  |d S dS )Nr   [r   zExpected ] got EOF])r   Zuri_ref2	BadSyntaxappendZ	blankNode)r   r   r   resr   r   r   r   labelOrSubject'   s     zTrigSinkParser.labelOrSubjectc             C   sz  | j d||}|dkr|}g }| j|||}|dkrB|d }|}n
| jjj}| j||}|dk rn| j||d |||d  dkr| j||d }|dk r| j||d n|}|||d  dkrdS |d }| j}| j| _| j	}t
| _	| jj|| _xj| j||}|dk r| j||d |||d  d	kr<|d }P | j||}|dk r| j||d
 qW | 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.
        ZGRAPHr   zEOF found when expected graphr   =zEOF found when expecting '{'{zneeded '}', found end.}zexpected statement or '}'r   )Z	sparqlTokr   _storer   
identifierr   r   Z_parentContext_contextZ_reason2r   ZnewGraphr   )r   r   r   r   rr   ZoldParentContextZreason2r   r   r   r   ;   sT    


zTrigSinkParser.graphN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s   r   c               @   s"   e Zd ZdZdd ZdddZdS )	
TrigParserz$
    An RDFLib parser for TriG

    c             C   s   d S )Nr   )r   r   r   r   __init__   s    zTrigParser.__init__utf-8c       
      C   s   |d	krt d
| |jjs$tdt|j|jd}||_|j|_t|}|j	|j
 p`|j p`d}t||dd}|j|j  x"|jj D ]\}}	|j||	 qW d S )Nutf-8%TriG files are always utf-8 encoded, I was passed: %sz(TriG Parser needs a context-aware store!)storer"    T)baseURIZturtle)Nr+   )r,   r-   )	Exceptionr.   Zcontext_awareAssertionErrorr   r"   Zdefault_contextZnamespace_managerr   Z
absolutizegetPublicIdgetSystemIdr   Z
loadStreamgetByteStreamZ	_bindingsitemsbind)
r   sourcer   encodingZ
conj_graphZsinkr0   pprefix	namespacer   r   r   parse   s     
zTrigParser.parseN)r*   )r%   r&   r'   __doc__r)   r=   r   r   r   r   r(      s   r(   N)
__future__r   Zrdflibr   Zrdflib.parserr   Z	notation3r   r   r   r   r(   r   r   r   r   <module>   s   u