
    #HJj                        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.

```python
>>> 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.ConjunctiveGraph'>)>
>>> 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.

        Args:
            inputsource: The source of N-Quads-formatted data.
            sink: The graph where parsed quads will be stored.
            bnode_context: Optional dictionary mapping blank node identifiers to
                [`BNode`][rdflib.term.BNode] instances.
                See `.W3CNTriplesParser.parse` for more details.
            skolemize: Whether to skolemize blank nodes.

        Returns:
            The Dataset containing the parsed quads.

        Raises:
            AssertionError: If the sink store is not context-aware.
            ParseError: If the input is not a file-like object or contains invalid lines.
        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               g/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/rdflib/plugins/parsers/nquads.pyparsezNQuadsParser.parse2   sz   4 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.parselinev   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   /   sL     6:B B B 3	B
 B BH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   8 #  0 0 7 9 9 % P O 
"3:. _E$ _ErA   