
    i                        d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z ddlmZmZmZ ddlmZ ddlmZmZmZ dd	lmZ d
gZeeef   Z G d d
e      Zy)a  
This is a rdflib plugin for parsing NQuad files into Conjunctive
graphs that can be used and queried. The store that backs the graph
*must* be able to handle contexts.

>>> from rdflib import ConjunctiveGraph, URIRef, Namespace
>>> g = ConjunctiveGraph()
>>> data = open("test/data/nquads.rdflib/example.nquads", "rb")
>>> g.parse(data, format="nquads") # doctest:+ELLIPSIS
<Graph identifier=... (<class 'rdflib.graph.Graph'>)>
>>> assert len(g.store) == 449
>>> # There should be 16 separate contexts
>>> assert len([x for x in g.store.contexts()]) == 16
>>> # is the name of entity E10009 "Arco Publications"?
>>> #   (in graph http://bibliographica.org/entity/E10009)
>>> # Looking for:
>>> # <http://bibliographica.org/entity/E10009>
>>> #   <http://xmlns.com/foaf/0.1/name>
>>> #   "Arco Publications"
>>> #   <http://bibliographica.org/entity/E10009>
>>> s = URIRef("http://bibliographica.org/entity/E10009")
>>> FOAF = Namespace("http://xmlns.com/foaf/0.1/")
>>> assert(g.value(s, FOAF.name).eq("Arco Publications"))
    )annotations)	getreader)AnyMutableMappingOptional)ParserError)ConjunctiveGraphDatasetGraph)InputSource)W3CNTriplesParserr_tailr_wspace)BNodeNQuadsParserc                  6    e Zd Z	 	 d	 	 	 	 	 	 	 	 	 ddZdddZy)r   Nc                   |j                   j                  sJ d       t        |j                   d      }|j                  }d}t	        |t        t
        f      r|j                  }nC|j                  7|j                  |j                  k(  r|}n|j                  |j                        }|||_        |j                  |       || _	        || _
        |j                         }	|	s!|j                         }	 t        d      |	      }	t        |	d      st        d      |	| _        d| _        	 | j%                         x| _        }
| j&                  	 | j                  S 	 | j)                  |       C# t        $ r}t        d	|d
|
      d}~ww xY w)a  
        Parse inputsource as an N-Quads file.

        :type inputsource: `rdflib.parser.InputSource`
        :param inputsource: the source of N-Quads-formatted data
        :type sink: `rdflib.graph.Graph`
        :param sink: where to send parsed triples
        :type bnode_context: `dict`, optional
        :param bnode_context: a dict mapping blank node identifiers to `~rdflib.term.BNode` instances.
                              See `.W3CNTriplesParser.parse`
        z1NQuadsParser must be given a context-aware store.T)storedefault_unionNzutf-8readz)Item to parse must be a file-like object. zInvalid line (z):
)r   context_awarer
   default_context
isinstancer	   
identifierget_contextremove_graphsink	skolemizegetCharacterStreamgetByteStreamr   hasattr
ParseErrorfilebufferreadlineline	parseline)selfinputsourcer   bnode_contextr   kwargsds
ds_defaultnew_default_contextsource_NQuadsParser__linemsgs               LC:\Projects\mas-dev\.venv\Lib\site-packages\rdflib/plugins/parsers/nquads.pyparsezNQuadsParser.parse/   sz   ( JJ$$	?>	?$ 4::T:''
"dW&678"&"6"6__(*"7"77&*#&(nnT__&E#*!4BOOJ'	"//1 ..0F'Yw'/Fvv&HII	!%0DIyy  yyK}-   K S&!IJJKs   E- -	F6FFc                   | j                  t               | j                  r| j                  j                  d      ry | j	                  |      }| j                  t               | j                         }| j                  t               | j                  |      }| j                  t               | j                         xs | j                  |      }| j                  t               | j                  rt        d      |r.| j                  j                  |      j                  |||f       y | j                  j                  j                  |||f       y )N#zTrailing garbage)eatr   r'   
startswithsubject	predicateobjecturirefnodeidr   r#   r   r   addr   )r)   r+   r9   r:   objcontexts         r3   r(   zNQuadsParser.parselinem   s    		dii2237,,}-NN$	kk-(++-=4;;}#=99/00 II!!'*..C/HIII%%))7Is*CD    )NF)
r*   r   r   r   r+   Optional[_BNodeContextType]r   boolr,   r   )N)r+   rB   returnNone)__name__
__module____qualname__r4   r(    rA   r3   r   r   ,   sF     6:< < < 3	<
 < <|ErA   N)__doc__
__future__r   codecsr   typingr   r   r   rdflib.exceptionsr   r#   rdflib.graphr	   r
   r   rdflib.parserr   rdflib.plugins.parsers.ntriplesr   r   r   rdflib.termr   __all__str_BNodeContextTyper   rI   rA   r3   <module>rV      sX   2 #  0 0 7 9 9 % P O 
"3:. YE$ YErA   