
    i^'                    4   d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
 ddlmZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZmZmZmZ er
ddl m!Z!m"Z"m#Z# g dZ$ ed      Z% ed      Z& G d dejN                        Z(ddZ) G d de      Z*y)z
A TriX parser for RDFLib
    )annotations)TYPE_CHECKINGAnyDictListNoReturnOptionalTuple)handlermake_parser)ErrorHandler)ParserError)Graph)	Namespace)InputSourceParser)Store)BNode
IdentifierLiteralURIRef)AttributesImplLocator	XMLReader)create_parserTriXHandler
TriXParserz&http://www.w3.org/2004/03/trix/trix-1/$http://www.w3.org/XML/1998/namespacec                      e Zd ZU dZded<   ded<   ddZddZddZddZdd	Z	dd
Z
	 	 	 	 	 	 ddZddZddZddZddZddZddZy)r   z6An Sax Handler for TriX. See http://sw.nokia.com/trix/Optional[str]langdatatypec                @    || _         d| _        | j                          y )NF)storepreserve_bnode_idsreset)selfr$   s     JC:\Projects\mas-dev\.venv\Lib\site-packages\rdflib/plugins/parsers/trix.py__init__zTriXHandler.__init__#   s    
"'

    c                X    i | _         d | _        d | _        d| _        d | _        d | _        y )Nr   )bnodegraphtriplestater!   r"   r'   s    r(   r&   zTriXHandler.reset(   s,    ')
&*
26
	r*   c                    || _         y N)locator)r'   r3   s     r(   setDocumentLocatorzTriXHandler.setDocumentLocator2   s	    r*   c                     y r2    r0   s    r(   startDocumentzTriXHandler.startDocument5       r*   c                     y r2   r6   )r'   prefix	namespaces      r(   startPrefixMappingzTriXHandler.startPrefixMapping8   r8   r*   c                     y r2   r6   )r'   r:   s     r(   endPrefixMappingzTriXHandler.endPrefixMapping;   r8   r*   c                l   |d   t        t              k7  r| j                  d|d   dt               |d   j                         dk(  r7| j                  dk(  rd| _        d| _        y | j                  d       d| _        y |d   dk(  r7| j                  dk(  rd| _        d| _        y | j                  d	       d| _        y |d   d
k(  rO| j                  dk(  rd| _        d| _        y | j                  dk(  r		 d| _        y | j                  d       d| _        y |d   dk(  re| j                  dk(  r=| j
                  t        | j                        | _        g | _        d| _        d| _        y | j                  d       d| _        y |d   dk(  r{| j                  dk(  rSd | _	        d | _
        	 |j                  t        t              df      | _	        	 |j                  d      | _
        d| _        y | j                  d       d| _        y |d   dk(  rd| j                  dk(  r<d | _	        d | _
        	 |j                  t        t              df      | _	        d| _        y | j                  d       d| _        y |d   dk(  rO| j                  dk(  rd| _        d| _        y | j                  dk(  r		 d| _        y | j                  d       d| _        y | j                  d|d   z         d| _        y # t        $ r Y &w xY w# t        $ r | j                  d       Y d| _        y w xY w# t        $ r
 Y d| _        y w xY w)Nr   1Only elements in the TriX namespace are allowed. !=   trixzUnexpected TriX elementr-      zUnexpected graph elementuri      zUnexpected uri elementr.   )r$   zUnexpected triple elementtypedLiteralr!   r"   z No required attribute 'datatype'zUnexpected typedLiteral elementplainLiteralzUnexpected plainLiteral elementidzUnexpected id elementz$Unknown element %s in TriX namespace )strTRIXNSerrorlowerr/   r-   r   r$   r.   r!   r"   getValueXMLNS	ExceptiongetValueByQNameKeyErrorchars)r'   nameqnameattrss       r(   startElementNSzTriXHandler.startElementNS>   s<    7c&k!JJ7F$
 7==?f$zzQ
\ 
Y 

45X 
U !WzzQ
P 
M 

56L 
I !WzzQ
B 
A q| 
y 

34x 
u !W zzQ::%!&TZZ!8DJ 
f 
c 

67b 
_ !W&zzQ 	 $ %E
F/C DDIC$)$9$9*$EDMF 
? 

<=> 
; !W&zzQ 	 $ %E
F/C DDI, 
! 

<=  
 !W_zzQ
 
 q 
 

23
 
 JJ=QGH
O ! 
   CJJABB 
EC ! & 
+s6   *%K) K9 -%L  )	K65K69LL 	L32L3c                0   t         r| j                  J |d   t        t              k7  r| j	                  d|d   dt               |d   dk(  r| j
                  dk(  rEt        | j                  t        | j                  j                                     | _        d| _        y | j
                  d	k(  r8| xj                  t        | j                  j                               gz  c_        y | j	                  d
       y |d   dk(  r| j
                  dk(  rKt        | j                  | j                  | j                  j                                     | _        d| _        y | j
                  d	k(  r>| xj                  | j                  | j                  j                               gz  c_        y | j	                  d
       y |d   dk(  s|d   dk(  rb| j
                  d	k(  rA| xj                  t        | j                  | j                  | j                        gz  c_        y | j	                  d       y |d   dk(  r| j
                  d	k(  rxt!        | j                        dk7  r3| j	                  dt!        | j                        | j                  fz         | j                  j#                  | j                         d| _        y | j	                  d       y |d   dk(  rd | _        d| _        y |d   j%                         dk(  rd| _        y | j	                  d       y )Nr   r@   rA   rB   rE   rF   )r$   
identifierrD   rG   zgIllegal internal self.state - This should never happen if the SAX parser ensures XML syntax correctnessrJ   )r[   rI   rH   )r!   r"   zIThis should never happen if the SAX parser ensures XML syntax correctnessr.   z,Triple has wrong length, got %d elements: %sr-   rC   zUnexpected close element)r   r.   rL   rM   rN   r/   r   r$   r   rU   stripr-   	get_bnoder   r!   r"   lenaddrO   )r'   rV   rW   s      r(   endElementNSzTriXHandler.endElementNS   s   ;;***7c&k!JJ7F$
 7ezzQ"**

8H8H8J1K
 
qtzz'7'7'9 :;;

P
 !W_zzQ"JJ4>>$**:J:J:L+M
 
qtzz/?/?/A BCC

P
 !W&$q'^*CzzQDJJTYYO   

7
 !W zzQt{{#q(JJFt{{+T[[9: 

t{{+ 


7
 !WDJDJ!W]]_&DJ JJ12r*   c                    | j                   rt        |      }|S || j                  v r| j                  |   }|S t        |      }|| j                  |<   |S r2   )r%   r   r,   )r'   labelbns      r(   r]   zTriXHandler.get_bnode   s\    ""uB 	 

"ZZ& 	 5\$&

5!	r*   c                .    | xj                   |z  c_         y r2   )rU   r'   contents     r(   
characterszTriXHandler.characters   s    

g
r*   c                     y r2   r6   re   s     r(   ignorableWhitespacezTriXHandler.ignorableWhitespace   r8   r*   c                     y r2   r6   )r'   targetdatas      r(   processingInstructionz!TriXHandler.processingInstruction   r8   r*   c                    | j                   }|j                         d|j                         d|j                         d}t	        ||z         )N:z: )r3   getSystemIdgetLineNumbergetColumnNumberr   )r'   messager3   infos       r(   rN   zTriXHandler.error   sG    ,,!!!###%

 $.))r*   N)r$   r   )returnNone)r3   r   )r:   r    r;   rL   ru   rv   )r:   r    ru   rv   )rV   Tuple[Optional[str], str]rX   r   ru   rv   )rV   rw   ru   rv   )rb   rL   ru   r   )rf   rL   ru   rv   )rs   rL   ru   r   )__name__
__module____qualname____doc____annotations__r)   r&   r4   r7   r<   r>   rY   r`   r]   rg   ri   rm   rN   r6   r*   r(   r   r      sq    @

Y-Y=KY	YvK3Z	*r*   r   c                   t               }	 |j                  dd       |j                  t        j
                  d       t        |       }|j                  |       |j                  t                      |S # t        $ r Y bw xY w)Nxmlr   rB   )
r   start_namespace_declAttributeError
setFeaturer   feature_namespacesr   setContentHandlersetErrorHandlerr   )r$   parserrC   s      r(   r   r     sz    ]F 	##E+QR g00!4uD
T"
<>*M  s   A5 5	B Bc                      e Zd ZdZd ZddZy)r   z0A parser for TriX. See http://sw.nokia.com/trix/c                     y r2   r6   r0   s    r(   r)   zTriXParser.__init__  r8   r*   c                   |j                   j                  sJ d       t        |j                         | _        | j                  j	                         }|j                  dd       }|||_        | j                  j                  |       y )Nz/TriXParser must be given a context aware store.r%   )r$   context_awarer   _parsergetContentHandlergetr%   parse)r'   sourcesinkargscontent_handlerr%   s         r(   r   zTriXParser.parse  sw    JJ$$	=<	=$ %TZZ0,,88:!XX&:DA)1CO. 	6"r*   N)r   r   r   r   r   r   ru   rv   )rx   ry   rz   r{   r)   r   r6   r*   r(   r   r     s    :#r*   r   N)r$   r   ru   r   )+r{   
__future__r   typingr   r   r   r   r   r	   r
   xml.saxr   r   xml.sax.handlerr   rdflib.exceptionsr   rdflib.graphr   rdflib.namespacer   rdflib.parserr   r   rdflib.storer   rdflib.termr   r   r   r   xml.sax.xmlreaderr   r   r   __all__rM   rQ   ContentHandlerr   r   r   r6   r*   r(   <module>r      s    # L L L ( ( )  & -  : :DD
8 
;	<89d*'(( d*N # #r*   