o
    
iw                     @   s^   d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	m
Z
 dgZedZG dd de
ZdS )	z2
Notation 3 (N3) RDF graph serializer for RDFLib.
    N)Graph)OWL	Namespace)OBJECTSUBJECTTurtleSerializerN3Serializerz#http://www.w3.org/2000/10/swap/log#c                       s   e Zd ZdZdZddef fddZ fddZ fd	d
Zd fdd	Z	 fddZ
d  fdd	Zd ddZ fddZd! fdd	Zdd Zdd Z  ZS )"r   z%Notation 3 (N3) RDF graph serializer.n3Nstorec                    s2   t t| | | jtjdtjdi || _	d S )N=z=>)
superr   __init__keywordsupdater   sameAsSWAP_LOGimpliesparent)selfr
   r   	__class__ Q/home/ubuntu/.local/lib/python3.10/site-packages/rdflib/plugins/serializers/n3.pyr      s   
zN3Serializer.__init__c                    s   t t|   i | _d S N)r   r   reset_storesr   r   r   r   r      s   
zN3Serializer.resetc                    s   | j stt|   d S d S r   )r   r   r   endDocumentr   r   r   r   r      s   zN3Serializer.endDocumentr   c                    s,   t t| |}| jd ur|| j 7 }|S r   )r   r   indentr   )r   modifierr   r   r   r   r   "   s   
zN3Serializer.indentc                    s   t t| | t|d tr|d D ]}| | qt|d tr.|d D ]}| | q&t|d trA|d D ]	}| | q9d S d S )Nr         )r   r   preprocessTriple
isinstancer   )r   tripletr   r   r   r"   (   s   zN3Serializer.preprocessTripleTc                    s:   d }| j d ur| j ||}|d u rtt| ||}|S r   )r   	get_pnamer   r   )r   uri
gen_prefixqnamer   r   r   r&   4   s   
zN3Serializer.get_pnamec                 C   s   t jdtdd | ||S )NzHN3Serializer.getQName is deprecated, use N3Serializer.get_pname instead.r!   )
stacklevel)warningswarnDeprecationWarningr&   )r   r'   r(   r   r   r   getQName<   s   zN3Serializer.getQNamec                    s>   |  | | |}t|dkrdS | |ptt| |S )Nr   F)subjectDonebuildPredicateHashlens_clauser   r   	statement)r   subject
propertiesr   r   r   r3   D   s
   

zN3Serializer.statementFc                    s(   |  ||stt| ||| d S d S r   )p_clauser   r   path)r   nodepositionnewliner   r   r   r7   K   s   zN3Serializer.pathc                 C   sD   t |tr | d|    | |t | | | d dS dS )N
z .TF)r#   r   writer   r6   r   predicateList)r   r4   r   r   r   r2   O   s   


zN3Serializer.s_clausec                 C   s~   t |tr=| | |tu r| d | d |  jd7  _t|| d}|| j |  jd8  _| | 	 d  dS dS )N {r    )r   }TF)
r#   r   r/   r   r<   depthr   	serializestreamr   )r   r8   r9   
serializerr   r   r   r6   Y   s   



zN3Serializer.p_clauser   )r   )T)F)__name__
__module____qualname____doc__
short_namer   r   r   r   r   r"   r&   r.   r3   r7   r2   r6   __classcell__r   r   r   r   r      s    

)rH   r+   rdflib.graphr   rdflib.namespacer   r   !rdflib.plugins.serializers.turtler   r   r   __all__r   r   r   r   r   r   <module>   s    