§
    kÃ¿aU ã                   ó¢  — d Z ddlZddlmZmZmZmZmZmZ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 dd	lmZ ddlZ ej        e¦  «        Z	 g d
¢Z G d„ d¦  «        Zdeee ed¦  «        ddœZd„ Zd„ Zd„ Zd„ Z dGd„Z!d„ Z"d„ Z# G d„ d¦  «        Z$ G d„ de%¦  «        Z& ed¦  «        Z' G d„ de&¦  «        Z( G d „ d!e(¦  «        Z)d"„ Z*d#„ Z+ G d$„ d%e¦  «        Z, e- ed&¦  «        ¦  «         .                    ej/        ej0        ej1        ej2        ej3        ej4        ej5        ej6        ej7        ej8        ej9        ej:        g¦  «        Z;d'„ Z<d(„ Z= G d)„ d*e>¦  «        Z?dHd+„Z@ G d,„ d-e(¦  «        ZA G d.„ d/e%¦  «        ZB G d0„ d1eBeA¦  «        ZCej9        ej8        gZD G d2„ d3¦  «        ZE G d4„ d5¦  «        ZF G d6„ d7eBeA¦  «        ZGd8„ ZH G d9„ d:eA¦  «        ZI ed;„ ¦  «        ZJ ed<„ ¦  «        ZK ed=„ ¦  «        ZL ed>„ ¦  «        ZM ed?„ ¦  «        ZN ed@„ ¦  «        ZOdAZP G dB„ dCe(¦  «        ZQi fdD„ZRdE„ ZSedFk    r eS¦   «          dS dS )Ia¢  RDFLib Python binding for OWL Abstract Syntax

see: http://www.w3.org/TR/owl-semantics/syntax.html
     http://owl-workshop.man.ac.uk/acceptedLong/submission_9.pdf

3.2.3 Axioms for complete classes without using owl:equivalentClass

Named class description of type 2 (with owl:oneOf) or type 4-6
(with owl:intersectionOf, owl:unionOf or owl:complementOf

Uses Manchester Syntax for __repr__

>>> exNs = Namespace('http://example.com/')
>>> namespace_manager = NamespaceManager(Graph())
>>> namespace_manager.bind('ex', exNs, override=False)
>>> namespace_manager.bind('owl', OWL, override=False)
>>> g = Graph()
>>> g.namespace_manager = namespace_manager

Now we have an empty graph, we can construct OWL classes in it
using the Python classes defined in this module

>>> a = Class(exNs.Opera, graph=g)

Now we can assert rdfs:subClassOf and owl:equivalentClass relationships
(in the underlying graph) with other classes using the 'subClassOf'
and 'equivalentClass' descriptors which can be set to a list
of objects for the corresponding predicates.

>>> a.subClassOf = [exNs.MusicalWork]

We can then access the rdfs:subClassOf relationships

>>> print(list(a.subClassOf))
[Class: ex:MusicalWork ]

This can also be used against already populated graphs:

>>> owlGraph = Graph().parse(str(OWL)) #doctest: +SKIP
>>> namespace_manager.bind('owl', OWL, override=False) #doctest: +SKIP
>>> owlGraph.namespace_manager = namespace_manager #doctest: +SKIP
>>> list(Class(OWL.Class, graph=owlGraph).subClassOf) #doctest: +SKIP
[Class: rdfs:Class ]

Operators are also available. For instance we can add ex:Opera to the extension
of the ex:CreativeWork class via the '+=' operator

>>> a #doctest: +SKIP
Class: ex:Opera SubClassOf: ex:MusicalWork
>>> b = Class(exNs.CreativeWork, graph=g)
>>> b += a
>>> print(sorted(a.subClassOf, key=lambda c:c.identifier)) #doctest: +SKIP
[Class: ex:CreativeWork , Class: ex:MusicalWork ]

And we can then remove it from the extension as well

>>> b -= a
>>> a #doctest: +SKIP
Class: ex:Opera SubClassOf: ex:MusicalWork

Boolean class constructions can also  be created with Python operators.
For example, The | operator can be used to construct a class consisting of a
owl:unionOf the operands:

>>> c =  a | b | Class(exNs.Work, graph=g)
>>> c #doctest: +SKIP
( ex:Opera OR ex:CreativeWork OR ex:Work )

Boolean class expressions can also be operated as lists (using python list
operators)

>>> del c[c.index(Class(exNs.Work, graph=g))]
>>> c #doctest: +SKIP
( ex:Opera OR ex:CreativeWork )

The '&' operator can be used to construct class intersection:

>>> woman = Class(exNs.Female, graph=g) & Class(exNs.Human, graph=g)
>>> woman.identifier = exNs.Woman
>>> woman #doctest: +SKIP
( ex:Female AND ex:Human )
>>> len(woman)
2

Enumerated classes can also be manipulated

>>> contList = [Class(exNs.Africa, graph=g), Class(exNs.NorthAmerica, graph=g)]
>>> EnumeratedClass(members=contList, graph=g) #doctest: +SKIP
{ ex:Africa ex:NorthAmerica }

owl:Restrictions can also be instantiated:

>>> Restriction(exNs.hasParent, graph=g, allValuesFrom=exNs.Human) #doctest: +SKIP
( ex:hasParent ONLY ex:Human )

Restrictions can also be created using Manchester OWL syntax in 'colloquial'
Python
>>> exNs.hasParent | some | Class(exNs.Physician, graph=g) #doctest: +SKIP
( ex:hasParent SOME ex:Physician )

>>> Property(exNs.hasParent,graph=g) | max | Literal(1) #doctest: +SKIP
( ex:hasParent MAX 1 )

>>> print(g.serialize(format='pretty-xml')) #doctest: +SKIP

é    N)ÚBNodeÚLiteralÚ	NamespaceÚRDFÚRDFSÚURIRefÚVariable)ÚGraph)Ú
Collection)ÚOWLÚXSD)ÚNamespaceManager)Ú
Identifier)Úfirst)$ÚnsBindsÚACE_NSÚCLASS_RELATIONSÚsomeÚonlyÚmaxÚminÚexactlyÚvalueÚPropertyAbstractSyntaxÚ
AllClassesÚAllDifferentÚAllPropertiesÚAnnotatableTermsÚBooleanClassÚCallableÚ	CastClassÚClassÚClassNamespaceFactoryÚclassOrIdentifierÚclassOrTermÚCommonNSBindingsÚComponentTermsÚDeepClassClearÚEnumeratedClassÚgenerateQNameÚGetIdentifiedClassesÚ
IndividualÚMalformedClassÚmanchesterSyntaxÚOntologyÚOWLRDFListProxyÚPropertyÚpropertyOrIdentifierÚRestrictionÚtermDeletionDecoratorc                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚInfixc                 ó   — || _         d S ©N©Úfunction)Úselfr:   s     ú8/usr/lib/python3/dist-packages/rdflib/extras/infixowl.pyÚ__init__zInfix.__init__·   ó   € Ø ˆŒˆˆó    c                 ó(   — t          | |fd„¦  «        S )Nc                 ó.   — |                      || ¦  «        S r8   r9   ©Úxr;   Úothers      r<   ú<lambda>zInfix.__ror__.<locals>.<lambda>»   ó   € °t·}²}ÀUÈAÑ7NÔ7N€ r?   ©r6   ©r;   rD   s     r<   Ú__ror__zInfix.__ror__º   ó   € Ý D°ÐNÐNÐNÑOÔOÐOr?   c                 ó,   — |                       |¦  «        S r8   r9   rH   s     r<   Ú__or__zInfix.__or__½   ó   € Ø�}Š}˜UÑ#Ô#Ð#r?   c                 ó(   — t          | |fd„¦  «        S )Nc                 ó.   — |                      || ¦  «        S r8   r9   rB   s      r<   rE   z#Infix.__rlshift__.<locals>.<lambda>Á   rF   r?   rG   rH   s     r<   Ú__rlshift__zInfix.__rlshift__À   rJ   r?   c                 ó,   — |                       |¦  «        S r8   r9   rH   s     r<   Ú
__rshift__zInfix.__rshift__Ã   rM   r?   c                 ó.   — |                       ||¦  «        S r8   r9   )r;   Úvalue1Úvalue2s      r<   Ú__call__zInfix.__call__Æ   s   € Ø�}Š}˜V VÑ,Ô,Ð,r?   N)	Ú__name__Ú
__module__Ú__qualname__r=   rI   rL   rP   rR   rV   © r?   r<   r6   r6   ¶   st   € € € € € ð!ð !ð !ðPð Pð Pð$ð $ð $ðPð Pð Pð$ð $ð $ð-ð -ð -ð -ð -r?   r6   z$http://www.w3.org/2004/02/skos/core#z$http://www.w3.org/2000/10/swap/list#z http://purl.org/dc/elements/1.1/)ÚskosÚrdfÚrdfsÚowlÚlistÚdcc                 ó|   — |                       t          |¦  «        ¦  «        \  }}}d                     ||g¦  «        S ©Nú:)Úcompute_qnamer$   Újoin)ÚgraphÚuriÚprefixÚ	localNames       r<   r*   r*   Ô   s<   € Ø"×0Ò0Õ1BÀ3Ñ1GÔ1GÑHÔHÑ€FˆC�Ø�8Š8�V˜YÐ'Ñ(Ô(Ð(r?   c                 ó†   — t          | t          ¦  «        r| j        S t          | t          t          t
          f¦  «        sJ ‚| S r8   )Ú
isinstancer"   Ú
identifierr   r   r   ©Úthings    r<   r%   r%   Ù   s?   € Ý�%�ÑÔð ØÔÐå˜%¥&­%µÐ!9Ñ:Ô:Ð:Ð:Ð:Øˆr?   c                 óž   — t          | t          t          f¦  «        r| j        S t          | t          t
          f¦  «        sJ d| z  ¦   «         ‚| S )Nz8Expecting a Class, Property, URIRef, or BNode.. not a %s)rk   r1   r"   rl   r   r   rm   s    r<   r$   r$   á   s[   € Ý�%�(¥EÐ*Ñ+Ô+ð ØÔÐå˜%¥&­% Ñ1Ô1ð 	
ð 	
ØFÈÑNñ	
ô 	
ð 	
ð ˆr?   c                 ól   — t          | t          ¦  «        r| j        S t          | t          ¦  «        sJ ‚| S r8   )rk   r1   rl   r   rm   s    r<   r2   r2   ë   s8   € Ý�%�Ñ"Ô"ð ØÔÐå˜%¥Ñ(Ô(Ð(Ð(Ð(Øˆr?   Fc                 óœ
  ‡— | €J ‚|�rè|rt          | ¦  «        }ˆfd„| D ¦   «         }n9t          t          ‰| ¦  «        ¦  «        }ˆfd„t          ‰| ¦  «        D ¦   «         }|t          j        k    �r g }g }|D ]B}t	          |t
          ¦  «        r|                     |¦  «         Œ-|                     |¦  «         ŒC|r�ˆfd„}	t          |¦  «        dk    r*dd                     t          |	|¦  «        ¦  «        z   dz   }
nt          |d	         ‰¦  «        }
|r4t          |
¦  «        d
z   d                     ˆfd„|D ¦   «         ¦  «        z   S |
S dd                     d„ |D ¦   «         ¦  «        z   dz   S |t          j        k    r%dd                     d„ |D ¦   «         ¦  «        z   dz   S |t          j        k    r%dd                     d„ |D ¦   «         ¦  «        z   dz   S |t          j        k    sJ ‚�nòt          j        ‰                     | t"          j        ¬¦  «        v �rÄt'          ‰                     | t          j        ¬¦  «        ¦  «        d	         }‰                     |¦  «        \  }
}}d                     |
|g¦  «        }t-          ‰                     |t.          j        ¬¦  «        ¦  «        }|rd|z  }‰                     | t          j        ¬¦  «        D ]}d|›dt          |‰¦  «        ›d�c S ‰                     | t          j        ¬¦  «        D ]}d|›dt          |‰¦  «        ›d�c S ‰                     | t          j        ¬¦  «        D ]}d|›dt          |‰¦  «        ›d�c S t          j        dt          j        dt          j        di}‰                     | t'          |                      ¦   «         ¦  «        df¦  «        D ]\  }}}d|›d||         ›d|›d�c S t'          ‰                     | t          j        ¬¦  «        ¦  «        }|rdt          |d	         ‰¦  «        z  S d                     d„ tB          D ¦   «         ¦  «        }|dz   d z   }tE          d!¦  «        | i}‰ #                    |d"|¬#¦  «        D ].\  }}t	          | t
          ¦  «        st          |‰|¬$¦  «        c S Œ/	 ‰                     | ¦  «        \  }
}}d                     |
|g¦  «        }nC# tH          $ r6 t	          | tJ          ¦  «        r|  &                    ¦   «         cY S d%| z   d&z   cY S w xY wt-          tO          | ‰¬'¦  «        j        ¦  «        }|r|S |S )(z
    Core serialization
    Nc                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rZ   ©r.   ©Ú.0ÚchildÚstores     €r<   ú
<listcomp>z$manchesterSyntax.<locals>.<listcomp>û   s$   ø€ ÐJÐJÐJ¸5Õ(¨°Ñ6Ô6ÐJÐJÐJr?   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rZ   rs   rt   s     €r<   rx   z$manchesterSyntax.<locals>.<listcomp>þ   s1   ø€ ð ð ð Ø38Õ  ¨Ñ.Ô.ðð ð r?   c                 ód   •— ‰                      | ¦  «        \  }}}d                     ||g¦  «        S rb   )rd   re   )rC   rh   rg   ri   rw   s       €r<   ÚcastToQNamez%manchesterSyntax.<locals>.castToQName  s4   ø€ Ø-2×-@Ò-@ÀÑ-CÔ-CÑ*�F˜C ØŸ8š8 V¨YÐ$7Ñ8Ô8Ð8r?   é   z( z AND ú )r   z THAT c                 óJ   •— g | ]}t          t          |‰¦  «        ¦  «        ‘Œ S rZ   )Ústrr.   )ru   rC   rw   s     €r<   rx   z$manchesterSyntax.<locals>.<listcomp>  s,   ø€ ÐPÐPÐPÀ�SÕ!1°!°UÑ!;Ô!;Ñ<Ô<ÐPÐPÐPr?   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rZ   ©r   ©ru   Úcs     r<   rx   z$manchesterSyntax.<locals>.<listcomp>  s   € Ð+EÐ+EÐ+E°q­C°©F¬FÐ+EÐ+EÐ+Er?   z OR c                 ó,   — g | ]}t          |¦  «        ‘ŒS rZ   r�   r‚   s     r<   rx   z$manchesterSyntax.<locals>.<listcomp>   s   € Ð&@Ð&@Ð&@°!¥s¨1¡v¤vÐ&@Ð&@Ð&@r?   z{ ú c                 ó,   — g | ]}t          |¦  «        ‘ŒS rZ   r�   r‚   s     r<   rx   z$manchesterSyntax.<locals>.<listcomp>"  s   € Ð#=Ð#=Ð#=¨q¥C¨¡F¤FÐ#=Ð#=Ð#=r?   z }©ÚsubjectÚ	predicaterc   z'%s'z ONLY z VALUE z SOME ÚMAXÚMINÚEQUALSz
( NOT %s )ú
c                 ó6   — g | ]}d |›dt           |         ›d�‘ŒS )zPREFIX z: <ú>)r   )ru   Úks     r<   rx   z$manchesterSyntax.<locals>.<listcomp>=  s+   € ÐQÐQÐQÀAÀA°°°µG¸A´J°J°JÐ?ÐQÐQÐQr?   z6
SELECT ?p ?bool WHERE {?class a owl:Class; ?p ?bool .z?bool rdf:first ?foo }z?classÚsparql)Ú	processorÚinitBindings©Úbooleanú<r�   ©rf   )(Úiterr   r   ÚintersectionOfrk   r   ÚappendÚlenre   Úmapr.   r   ÚunionOfÚoneOfÚcomplementOfr3   Úobjectsr   Útyper_   Ú
onPropertyrd   r   r   ÚlabelÚallValuesFromÚhasValueÚsomeValuesFromÚmaxCardinalityÚminCardinalityÚcardinalityÚtriples_choicesÚkeysr   r	   ÚqueryÚ	Exceptionr   Ún3r"   )rn   rw   r•   ÚtransientListÚliveChildrenÚchildrenÚ	childListÚnamedrv   r{   rh   Úproprg   ri   Ú
propStringr£   Ú	onlyClassÚvalÚ	someClassÚ
cardLookupÚsÚpÚoÚcomplÚprologÚqstrÚinitbÚboolPropÚcolÚqnames    `                            r<   r.   r.   ó   s  ø€ ð ÐÐÐØñ @CØð 	Ý ™;œ;ˆLØJÐJÐJÐJÀEÐJÑJÔJˆHˆHå¥
¨5°%Ñ 8Ô 8Ñ9Ô9ˆLðð ð ð Ý<FÀuÈeÑ<TÔ<Tðñ ô ˆHð •cÔ(Ò(Ñ(ØˆIØˆEØ%ð ,ð ,�Ý˜e¥VÑ,Ô,ð ,Ø—L’L Ñ'Ô'Ð'Ð'à×$Ò$ UÑ+Ô+Ð+Ð+Øð Nð9ð 9ð 9ð 9ð 9õ �u‘:”: ’>�>Ø! G§L¢Lµ°[À%Ñ1HÔ1HÑ$IÔ$IÑIÈDÑP�F�Få-¨e°A¬h¸Ñ>Ô>�FØð 	"å˜F™œØ"ñ#à!Ÿ,š,ØPÐPÐPÐPÀiÐPÑPÔPñô ñðð "�Mà˜gŸlšlÐ+EÐ+E¸HÐ+EÑ+EÔ+EÑFÔFÑFÈÑMÐMØ�œÒ#Ð#Ø˜&Ÿ+š+Ð&@Ð&@°xÐ&@Ñ&@Ô&@ÑAÔAÑAÀDÑHÐHØ�œ	Ò!Ð!Ø˜#Ÿ(š(Ð#=Ð#=°HÐ#=Ñ#=Ô#=Ñ>Ô>Ñ>ÀÑEÐEà�cÔ.Ò.Ð.Ð.Ð.Ñ.Ý	Œ˜EŸMšM°%Å3Ä8˜MÑLÔLÐ	LÑ	LÝ�E—M’M¨%½3¼>�MÑJÔJÑKÔKÈAÔNˆØ!&×!4Ò!4°TÑ!:Ô!:Ñˆ��YØ—X’X˜v yÐ1Ñ2Ô2ˆ
Ý�e—m’m¨D½D¼J�mÑGÔGÑHÔHˆØð 	(Ø %™ˆJØŸš¨uÅÔ@Q˜ÑRÔRð 	Wð 	WˆIˆIØ'1 z zÕ3CÀIÈuÑ3UÔ3UÐ3UÐ3UÐVÐVÐVÐVØ—=’=¨½#¼,�=ÑGÔGð 	Rð 	RˆCˆCØ(2¨
¨
Õ4DÀSÈ%Ñ4PÔ4PÐ4PÐ4PÐQÐQÐQÐQØŸš¨uÅÔ@R˜ÑSÔSð 	Wð 	WˆIˆIØ'1 z zÕ3CÀIÈuÑ3UÔ3UÐ3UÐ3UÐVÐVÐVÐVåÔ ÝÔ ÝŒO˜Xð
ˆ
ð
 ×,Ò,¨eµT¸*¿/º/Ñ:KÔ:KÑ5LÔ5LÈdÐ-SÑTÔTð 	Cð 	C‰GˆAˆq�!�!Ø%/ Z Z°¸A´°°ÀÀÀÐBÐBÐBÐBÝ�—’ u½Ô8H�ÑIÔIÑJÔJ€EØð ØÕ/°°a´¸%Ñ@Ô@ÑAÐAà—’ÐQÐQÍÐQÑQÔQÑRÔRˆàØGñHà&ñ'ð 	õ
 ˜(Ñ#Ô# UÐ+ˆØ"Ÿ[š[¨¸ÐPU˜[ÑVÔVð 	Fð 	F‰MˆH�cÝ˜e¥VÑ,Ô,ð FÝ'¨¨U¸HÐEÑEÔEÐEÐEÐEðFð	%Ø%*×%8Ò%8¸Ñ%?Ô%?Ñ"ˆF�C˜Ø—H’H˜f iÐ0Ñ1Ô1ˆEˆEøÝð 	%ð 	%ð 	%Ý˜%¥Ñ'Ô'ð "Ø—x’x‘z”zÐ!Ð!Ð!Ø˜‘; Ñ$Ð$Ð$Ð$ð	%øøøõ •e˜E¨Ð/Ñ/Ô/Ô5Ñ6Ô6ˆØð 	ØˆLàˆLs   Ò10S" Ó"3T"ÔT"Ô!T"c              #   ó²   K  — |                       t          j        t          j        ¬¦  «        D ](}t          |t          ¦  «        rt	          |¦  «        V — Œ)d S ©N)r‰   Úobject)Úsubjectsr   r¡   r   r"   rk   r   )rf   rƒ   s     r<   r+   r+   U  sU   è è € Ø�^Š^¥c¤hµs´yˆ^ÑAÔAð ð ˆÝ�a�Ñ Ô ð 	Ý˜‘(”(ˆNˆNˆNøðð r?   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó   •— ‰| _         | S r8   )Úproperty)Úfuncr´   s    €r<   ÚsomeFuncz'termDeletionDecorator.<locals>.someFunc\  s   ø€ ØˆŒØˆr?   rZ   )r´   rÌ   s   ` r<   r4   r4   [  s#   ø€ ðð ð ð ð ð €Or?   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTermDeletionHelperc                 ó   — || _         d S r8   )r´   )r;   r´   s     r<   r=   zTermDeletionHelper.__init__d  s   € ØˆŒ	ˆ	ˆ	r?   c                 ó   ‡ — ˆ fd„}|S )Nc                 óV   •— | j                              | j        ‰j        d f¦  «         d S r8   )rf   Úremoverl   r´   )Úinstr;   s    €r<   Ú_removerz-TermDeletionHelper.__call__.<locals>._removerh  s*   ø€ ØŒJ×Ò˜tœ°´	¸4Ð@ÑAÔAÐAÐAÐAr?   rZ   )r;   ÚfrÔ   s   `  r<   rV   zTermDeletionHelper.__call__g  s(   ø€ ð	Bð 	Bð 	Bð 	Bð 	Bð ˆr?   N)rW   rX   rY   r=   rV   rZ   r?   r<   rÎ   rÎ   c  s2   € € € € € ðð ð ðð ð ð ð r?   rÎ   c                   ó   — e Zd ZdZ e¦   «         Zd„ Zdd„Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Z eej        ¦  «        d„ ¦   «         Z eeee¦  «        Zd„ Zd„ Z eee¦  «        Zd„ Zd„ Z eej        ¦  «        d„ ¦   «         Z eeee¦  «        ZdS )r,   z
    A typed individual
    c                 óz   — | j                              | j        d d f¦  «        D ]}|                     |¦  «         Œd S r8   )ÚfactoryGraphÚtriplesrl   Úadd©r;   rf   Úfacts      r<   Ú	serializezIndividual.serializeu  sF   € ØÔ%×-Ò-¨t¬ÀÀdÐ.KÑLÔLð 	ð 	ˆDØ�IŠI�d‰OŒOˆOˆOð	ð 	r?   Nc                 ó:  — |d ur|pt          ¦   «         | _        |€| j        | _        n|| _        d | _        t          | j        t           ¦  «        sJ	 | j                             | j        ¦  «        \  }}}d                     ||g¦  «        | _        d S #  Y d S xY wd S rb   )	r   Ú_Individual__identifierrØ   rf   rÃ   rk   rl   rd   re   )r;   rl   rf   rh   rg   ri   s         r<   r=   zIndividual.__init__y  s©   € Ø&¨dÐ2ÐA°zÐLÅUÁWÄWˆÔØˆ=ØÔ*ˆDŒJˆJàˆDŒJØˆŒ
Ý˜$œ/­5Ñ1Ô1ð 	ðØ)-¬×)AÒ)AÀ$Ä/Ñ)RÔ)RÑ&�˜˜YØ ŸXšX v¨yÐ&9Ñ:Ô:�”
�
�
øðØ��øøøð	ð 	s   Á?B ÂBc                 óJ   — | j                              d d | j        f¦  «         d S r8   ©rf   rÒ   rl   ©r;   s    r<   ÚclearInDegreezIndividual.clearInDegree‡  s'   € ØŒ
×Ò˜4  t¤Ð7Ñ8Ô8Ð8Ð8Ð8r?   c                 óJ   — | j                              | j        d d f¦  «         d S r8   rá   râ   s    r<   ÚclearOutDegreezIndividual.clearOutDegreeŠ  s'   € ØŒ
×Ò˜4œ?¨D°$Ð7Ñ8Ô8Ð8Ð8Ð8r?   c                 óV   — |                       ¦   «          |                      ¦   «          d S r8   )rã   rå   râ   s    r<   ÚdeletezIndividual.delete�  s,   € Ø×ÒÑÔÐØ×ÒÑÔÐÐÐr?   c                 óÔ   — | j                              d d | j        f¦  «        D ]0\  }}}| j                              ||t	          |¦  «        f¦  «         Œ1|                      ¦   «          d S r8   )rf   rÙ   rl   rÚ   r$   rç   ©r;   rD   rº   r»   r¼   s        r<   ÚreplacezIndividual.replace‘  sh   € Ø”z×)Ò)¨4°°t´Ð*GÑHÔHð 	=ð 	=‰GˆAˆq�!ØŒJ�NŠN˜A˜qÕ"3°EÑ":Ô":Ð;Ñ<Ô<Ð<Ð<Ø�Š‰Œˆˆˆr?   c              #   ón   K  — | j                              | j        t          j        ¬¦  «        D ]}|V — Œd S ©Nr‡   )rf   r    rl   r   r¡   ©r;   Ú_ts     r<   Ú	_get_typezIndividual._get_type–  sC   è è € Ø”*×$Ò$¨T¬_ÍÌÐ$ÑQÔQð 	ð 	ˆBØˆHˆHˆHˆHð	ð 	r?   c                 ót  — |sd S t          |t          t          f¦  «        r;| j                             | j        t          j        t          |¦  «        f¦  «         d S |D ]Y}t          |t          t          f¦  «        sJ ‚| j                             | j        t          j        t          |¦  «        f¦  «         ŒZd S r8   )	rk   r,   r   rf   rÚ   rl   r   r¡   r$   )r;   Úkindrƒ   s      r<   Ú	_set_typezIndividual._set_typeš  s¸   € Øð 	ØˆFÝ�d�Z­Ð4Ñ5Ô5ð 	RØŒJ�NŠN˜DœO­S¬XÕ7HÈÑ7NÔ7NÐOÑPÔPÐPÐPÐPàð Rð R�Ý! !¥jµ*Ð%=Ñ>Ô>Ð>Ð>Ð>Ø”
—’ ¤µ´Õ;LÈQÑ;OÔ;OÐPÑQÔQÐQÐQðRð Rr?   c                 ó   — dS )zÖ
        >>> g = Graph()
        >>> b=Individual(OWL.Restriction,g)
        >>> b.type = RDF.Resource
        >>> len(list(b.type))
        1
        >>> del b.type
        >>> len(list(b.type))
        0
        NrZ   râ   s    r<   Ú_delete_typezIndividual._delete_type¤  ó	   € ð 	ˆr?   c                 ó   — | j         S r8   )rß   râ   s    r<   Ú_get_identifierzIndividual._get_identifier´  s   € ØÔ Ð r?   c                 óà  ‡ ‡— ‰sJ ‚‰‰ j         k    �rd„ ‰ j                             ‰ j         d d f¦  «        D ¦   «         }d„ ‰ j                             d d ‰ j         f¦  «        D ¦   «         }|D ]'\  }}‰ j                             ‰ j         ||f¦  «         Œ(|D ]'\  }}‰ j                             ||‰ j         f¦  «         Œ(‰‰ _         ‰ j                             ˆˆ fd„|D ¦   «         ¦  «         ‰ j                             ˆˆ fd„|D ¦   «         ¦  «         t          ‰t          ¦  «        sE	 ‰ j                             ‰¦  «        \  }}}	d                     ||	g¦  «        ‰ _	        d S #  Y d S xY wd S )Nc                 ó   — g | ]
\  }}}||f‘ŒS rZ   rZ   ©ru   rº   r»   r¼   s       r<   rx   z.Individual._set_identifier.<locals>.<listcomp>º  s2   € ð ð ð á�A�q˜!ð �A�ðð ð r?   c                 ó   — g | ]
\  }}}||f‘ŒS rZ   rZ   rú   s       r<   rx   z.Individual._set_identifier.<locals>.<listcomp>¾  s2   € ð ð ð á�A�q˜!ð �A�ðð ð r?   c                 ó,   •— g | ]\  }}‰||‰j         f‘ŒS rZ   r—   )ru   Úp1Úo1Úir;   s      €€r<   rx   z.Individual._set_identifier.<locals>.<listcomp>Ç  s(   ø€ ÐOÐOÐO¹¸¸R˜a  R¨¬Ð4ÐOÐOÐOr?   c                 ó,   •— g | ]\  }}||‰‰j         f‘ŒS rZ   r—   )ru   Ús1rý   rÿ   r;   s      €€r<   rx   z.Individual._set_identifier.<locals>.<listcomp>È  s(   ø€ ÐNÐNÐN¹¸¸R˜b " a¨¬Ð4ÐNÐNÐNr?   rc   )
rß   rf   rÙ   rÒ   ÚaddNrk   r   rd   re   rÃ   )
r;   rÿ   ÚoldStmtsOutÚ
oldStmtsInrý   rþ   r  rh   rg   ri   s
   ``        r<   Ú_set_identifierzIndividual._set_identifier·  sÂ  øø€ ØˆˆˆØ�Ô!Ò!Ñ!ðð à#œz×1Ò1°4Ô3DÀdÈDÐ2QÑRÔRðñ ô ˆKðð à#œz×1Ò1°4¸¸tÔ?PÐ2QÑRÔRðñ ô ˆJð &ð ?ð ?‘��BØ”
×!Ò! 4Ô#4°b¸"Ð"=Ñ>Ô>Ð>Ð>Ø$ð ?ð ?‘��BØ”
×!Ò! 2 r¨4Ô+<Ð"=Ñ>Ô>Ð>Ð>Ø !ˆDÔØŒJ�OŠOÐOÐOÐOÐOÐOÀ;ÐOÑOÔOÑPÔPÐPØŒJ�OŠOÐNÐNÐNÐNÐNÀ:ÐNÑNÔNÑOÔOÐOÝ˜!�UÑ#Ô#ð 	ðØ)-¬×)AÒ)AÀ!Ñ)DÔ)DÑ&�˜˜YØ ŸXšX v¨yÐ&9Ñ:Ô:�”
�
�
øðØ��øøøð	ð 	s   Ä*:E& Å&E+c              #   ón   K  — | j                              | j        t          j        ¬¦  «        D ]}|V — Œd S rì   )rf   r    rl   r   ÚsameAsrí   s     r<   Ú_get_sameAszIndividual._get_sameAsÒ  sC   è è € Ø”*×$Ò$¨T¬_ÍÌ
Ð$ÑSÔSð 	ð 	ˆBØˆHˆHˆHˆHð	ð 	r?   c                 ól  — t          |t          t          f¦  «        r;| j                             | j        t          j        t          |¦  «        f¦  «         d S |D ]Y}t          |t          t          f¦  «        sJ ‚| j                             | j        t          j        t          |¦  «        f¦  «         ŒZd S r8   )	rk   r,   r   rf   rÚ   rl   r   r  r$   )r;   Útermrƒ   s      r<   Ú_set_sameAszIndividual._set_sameAsÖ  s­   € õ �d�Z­Ð4Ñ5Ô5ð 	TØŒJ�NŠN˜DœO­S¬ZÕ9JÈ4Ñ9PÔ9PÐQÑRÔRÐRÐRÐRàð Tð T�Ý! !¥jµ*Ð%=Ñ>Ô>Ð>Ð>Ð>Ø”
—’ ¤µ´Õ=NÈqÑ=QÔ=QÐRÑSÔSÐSÐSðTð Tr?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_delete_sameAszIndividual._delete_sameAsà  ó   € àˆr?   ©NN)rW   rX   rY   Ú__doc__r
   rØ   rÝ   r=   rã   rå   rç   rê   rï   rò   rÎ   r   r¡   rô   rÊ   r÷   r  rl   r  r  r   r  r  rZ   r?   r<   r,   r,   n  ss  € € € € € ðð ð �5‘7”7€Lðð ð ðð ð ð ð9ð 9ð 9ð9ð 9ð 9ðð ð ðð ð ð
ð ð ðRð Rð Rð Ð˜œÑ!Ô!ðð ñ "Ô!ðð ˆ8�I˜y¨,Ñ7Ô7€Dð!ð !ð !ðð ð ð2 �˜/¨?Ñ;Ô;€Jðð ð ðTð Tð Tð Ð˜œ
Ñ#Ô#ðð ñ $Ô#ðð ˆX�k ;°Ñ?Ô?€F€F€Fr?   r,   z'http://attempto.ifi.uzh.ch/ace_lexicon#c                   ó8  ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zd„ Zd„ Z e	e
j        ¦  «        d	„ ¦   «         Z eeee¦  «        Zd
„ Zd„ Z e	e
j        ¦  «        d„ ¦   «         Z eeee¦  «        Zd„ Zd„ Z e	e
j        ¦  «        d„ ¦   «         Z eeee¦  «        Zˆ xZS )r   zC
    Terms in an OWL ontology with rdfs:label and rdfs:comment
    NFc                 óð   •— t          t          | ¦  «                             ||¦  «         |rG|                      ¦   «          | j        |                      |¦  «        fg| j        _        |r|g| _        d S d S d S r8   )	Úsuperr   r=   ÚsetupACEAnnotationsrl   ÚhandleAnnotationÚ	PN_sgPropÚextentr£   )r;   rl   rf   ÚnameAnnotationÚnameIsLabelÚ	__class__s        €r<   r=   zAnnotatableTerms.__init__ï  sŽ   ø€ ÝÕ Ñ%Ô%×.Ò.¨z¸5ÑAÔAÐAØð 	.Ø×$Ò$Ñ&Ô&Ð&à” $×"7Ò"7¸Ñ"GÔ"GÐHð%ˆDŒNÔ!ð ð .Ø,Ð-�”
�
�
ð	.ð 	.ð
.ð .r?   c                 óN   — t          |t          ¦  «        r|nt          |¦  «        S r8   )rk   r   )r;   r·   s     r<   r  z!AnnotatableTerms.handleAnnotationù  s!   € Ý  ¥gÑ.Ô.Ð@ˆsˆsµG¸C±L´LÐ@r?   c                 óŠ  — | j                              dt          d¬¦  «         t          t          j        t
          j        | j         ¬¦  «        | _        t          t          j        t
          j        | j         ¬¦  «        | _	        t          t          j
        t
          j        | j         ¬¦  «        | _        t          t          j        t
          j        | j         ¬¦  «        | _        t          t          j        t
          j        | j         ¬¦  «        | _        t          t          j        t
          j        | j         ¬¦  «        | _        d S )NÚaceF©Úoverride)ÚbaseTyperf   )rf   Úbindr   r1   ÚPN_sgr   ÚAnnotationPropertyr  ÚCN_sgÚ	CN_sgPropÚCN_plÚ	CN_plPropÚTV_sgÚ	TV_sgPropÚTV_plÚ	TV_plPropÚTV_vbgÚ
TV_vbgProprâ   s    r<   r  z$AnnotatableTerms.setupACEAnnotationsü  s  € ØŒ
�Š˜�v°ˆÑ6Ô6Ð6õ "ÝŒL¥3Ô#9ÀÄð
ñ 
ô 
ˆŒõ
 "ÝŒL¥3Ô#9ÀÄð
ñ 
ô 
ˆŒõ
 "ÝŒL¥3Ô#9ÀÄð
ñ 
ô 
ˆŒõ
 "ÝŒL¥3Ô#9ÀÄð
ñ 
ô 
ˆŒõ
 "ÝŒL¥3Ô#9ÀÄð
ñ 
ô 
ˆŒõ
 #ÝŒM¥CÔ$:À$Ä*ð
ñ 
ô 
ˆŒˆˆr?   c              #   ón   K  — | j                              | j        t          j        ¬¦  «        D ]}|V — Œd S rì   )rf   r    rl   r   Úcomment)r;   r/  s     r<   Ú_get_commentzAnnotatableTerms._get_comment  sL   è è € Ø”z×)Ò)Ø”O­t¬|ð *ñ 
ô 
ð 	ð 	ˆGð ˆMˆMˆMˆMð	ð 	r?   c                 óö   — |sd S t          |t          ¦  «        r.| j                             | j        t
          j        |f¦  «         d S |D ].}| j                             | j        t
          j        |f¦  «         Œ/d S r8   )rk   r   rf   rÚ   rl   r   r/  )r;   r/  rƒ   s      r<   Ú_set_commentzAnnotatableTerms._set_comment#  s†   € Øð 	ØˆFÝ�g�zÑ*Ô*ð 	CØŒJ�NŠN˜DœO­T¬\¸7ÐCÑDÔDÐDÐDÐDàð Cð C�Ø”
—’ ¤µ´¸qÐAÑBÔBÐBÐBðCð Cr?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_commentzAnnotatableTerms._del_comment,  r  r?   c              #   ón   K  — | j                              | j        t          j        ¬¦  «        D ]}|V — Œd S rì   )rf   r    rl   r   ÚseeAlso)r;   ÚsAs     r<   Ú_get_seeAlsozAnnotatableTerms._get_seeAlso2  sC   è è € Ø”*×$Ò$¨T¬_ÍÌÐ$ÑUÔUð 	ð 	ˆBØˆHˆHˆHˆHð	ð 	r?   c                 óp   — |sd S |D ].}| j                              | j        t          j        |f¦  «         Œ/d S r8   )rf   rÚ   rl   r   r6  )r;   ÚseeAlsosrº   s      r<   Ú_set_seeAlsozAnnotatableTerms._set_seeAlso6  sJ   € Øð 	ØˆFØð 	?ð 	?ˆAØŒJ�NŠN˜DœO­T¬\¸1Ð=Ñ>Ô>Ð>Ð>ð	?ð 	?r?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_seeAlsozAnnotatableTerms._del_seeAlso<  r  r?   c              #   ón   K  — | j                              | j        t          j        ¬¦  «        D ]}|V — Œd S rì   )rf   r    rl   r   r£   )r;   r£   s     r<   Ú
_get_labelzAnnotatableTerms._get_labelB  sC   è è € Ø”Z×'Ò'°´Í4Ì:Ð'ÑVÔVð 	ð 	ˆEØˆKˆKˆKˆKð	ð 	r?   c                 óö   — |sd S t          |t          ¦  «        r.| j                             | j        t
          j        |f¦  «         d S |D ].}| j                             | j        t
          j        |f¦  «         Œ/d S r8   )rk   r   rf   rÚ   rl   r   r£   )r;   r£   Úl_s      r<   Ú
_set_labelzAnnotatableTerms._set_labelF  s†   € Øð 	ØˆFÝ�e�ZÑ(Ô(ð 	BØŒJ�NŠN˜DœO­T¬Z¸Ð?Ñ@Ô@Ð@Ð@Ð@àð Bð B�Ø”
—’ ¤µ´¸RÐ@ÑAÔAÐAÐAðBð Br?   c                 ó   — dS )zÚ
        >>> g=Graph()
        >>> b=Individual(OWL.Restriction,g)
        >>> b.label = Literal('boo')
        >>> len(list(b.label))
        1
        >>> del b.label
        >>> len(list(b.label))
        0
        NrZ   râ   s    r<   Ú_delete_labelzAnnotatableTerms._delete_labelO  rõ   r?   )NNF)rW   rX   rY   r  r=   r  r  r0  r2  rÎ   r   r/  r4  rÊ   r8  r;  r6  r=  r?  rB  r£   rD  Ú__classcell__©r  s   @r<   r   r   ê  sw  ø€ € € € € ðð ð.ð .ð .ð .ð .ð .ðAð Að Að
ð 
ð 
ðBð ð ðCð Cð Cð Ð˜œÑ%Ô%ðð ñ &Ô%ðð ˆh�| \°<Ñ@Ô@€Gðð ð ð?ð ?ð ?ð Ð˜œÑ%Ô%ðð ñ &Ô%ðð ˆh�| \°<Ñ@Ô@€Gðð ð ðBð Bð Bð Ð˜œ
Ñ#Ô#ðð ñ $Ô#ðð ˆH�Z ¨]Ñ;Ô;€E€E€E€E€Er?   r   c                   ó„   ‡ — e Zd ZdZd	ˆ fd„	Zd„ Zd„ Zd„ Z ee	d         ¦  «        d„ ¦   «         Z
 eeee
¦  «        Zˆ xZS )
r/   zThe owl ontology metadataNc                 ó@  •— t          t          | ¦  «                             ||¦  «         |r|pg | _        |r|pg | _        | j        t          j        t          j        f| j	        vr8| j	         
                    | j        t          j        t          j        f¦  «         d S d S r8   )r  r/   r=   Úimportsr/  rl   r   r¡   r   rf   rÚ   )r;   rl   rI  r/  rf   r  s        €r<   r=   zOntology.__init__c  s�   ø€ Ý�h˜ÑÔ×&Ò& z°5Ñ9Ô9Ð9ØÐ* 7Ð0¨bˆŒØÐ* 7Ð0¨bˆŒØŒO�SœX¥s¤|Ð4¸D¼JÐFÐFØŒJ�NŠN˜DœO­S¬Xµs´|ÐDÑEÔEÐEÐEÐEð GÐFr?   c                 ó^   — | j                              | j        t          j        |f¦  «         d S r8   )rf   Úsetrl   r   ÚversionInfo)r;   Úversions     r<   Ú
setVersionzOntology.setVersionj  s'   € ØŒ
�Š˜œ­¬¸'ÐBÑCÔCÐCÐCÐCr?   c              #   óp   K  — | j                              | j        t          d         ¬¦  «        D ]}|V — Œd S )NrI  r‡   )rf   r    rl   r   )r;   r^   s     r<   Ú_get_importszOntology._get_importsm  sN   è è € Ø”:×%Ò%Ø”O­s°9¬~ð &ñ 
ô 
ð 	ð 	ˆCð ˆIˆIˆIˆIð	ð 	r?   c                 ór   — |sd S |D ]/}| j                              | j        t          d         |f¦  «         Œ0d S )NrI  )rf   rÚ   rl   r   )r;   rD   r¼   s      r<   Ú_set_importszOntology._set_importss  sP   € Øð 	ØˆFØð 	Að 	AˆAØŒJ�NŠN˜DœO­S°¬^¸QÐ?Ñ@Ô@Ð@Ð@ð	Að 	Ar?   rI  c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_importszOntology._del_importsy  r  r?   )NNNN)rW   rX   rY   r  r=   rN  rP  rR  rÎ   r   rT  rÊ   rI  rE  rF  s   @r<   r/   r/   `  s°   ø€ € € € € Ø#Ð#ðFð Fð Fð Fð Fð FðDð Dð Dðð ð ðAð Að Að Ð˜˜IœÑ'Ô'ðð ñ (Ô'ðð ˆh�| \°<Ñ@Ô@€G€G€G€G€Gr?   r/   c              #   óÖ   K  — t          ¦   «         }|                      t          j        t          j        ¬¦  «        D ],}||vr&|                     |¦  «         t          |¦  «        V — Œ-d S rÅ   )rK  rÇ   r   r¡   r   r"   rÚ   )rf   ÚprevClassesrƒ   s      r<   r   r   €  si   è è € Ý‘%”%€KØ�^Š^¥c¤hµs´yˆ^ÑAÔAð ð ˆØ�KÐÐØ�OŠO˜AÑÔÐÝ˜‘(”(ˆNˆNˆNøðð r?   c              #   óþ  K  — t          ¦   «         }|                      d t          j        t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        gf¦  «        D ]|\  }}}|t          j        t          j        t          j        t          j
        fv rt          j
        }nt          j	        }||vr)|                     |¦  «         t          || |¬¦  «        V — Œ}d S )N©rf   r   )rK  rª   r   r¡   r   ÚSymmetricPropertyÚFunctionalPropertyÚInverseFunctionalPropertyÚTransitivePropertyÚDatatypePropertyÚObjectPropertyr#  rÚ   r1   )rf   Ú	prevPropsrº   r»   r¼   ÚbTypes         r<   r   r   ˆ  só   è è € Ý‘”€IØ×(Ò(àÝŒHåÔ%ÝÔ&ÝÔ-ÝÔ&ÝÔ$ÝÔ"ÝÔ&ðð	
ñô ð ;ð ;‰ˆˆ1ˆað ÝÔ!ÝÔ)ÝÔ"ÝÔð	
ð 
ð 
õ Ô&ˆEˆEåÔ(ˆEØ�IÐÐØ�MŠM˜!ÑÔÐÝ˜1 E°EÐ:Ñ:Ô:Ð:Ð:Ð:øð5;ð ;r?   c                   ó"   — e Zd Zd„ Zdd„Zd„ ZdS )r#   c                 ó@   — t          t          | |z   ¦  «        ¦  «        S r8   )r"   r   ©r;   Únames     r<   r
  zClassNamespaceFactory.term¨  s   € Ý•V˜D 4™KÑ(Ô(Ñ)Ô)Ð)r?   Nc                 ó,   — |                       |¦  «        S r8   )r
  )r;   ÚkeyÚdefaults      r<   Ú__getitem__z!ClassNamespaceFactory.__getitem__«  s   € Ø�yŠy˜‰~Œ~Ðr?   c                 ód   — |                      d¦  «        rt          ‚|                      |¦  «        S )NÚ__)Ú
startswithÚAttributeErrorr
  rc  s     r<   Ú__getattr__z!ClassNamespaceFactory.__getattr__®  s,   € Ø�?Š?˜4Ñ Ô ð 	#Ý Ð à—9’9˜T‘?”?Ð"r?   r8   )rW   rX   rY   r
  rh  rm  rZ   r?   r<   r#   r#   §  sF   € € € € € ð*ð *ð *ðð ð ð ð#ð #ð #ð #ð #r?   r#   z0http://www.w3.org/2002/07/owl#resourcePropertiesc              #   óì  K  — t           j        | j        v r¥	 t          | t          j        ¦  «        } | j                             | j        t           j        t           j	        gdf¦  «        D ]G\  }}}t          |d¬¦  «        }t          |t          ¦  «        rt          |¦  «        D ]}|V — ŒŒC|V — ŒHdS #  Y dS xY wt          | t          j        ¦  «        } t          | t          ¦  «        rM| D ]H}t          |d¬¦  «        }t          |j        t          ¦  «        rt          |¦  «        D ]}|V — ŒŒD|V — ŒIdS | j        D ]7}t          |j        t          ¦  «        rt          |¦  «        D ]}|V — ŒŒ3|V — Œ8| j                             t!          | ¦  «        t"          df¦  «        D ]N\  }}}t          |t          ¦  «        r/t          t          |t          j        ¦  «        ¦  «        D ]}|V — ŒŒJ|V — ŒOdS )z‹
    Takes a Class instance and returns a generator over the classes that
    are involved in its definition, ignoring unnamed classes
    NT©ÚskipOWLClassMembership)r   r3   r¡   r!   r,   rØ   rª   rl   r¤   r¦   r"   rk   r   r'   r   Ú
subClassOfr$   r   )Úclsrº   r»   Ú
innerClsIdÚinnerClsÚ_cÚ_clsr¼   s           r<   r'   r'   É  sn  è è € õ
 „˜#œ(Ð"Ð"ð	Ý˜C¥Ô!8Ñ9Ô9ˆCØ$'Ô$4×$DÒ$DØ”¥#Ô"3µSÔ5GÐ!HÈ$ÐOñ%ô %ð #ð #Ñ ��1�jõ ! ÀDÐIÑIÔI�Ý˜j­%Ñ0Ô0ð #Ý,¨XÑ6Ô6ð !ð !˜Ø ˜˜˜˜ð!ð #�N�N�N�Nð#ð #øð	ØˆDˆDøøøå˜�ZÔ4Ñ5Ô5ˆÝ�c�<Ñ(Ô(ð 	#Øð ð �Ý˜T¸$Ð?Ñ?Ô?�Ý˜dœo­uÑ5Ô5ð Ý,¨TÑ2Ô2ð !ð !˜Ø ˜˜˜˜ð!ð �J�J�J�Jðð ð  œNð #ð #�Ý˜hÔ1µ5Ñ9Ô9ð #Ý,¨XÑ6Ô6ð !ð !˜Ø ˜˜˜˜ð!ð #�N�N�N�NØÔ+×;Ò;Ý" 3Ñ'Ô'­¸$Ð?ñô ð #ð #‘��1�aõ ˜a¥Ñ'Ô'ð #Ý,­Y°q½*Ô:QÑ-RÔ-RÑSÔSð !ð !˜Ø ˜˜˜˜ð!ð #�N�N�N�Nð#ð #s   —BB3 Â3B8c                 óˆ  — d„ }t          | t          j        ¦  «        } | j        D ]} ||¦  «         Œ| j                             | j        t          j        df¦  «         | j        D ]} ||¦  «         Œ| j                             | j        t          j        df¦  «         | j
        }|r7| j                             | j        t          j
        df¦  «          ||¦  «         t          | t          ¦  «        rM| D ]} ||¦  «         Œ|                      ¦   «          | j                             | j        | j        df¦  «         dS dS )at  
    Recursively clear the given class, continuing
    where any related class is an anonymous class

    >>> EX = Namespace('http://example.com/')
    >>> namespace_manager = NamespaceManager(Graph())
    >>> namespace_manager.bind('ex', EX, override=False)
    >>> namespace_manager.bind('owl', OWL, override=False)
    >>> g = Graph()
    >>> g.namespace_manager = namespace_manager
    >>> Individual.factoryGraph = g
    >>> classB = Class(EX.B)
    >>> classC = Class(EX.C)
    >>> classD = Class(EX.D)
    >>> classE = Class(EX.E)
    >>> classF = Class(EX.F)
    >>> anonClass = EX.someProp | some | classD #doctest: +SKIP
    >>> classF += anonClass #doctest: +SKIP
    >>> list(anonClass.subClassOf) #doctest: +SKIP
    [Class: ex:F ]
    >>> classA = classE | classF | anonClass #doctest: +SKIP
    >>> classB += classA #doctest: +SKIP
    >>> classA.equivalentClass = [Class()] #doctest: +SKIP
    >>> classB.subClassOf = [EX.someProp | some | classC] #doctest: +SKIP
    >>> classA #doctest: +SKIP
    ( ex:E OR ex:F OR ( ex:someProp SOME ex:D ) )
    >>> DeepClassClear(classA) #doctest: +SKIP
    >>> classA #doctest: +SKIP
    (  )
    >>> list(anonClass.subClassOf) #doctest: +SKIP
    []
    >>> classB #doctest: +SKIP
    Class: ex:B SubClassOf: ( ex:someProp SOME ex:C )

    >>> otherClass = classD | anonClass #doctest: +SKIP
    >>> otherClass #doctest: +SKIP
    ( ex:D OR ( ex:someProp SOME ex:D ) )
    >>> DeepClassClear(otherClass) #doctest: +SKIP
    >>> otherClass #doctest: +SKIP
    (  )
    >>> otherClass.delete() #doctest: +SKIP
    >>> list(g.triples((otherClass.identifier, None, None))) #doctest: +SKIP
    []
    c                 ól   — t          t          | ¦  «        t          ¦  «        rt          | ¦  «         d S d S r8   )rk   r$   r   r(   )Ú_classs    r<   ÚdeepClearIfBNodez(DeepClassClear.<locals>.deepClearIfBNode%  s;   € ÝÕ'¨Ñ/Ô/µÑ7Ô7ð 	#Ý˜6Ñ"Ô"Ð"Ð"Ð"ð	#ð 	#r?   N)r!   r,   rØ   rq  rf   rÒ   rl   r   ÚequivalentClassr   rŸ   rk   r   ÚclearÚ	_operator)ÚclassToPrunerz  rƒ   ÚinverseClasss       r<   r(   r(   ÷  s„  € ð\#ð #ð #õ ˜\­:Ô+BÑCÔC€LØÔ$ð ð ˆØÐ˜ÑÔÐÐØÔ×Ò˜|Ô6½¼ÈÐNÑOÔOÐOØÔ)ð ð ˆØÐ˜ÑÔÐÐØÔ×Ò˜|Ô6½Ô8KÈTÐRÑSÔSÐSØÔ,€LØð 'ØÔ×!Ò! <Ô#:½CÔ<LÈdÐ"SÑTÔTÐTØÐ˜Ñ&Ô&Ð&Ý�,¥Ñ-Ô-ð 
Øð 	 ð 	 ˆAØÐ˜QÑÔÐÐØ×ÒÑÔÐØÔ×!Ò!ØÔ$ lÔ&<¸dÐCñ	
ô 	
ð 	
ð 	
ð 	
ð	
ð 
r?   c                   ó   — e Zd Zd„ Zd„ ZdS )r-   c                 ó   — || _         d S r8   ©Úmsg)r;   rƒ  s     r<   r=   zMalformedClass.__init__>  s   € ØˆŒˆˆr?   c                 ó   — | j         S r8   r‚  râ   s    r<   Ú__repr__zMalformedClass.__repr__A  s	   € ØŒxˆr?   N)rW   rX   rY   r=   r…  rZ   r?   r<   r-   r-   =  s2   € € € € € ðð ð ðð ð ð ð r?   r-   c                 ó.  — |d u r| j         p|}|                     t          | ¦  «        t          j        ¬¦  «        D �]×}|t
          j        k    �rt          | ¦  «        |dœ}|                     t          | ¦  «        d d f¦  «        D ]x\  }}}|t          j        k    rb|t
          j        k    r||d<   Œ,|t          j	        vrŒ;||t          |                     t          t
          ¦  «        ¦  «        d         ¦  «        <   Œyt          d„ t          j	        D ¦   «         ¦  «                             |¦  «        st          d¦  «        ‚t          di |¤Žc S |                     t          | ¦  «        t
          j        t
          j        t
          j        gd f¦  «        D ]Z\  }}}|t
          j        k    r"t'          t          | ¦  «        |¬¦  «        c c S t)          t          | ¦  «        ||¬¦  «        c c S t+          t          | ¦  «        |d	¬
¦  «        c S d S )Nr‡   )rl   rf   r¢   éÿÿÿÿc           	      ó‚   — g | ]<}t          |                     t          t          ¦  «        ¦  «        d          ¦  «        ‘Œ=S )r‡  )r   Úsplitr   )ru   rÿ   s     r<   rx   zCastClass.<locals>.<listcomp>S  s7   € ÐRÐRÐR°•�Q—W’W�S¥™XœXÑ&Ô& rÔ*Ñ+Ô+ÐRÐRÐRr?   zMalformed owl:Restrictionr—   )Úoperatorrf   T©rf   rp  rZ   )rØ   r    r$   r   r¡   r   r3   rÙ   r¢   ÚrestrictionKindsr   r‰  rK  Úintersectionr-   rª   r™   r�   rž   r)   r   r"   )rƒ   rf   rñ   ÚkwArgsrº   r»   r¼   s          r<   r!   r!   E  s1  € Ø�TˆMÐ,˜aœnÐ5°€EØ—’Õ&7¸Ñ&:Ô&:ÅcÄh�ÑOÔOð Yñ YˆØ•3”?Ò"Ñ"Ý$5°aÑ$8Ô$8À5ÐIÐIˆFØ Ÿ=š=Õ*;¸AÑ*>Ô*>ÀÀdÐ)KÑLÔLð ?ð ?‘��1�aØ�œ’=�=Ø�CœNÒ*Ð*Ø/0˜˜|Ñ,Ð,à¥KÔ$@Ð@Ð@Ø$Ø=>˜�s 1§7¢7­3­s©8¬8Ñ#4Ô#4°RÔ#8Ñ9Ô9Ñ:øÝØRÐRµ[Ô5QÐRÑRÔRñô çŠl˜6Ñ"Ô"ðBõ %Ð%@ÑAÔAÐAÝÐ(Ð( Ð(Ð(Ð(Ð(Ð(à ×0Ò0å% aÑ(Ô(ÝÔ'­¬µc´iÐ@Øðñô ð 
Wð 
W‘��1�að �œ	’>�>Ý*Õ+<¸QÑ+?Ô+?ÀuÐMÑMÔMÐMÐMÐMÐMÐMå'Õ(9¸!Ñ(<Ô(<ÀqÐPUÐVÑVÔVÐVÐVÐVÐVÐVåÕ*¨1Ñ-Ô-°UÐSWÐXÑXÔXÐXÐXÐXð;Yð Yr?   c                   ó²  ‡ — e Zd ZdZd„ Zd„ Zd„ Z	 	 	 	 	 	 	 	 	 	 	 d'ˆ fd„	Zd(d„Zd	„ Z	 e
ej        ¦  «        d
„ ¦   «         Z eee	e¦  «        Zej        fd„Z eed„ ¦  «        Zd„ Zd„ Z eee¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z e
ej         ¦  «        d„ ¦   «         Z! eeee!¦  «        Z d„ Z"d„ Z# e
e$j%        ¦  «        d„ ¦   «         Z& ee"e#e&¦  «        Z%d„ Z'd„ Z( e
e$j)        ¦  «        d„ ¦   «         Z* ee'e(e*¦  «        Z)d„ Z+d „ Z, e
e$j-        ¦  «        d!„ ¦   «         Z. ee+e,e.¦  «        Z-d"„ Z/ ee/¦  «        Z0d#„ Z1d$„ Z2d)d&„Z3ˆ xZ4S )*r"   ul  
    'General form' for classes:

    The Manchester Syntax (supported in Protege) is used as the basis for the
    form of this class

    See: http://owl-workshop.man.ac.uk/acceptedLong/submission_9.pdf:

    [Annotation]
    â€˜Class:â€™ classID {Annotation
    ( (â€˜SubClassOf:â€™ ClassExpression)
    | (â€˜EquivalentToâ€™ ClassExpression)
    | (â€™DisjointWithâ€™ ClassExpression)) }

    Appropriate excerpts from OWL Reference:

    ".. Subclass axioms provide us with partial definitions: they represent
     necessary but not sufficient conditions for establishing class
     membership of an individual."

    ".. A class axiom may contain (multiple) owl:equivalentClass statements"

    "..A class axiom may also contain (multiple) owl:disjointWith statements.."

    "..An owl:complementOf property links a class to precisely one class
      description."

    c                 óž  — | j         D ]*}t          || j        ¦  «                             |¦  «         Œ+| j        D ]*}t          || j        ¦  «                             |¦  «         Œ+| j        D ]*}t          || j        ¦  «                             |¦  «         Œ+| j        r/t          | j        | j        ¦  «                             |¦  «         d S d S r8   )rq  r!   rf   rÝ   r{  ÚdisjointWithrŸ   )r;   rf   Úcls      r<   Ú
_serializezClass._serialize…  sá   € Ø”/ð 	7ð 	7ˆBÝ�b˜$œ*Ñ%Ô%×/Ò/°Ñ6Ô6Ð6Ð6ØÔ&ð 	7ð 	7ˆBÝ�b˜$œ*Ñ%Ô%×/Ò/°Ñ6Ô6Ð6Ð6ØÔ#ð 	7ð 	7ˆBÝ�b˜$œ*Ñ%Ô%×/Ò/°Ñ6Ô6Ð6Ð6ØÔð 	FÝ�dÔ'¨¬Ñ4Ô4×>Ò>¸uÑEÔEÐEÐEÐEð	Fð 	Fr?   c                 ó¤   — | j                              | j        d d f¦  «        D ]}|                     |¦  «         Œ|                      |¦  «         d S r8   )rf   rÙ   rl   rÚ   r“  rÛ   s      r<   rÝ   zClass.serialize�  sS   € Ø”J×&Ò&¨¬¸¸tÐ'DÑEÔEð 	ð 	ˆDØ�IŠI�d‰OŒOˆOˆOØ�Š˜ÑÔÐÐÐr?   c                 óì   — t          |t          ¦  «        r|\  }}n|}|}|r'| j        |                      |¦  «        fg| j        _        |r)| j        |                      |¦  «        fg| j        _        d S d S r8   )rk   Útuplerl   r  r%  r  r'  )r;   ÚnounAnnotationsr%  r'  s       r<   ÚsetupNounAnnotationszClass.setupNounAnnotations”  s”   € Ý�o¥uÑ-Ô-ð 	(Ø#2Ñ ˆI�y�yà'ˆIØ'ˆIàð 	à” $×"7Ò"7¸	Ñ"BÔ"BÐCð%ˆDŒNÔ!ð ð 	à” $×"7Ò"7¸	Ñ"BÔ"BÐCð%ˆDŒNÔ!Ð!Ð!ð	ð 	r?   NFc                 óú  •— t          t          | ¦  «                             |||
|¦  «         |	r|                      |	¦  «         |s€| j        t
          j        t          j        f| j        vr[| j        t
          j        t          j	        f| j        vr6| j         
                    | j        t
          j        t          j        f¦  «         |r|pg | _        |r|pg | _        |r|pg | _        |r|| _        |r|pg | _        d S r8   )r  r"   r=   r˜  rl   r   r¡   r   rf   r3   rÚ   rq  r{  r‘  rŸ   r/  )r;   rl   rq  r{  r‘  rŸ   rf   rp  r/  r—  r  r  r  s               €r<   r=   zClass.__init__¤  sý   ø€ õ 	�e�TÑÔ×#Ò# J°°~À{ÑSÔSÐSàð 	7Ø×%Ò% oÑ6Ô6Ð6à&ð	Cà”¥#¤(­C¬IÐ6¸d¼jÐHÐHØ”¥#¤(­C¬OÐ<ÀDÄJÐNÐNàŒJ�NŠN˜DœO­S¬Xµs´yÐAÑBÔBÐBà$Ð3¨Ð9°rˆŒØ.ÐB°?ÐHÀbˆÔØ(Ð9¨\Ð?¸RˆÔØð 	-Ø ,ˆDÔØÐ* 7Ð0¨bˆŒˆˆr?   c              #   óz   K  — |d u r| j         p|                     t          j        | j        ¬¦  «        D ]}|V — Œd S rÅ   )rf   rÇ   r   r¡   rl   )r;   rf   Úmembers      r<   Ú_get_extentzClass._get_extentÄ  s[   è è € Ø �}Ð3¨¬Ð<°u×FÒFÝ”h t¤ð Gñ 
ô 
ð 	ð 	ˆFð ˆLˆLˆLˆLð	ð 	r?   c                 óŠ   — |sd S |D ];}| j                              t          |¦  «        t          j        | j        f¦  «         Œ<d S r8   )rf   rÚ   r$   r   r¡   rl   )r;   rD   Úms      r<   Ú_set_extentzClass._set_extentÊ  sW   € Øð 	ØˆFØð 	Nð 	NˆAØŒJ�NŠNÕ-¨aÑ0Ô0µ#´(¸D¼OÐLÑMÔMÐMÐMð	Nð 	Nr?   c                 ó   — d S r8   rZ   râ   s    r<   Ú	_del_typezClass._del_typeÐ  r  r?   c              #   óP   K  — | j                              | |¬¦  «        D ]}|V — Œd S rì   )rf   r    )r;   r
  Ú
annotations      r<   Ú_get_annotationzClass._get_annotationÖ  sC   è è € Øœ*×,Ò,°TÀTÐ,ÑJÔJð 	ð 	ˆJØÐÐÐÐð	ð 	r?   c                 ó   — | S r8   rZ   )rC   s    r<   rE   zClass.<lambda>Ú  s   € °Q€ r?   c                 óD   — t          d¦  «        t          j        | j        fS )NÚCLASS)r	   r   r¡   rl   râ   s    r<   Ú_get_extentQueryzClass._get_extentQueryÜ  s   € Ý˜Ñ!Ô!¥3¤8¨T¬_Ð=Ð=r?   c                 ó   — d S r8   rZ   rH   s     r<   Ú_set_extentQueryzClass._set_extentQueryß  s   € Øˆr?   c                 ó*   — t          | j        ¦  «        S )zy
        >>> b=Class(OWL.Restriction)
        >>> c=Class(OWL.Restriction)
        >>> len(set([b,c]))
        1
        )Úhashrl   râ   s    r<   Ú__hash__zClass.__hash__ä  s   € õ �D”OÑ$Ô$Ð$r?   c                 óz   — t          |t          ¦  «        sJ t          |¦  «        ¦   «         ‚| j        |j        k    S r8   )rk   r"   Úreprrl   rH   s     r<   Ú__eq__zClass.__eq__í  s6   € Ý˜%¥Ñ'Ô'Ð4Ð4­¨e©¬Ñ4Ô4Ð4ØŒ %Ô"2Ò2Ð2r?   c                 óD   — t          |t          ¦  «        sJ ‚| g|_        | S r8   )rk   r"   rq  rH   s     r<   Ú__iadd__zClass.__iadd__ñ  s'   € Ý˜%¥Ñ'Ô'Ð'Ð'Ð'Ø ˜6ˆÔØˆr?   c                 ó¦   — t          |t          ¦  «        sJ ‚| j                             t	          |¦  «        t
          j        | j        f¦  «         | S r8   )rk   r"   rf   rÒ   r$   r   rq  rl   rH   s     r<   Ú__isub__zClass.__isub__ö  sG   € Ý˜%¥Ñ'Ô'Ð'Ð'Ð'ØŒ
×ÒÕ,¨UÑ3Ô3µT´_ÀdÄoÐVÑWÔWÐWØˆr?   c                 ó"   — t          | ¬¦  «        S )z@
        Shorthand for Manchester syntax's not operator
        )rŸ   )r"   râ   s    r<   Ú
__invert__zClass.__invert__û  s   € õ  $Ð'Ñ'Ô'Ð'r?   c                 óH   — t          t          j        | |g| j        ¬¦  «        S )z‚
        Construct an anonymous class description consisting of the union of
        this class and 'other' and return it
        ©rŠ  Úmembersrf   )r   r   r�   rf   rH   s     r<   rL   zClass.__or__  s*   € õ
 Ý”[¨4°¨-¸t¼zð
ñ 
ô 
ð 	
r?   c                 óH   — t          t          j        | |g| j        ¬¦  «        S )a”  
        Construct an anonymous class description consisting of the
        intersection of this class and 'other' and return it

        >>> exNs = Namespace('http://example.com/')
        >>> namespace_manager = NamespaceManager(Graph())
        >>> namespace_manager.bind('ex', exNs, override=False)
        >>> namespace_manager.bind('owl', OWL, override=False)
        >>> g = Graph()
        >>> g.namespace_manager = namespace_manager

        Chaining 3 intersections

        >>> female = Class(exNs.Female, graph=g)
        >>> human = Class(exNs.Human, graph=g)
        >>> youngPerson = Class(exNs.YoungPerson, graph=g)
        >>> youngWoman = female & human & youngPerson
        >>> youngWoman #doctest: +SKIP
        ex:YoungPerson THAT ( ex:Female AND ex:Human )
        >>> isinstance(youngWoman, BooleanClass)
        True
        >>> isinstance(youngWoman.identifier, BNode)
        True
        r¸  )r   r   r™   rf   rH   s     r<   Ú__and__zClass.__and__
  s+   € õ2 ÝÔ'°$¸°ÀdÄjð
ñ 
ô 
ð 	
r?   c              #   ó˜   K  — | j                              | j        t          j        ¬¦  «        D ]}t          || j         d¬¦  «        V — Œd S )Nr‡   Tr‹  )rf   r    rl   r   rq  r"   ©r;   Úancs     r<   Ú_get_subClassOfzClass._get_subClassOf'  se   è è € Ø”:×%Ò%Ø”O­t¬ð &ñ 
ô 
ð 	Lð 	LˆCõ ˜ 4¤:ÀdÐKÑKÔKÐKÐKÐKÐKð	Lð 	Lr?   c                 óŠ   — |sd S |D ];}| j                              | j        t          j        t          |¦  «        f¦  «         Œ<d S r8   )rf   rÚ   rl   r   rq  r$   ©r;   rD   Úscs      r<   Ú_set_subClassOfzClass._set_subClassOf-  sX   € Øð 	ØˆFØð 	Vð 	VˆBØŒJ�NŠN˜DœO­T¬_Õ>OÐPRÑ>SÔ>SÐTÑUÔUÐUÐUð	Vð 	Vr?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_subClassOfzClass._del_subClassOf3  r  r?   c              #   ó–   K  — | j                              | j        t          j        ¬¦  «        D ]}t          || j         ¬¦  «        V — Œd S ©Nr‡   r—   )rf   r    rl   r   r{  r"   )r;   Úecs     r<   Ú_get_equivalentClasszClass._get_equivalentClass9  s`   è è € Ø”*×$Ò$Ø”O­sÔ/Bð %ñ 
ô 
ð 	.ð 	.ˆBõ ˜ $¤*Ð-Ñ-Ô-Ð-Ð-Ð-Ð-ð	.ð 	.r?   c                 óŠ   — |sd S |D ];}| j                              | j        t          j        t          |¦  «        f¦  «         Œ<d S r8   )rf   rÚ   rl   r   r{  r$   rÁ  s      r<   Ú_set_equivalentClasszClass._set_equivalentClass?  s]   € Øð 	ØˆFØð 	ð 	ˆBØŒJ�NŠNØ”¥#Ô"5Õ7HÈÑ7LÔ7LÐMñô ð ð ð	ð 	r?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_equivalentClasszClass._del_equivalentClassG  r  r?   c              #   ó–   K  — | j                              | j        t          j        ¬¦  «        D ]}t          || j         ¬¦  «        V — Œd S rÇ  )rf   r    rl   r   r‘  r"   )r;   r`   s     r<   Ú_get_disjointWithzClass._get_disjointWithO  s`   è è € Ø”*×$Ò$Ø”O­sÔ/?ð %ñ 
ô 
ð 	.ð 	.ˆBõ ˜ $¤*Ð-Ñ-Ô-Ð-Ð-Ð-Ð-ð	.ð 	.r?   c                 óŠ   — |sd S |D ];}| j                              | j        t          j        t          |¦  «        f¦  «         Œ<d S r8   )rf   rÚ   rl   r   r‘  r$   )r;   rD   rƒ   s      r<   Ú_set_disjointWithzClass._set_disjointWithU  sY   € Øð 	ØˆFØð 	Vð 	VˆAØŒJ�NŠN˜DœO­SÔ-=Õ?PÐQRÑ?SÔ?SÐTÑUÔUÐUÐUð	Vð 	Vr?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_disjointWithzClass._del_disjointWith[  r  r?   c                 ó  — t          | j                             | j        t          j        ¬¦  «        ¦  «        }|sd S t          |¦  «        dk    rt          |d         | j        ¬¦  «        S t          t          |¦  «        ¦  «        ‚)Nr‡   r|   r   r—   )	r_   rf   r    rl   r   rŸ   r›   r"   r­   )r;   Úcomps     r<   Ú_get_complementOfzClass._get_complementOfa  sy   € ÝØŒJ×Ò t¤Å#ÔBRÐÑSÔSñ
ô 
ˆð ð 	'Ø�4Ý�‰YŒY˜!Š^ˆ^Ý˜˜aœ¨¬
Ð3Ñ3Ô3Ð3å�C ™IœIÑ&Ô&Ð&r?   c                 ó€   — |sd S | j                              | j        t          j        t          |¦  «        f¦  «         d S r8   )rf   rÚ   rl   r   rŸ   r$   rH   s     r<   Ú_set_complementOfzClass._set_complementOfl  s>   € Øð 	ØˆFØŒ
�Š˜œ­Ô)9Õ;LÈUÑ;SÔ;SÐTÑUÔUÐUÐUÐUr?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_complementOfzClass._del_complementOfq  r  r?   c              #   óÄ  K  — t          j        | j        | j        ¦  «        D ]}|V — Œt	          | j                             t          j        | j        ¦  «        ¦  «        }|r�t          | j         
                    t          j        |¦  «        ¦  «        }|r	|d         }n|}| j                             t          j        |¦  «        D ]*}t          |t          ¦  «        rt!          |d¬¦  «        V — Œ+| j                             | j        t          j        ¦  «        D ]D}t'          |g| j        ¬¦  «        D ]*}t          |t          ¦  «        rt!          |d¬¦  «        V — Œ+ŒEdS )aw  
        computed attributes that returns a generator over taxonomic 'parents'
        by disjunction, conjunction, and subsumption

        >>> from rdflib.util import first
        >>> exNs = Namespace('http://example.com/')
        >>> namespace_manager = NamespaceManager(Graph())
        >>> namespace_manager.bind('ex', exNs, override=False)
        >>> namespace_manager.bind('owl', OWL, override=False)
        >>> g = Graph()
        >>> g.namespace_manager = namespace_manager
        >>> Individual.factoryGraph = g
        >>> brother = Class(exNs.Brother)
        >>> sister = Class(exNs.Sister)
        >>> sibling = brother | sister
        >>> sibling.identifier = exNs.Sibling
        >>> sibling #doctest: +SKIP
        ( ex:Brother OR ex:Sister )
        >>> first(brother.parents) #doctest: +SKIP
        Class: ex:Sibling EquivalentTo: ( ex:Brother OR ex:Sister )
        >>> parent = Class(exNs.Parent)
        >>> male = Class(exNs.Male)
        >>> father = parent & male
        >>> father.identifier = exNs.Father
        >>> list(father.parents) #doctest: +SKIP
        [Class: ex:Parent , Class: ex:Male ]

        r‡  Tro  r—   N)Ú	itertoolsÚchainrq  r{  r   rØ   rÇ   r   rl   r_   Útransitive_subjectsÚrestr   r�   rk   r   r"   r    r™   r0   )r;   ÚparentÚlinkÚlistSiblingsÚcollectionHeadÚdisjClsÚrdfListr›  s           r<   Ú_get_parentszClass._get_parentsw  sz  è è € õ:  ”o d¤o°tÔ7KÑLÔLð 	ð 	ˆFØˆLˆLˆLˆLå�TÔ&×/Ò/µ´	¸4¼?ÑKÔKÑLÔLˆØð 	FÝ Ô 1× EÒ EÅcÄhÐPTÑ UÔ UÑVÔVˆLØð &Ø!-¨bÔ!1��à!%�ØÔ,×5Ò5µc´kÀ>ÑRÔRð Fð F�Ý˜g¥vÑ.Ô.ð FÝ ÀÐEÑEÔEÐEÐEÐEøØÔ(×0Ò0°´Å#ÔBTÑUÔUð 	Eð 	EˆGÝ)¨7¨)¸4Ô;LÐMÑMÔMð Eð E�Ý˜f¥fÑ-Ô-ð EÝ ¸tÐDÑDÔDÐDÐDÐDøðEð	Eð 	Er?   c                 ón  — | j         t          j        t          j        f| j        v rdS t          | j        ¦  «        }| j                             | j         t          j	        t          j
        gd f¦  «        D ]0\  }}}|                     t          || j        |¬¦  «        ¦  «         Œ1|D ]} dS | j        rdS dS )NFr”   T)rl   r   r¡   r   r3   rf   r_   r{  rª   r™   r�   rš   r.   rŸ   )r;   rÈ  Ú	boolClassr»   rå  Úes         r<   ÚisPrimitivezClass.isPrimitive¨  sÅ   € ØŒO�SœX¥s¤Ð7¸4¼:ÐEÐEØ�5å�$Ô&Ñ'Ô'ˆØ%)¤Z×%?Ò%?ØŒ_�sÔ1µ3´;Ð?ÀÐFñ&
ô &
ð 	Hð 	HÑ!ˆI�q˜'ð �IŠIÕ& w°´
ÀAÐFÑFÔFÑGÔGÐGÐGØð 	ð 	ˆAØ�5�5ØÔð 	Ø�5Øˆtr?   c              #   ón   K  — | j                              t          j        | j        ¬¦  «        D ]}|V — Œd S rÅ   )rf   rÇ   r   rq  rl   )r;   rº   s     r<   ÚsubSumpteeIdszClass.subSumpteeIds·  sC   è è € Ø”×$Ò$­t¬ÀtÄÐ$ÑWÔWð 	ð 	ˆAØˆGˆGˆGˆGð	ð 	r?   Tc                 óÀ  ‡ — g }t          ‰ j        ¦  «        }t          ‰ j        ¦  «        }‰ j                             ‰ j        t          j        t          j        gdf¦  «        D ]0\  }}}| 	                    t          |‰ j        |¬¦  «        ¦  «         Œ1t          ‰ j        ¦  «        }	‰ j        }
|
r|	 	                    |
¦  «         d}t          ‰ j                             ‰ j        t          j        ¦  «        ¦  «        }|rd|d         z   dz   pd}|ra|rd}nd}ˆ fd	„|D ¦   «         }|rd
|z  }| 	                    d|                     d„ |D ¦   «         ¦  «        z  ¦  «         |rd|d         z   |d<   |rPˆ fd„|D ¦   «         }|rd|z  }| 	                    dd                     |¦  «        z  ¦  «         |rd|d         z   |d<   |	rG| 	                    dd                     ˆ fd„|	D ¦   «         ¦  «        z  ¦  «         |rd|d         z   |d<   t          ‰ j                             ‰ j        t          j        ¦  «        ¦  «        }|rE|rC|r+d|z  |rd|d         z  pdz   d                     |¦  «        z   pd                     |¦  «        }n)|r|rd|d         z  pdpdd                     |¦  «        z   }t%          ‰ j        t&          ¦  «        rdp	d‰ j        z  |z   S )úI
        Returns the Manchester Syntax equivalent for this class
        Nr”   Ú ú(r   ú)z
                z, c                 óö   •— g | ]u}t          |t          ¦  «        r<t          ‰j        t          ¦  «        r"t	          t          |‰j        ¦  «        ¦  «        p!t          t          |¦  «        ‰j        ¦  «        ‘ŒvS rZ   )	rk   r"   rl   r   r¯  r!   rf   r.   r$   ©ru   rº   r;   s     €r<   rx   z"Class.__repr__.<locals>.<listcomp>×  s…   ø€ ð 
ð 
ð 
ð õ ˜1�eÑ$Ô$ð 3Ý˜tœµÑ6Ô6ð3å� 1 d¤jÑ1Ô1Ñ2Ô2ðCõ !Õ!2°1Ñ!5Ô!5°t´zÑBÔBð
ð 
ð 
r?   zPrimitive Type %szSubClassOf: %sc                 ó,   — g | ]}t          |¦  «        ‘ŒS rZ   r�   )ru   Úns     r<   rx   z"Class.__repr__.<locals>.<listcomp>å  s   € Ð/NÐ/NÐ/N¸1µ°A±´Ð/NÐ/NÐ/Nr?   z
    r‡  c                 ó‚   •— g | ];}t          |t          ¦  «        r|p!t          t          |¦  «        ‰j        ¦  «        ‘Œ<S rZ   )rk   r   r.   r$   rf   ró  s     €r<   rx   z"Class.__repr__.<locals>.<listcomp>ê  s[   ø€ ð "ð "ð "ð õ ˜1�cÑ"Ô"ð ØðFå#Õ$5°aÑ$8Ô$8¸$¼*ÑEÔEð"ð "ð "r?   zA Defined Class %szEquivalentTo: %szDisjointWith %s
z
                 c                 óT   •— g | ]$}t          t          |¦  «        ‰j        ¦  «        ‘Œ%S rZ   )r.   r$   rf   ró  s     €r<   rx   z"Class.__repr__.<locals>.<listcomp>ù  s/   ø€ ÐTÐTÐTÈAÕ%Õ&7¸Ñ&:Ô&:¸D¼JÑGÔGÐTÐTÐTr?   z
    ## %s ##z
    %sz . zSome Class z
Class: %s )r_   rq  r{  rf   rª   rl   r   r™   r�   rš   r.   r‘  rŸ   r    r   r£   re   r/  rk   r   rÃ   )r;   ÚfullÚnormalizationÚexprsrÂ  rÈ  rè  r»   rå  r`   rƒ   Ú	klassKindr£   ÚscJoinÚnecStatementsÚnec_SuffStatementsÚdescrÚ
klassDescrs   `                 r<   r…  zClass.__repr__À  s¨  ø€ ð ˆÝ�$”/Ñ"Ô"ˆÝ�$Ô&Ñ'Ô'ˆØ%)¤Z×%?Ò%?ØŒ_�sÔ1µ3´;Ð?ÀÐFñ&
ô &
ð 	Hð 	HÑ!ˆI�q˜'ð �IŠIÕ& w°´
ÀAÐFÑFÔFÑGÔGÐGÐGÝ�$Ô#Ñ$Ô$ˆØÔˆØð 	Ø�IŠI�a‰LŒLˆLØˆ	Ý�T”Z×'Ò'¨¬½¼ÑDÔDÑEÔEˆØÐ.˜#  a¤™.¨3Ñ.Ð4°"ˆØð 	1Øð Ø-��à�ð
ð 
ð 
ð 
ð ð
ñ 
ô 
ˆMð ð 8Ø/°%Ñ7�	Ø�LŠLØ  6§;¢;Ð/NÐ/NÀÐ/NÑ/NÔ/NÑ#OÔ#OÑOñô ð ð ð 1Ø$ u¨R¤yÑ0��b‘	Øð 	1ð"ð "ð "ð "ð ð	"ñ "ô "Ðð "ð 9Ø0°5Ñ8�	Ø�LŠLÐ+¨d¯iªiÐ8JÑ.KÔ.KÑKÑLÔLÐLØð 1Ø$ u¨R¤yÑ0��b‘	Øð 	1Ø�LŠLØ#Ø'×,Ò,ØTÐTÐTÐTÐQSÐTÑTÔTñô ññô ð ð ð 1Ø$ u¨R¤yÑ0��b‘	Ý�T”Z×'Ò'¨¬½¼ÑFÔFÑGÔGˆØð 	�Mð 	àð $Ø$ yÑ0ØÐ2˜Z¨%°¬(Ñ2Ð8°bñ:à—*’*˜UÑ#Ô#ñ$ð%ð —:’:˜eÑ$Ô$ð ˆJð ð <ØÐ4˜z¨E°!¬HÑ4Ð:¸ð*à˜Ÿ
š
 5Ñ)Ô)Ñ)ð õ �t”­Ñ.Ô.ð Øð)à˜dœjÑ(Øñ	ð 	r?   )NNNNNNFNNNFr8   )FT)5rW   rX   rY   r  r“  rÝ   r˜  r=   rœ  rŸ  rÎ   r   r¡   r¡  rÊ   r  r   r£   r¤  r£  r¨  rª  ÚextentQueryr­  r°  r²  r´  r¶  rL   r»  r¿  rÃ  rq  rÅ  rÉ  rË  r   r{  rÍ  rÏ  rÑ  r‘  rÓ  rÖ  rØ  rŸ   rÚ  ræ  Úparentsrê  rì  r…  rE  rF  s   @r<   r"   r"   g  s³  ø€ € € € € ðð ð:Fð Fð Fðð ð ð
ð ð ð$ ØØØØØØ$ØØØØð1ð 1ð 1ð 1ð 1ð 1ð@ð ð ð ðNð Nð Nð Ð˜œÑ!Ô!ðð ñ "Ô!ðð ˆX�k ;°	Ñ:Ô:€Fà#'¤:ð ð ð ð ð �˜/¨;¨;Ñ7Ô7€Jð>ð >ð >ðð ð ð �(Ð+Ð-=Ñ>Ô>€Kð%ð %ð %ð3ð 3ð 3ðð ð ð
ð ð ð
(ð (ð (ð
ð 
ð 
ð
ð 
ð 
ð:Lð Lð LðVð Vð Vð Ð˜œÑ(Ô(ðð ñ )Ô(ðð �˜/¨?¸OÑLÔL€Jð.ð .ð .ðð ð ð Ð˜Ô+Ñ,Ô,ðð ñ -Ô,ðð �hØÐ2Ð4Hñô €Oð.ð .ð .ðVð Vð Vð Ð˜Ô(Ñ)Ô)ðð ñ *Ô)ðð �8Ð-Ð/@ÐBSÑTÔT€Lð	'ð 	'ð 	'ðVð Vð Vð
 Ð˜Ô(Ñ)Ô)ðð ñ *Ô)ðð �8Ð-Ð/@ÐBSÑTÔT€Lð-Eð -Eð -Eð^ ˆh�|Ñ$Ô$€Gðð ð ðð ð ðQð Qð Qð Qð Qð Qð Qð Qr?   r"   c                   óX   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ ZdS )r0   Nc                 óš  — |r|| _         |r|pg }|rWt          | j         |d         ¦  «        | _        |D ]2}|| j        vr'| j                             t	          |¦  «        ¦  «         Œ3d S t          | j         t          ¦   «         d„ |D ¦   «         ¦  «        | _        | j                              | j        | j        | j        j	        f¦  «         d S )Nr   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rZ   )r$   )ru   rž  s     r<   rx   z,OWLRDFListProxy.__init__.<locals>.<listcomp>   s!   € Ð%LÐ%LÐ%L¸qÕ&7¸Ñ&:Ô&:Ð%LÐ%LÐ%Lr?   )
rf   r   Ú_rdfListrš   r$   r   rÚ   rl   r}  rg   )r;   rå  r¹  rf   r›  s        r<   r=   zOWLRDFListProxy.__init__  så   € Øð 	ØˆDŒJØÐ%˜gÐ+¨ˆØð 		QÝ& t¤z°7¸1´:Ñ>Ô>ˆDŒMØ!ð Dð D�Ø ¤Ð.Ð.Ø”M×(Ò(Õ):¸6Ñ)BÔ)BÑCÔCÐCøðDð Dõ 'Ø”
�E™GœGÐ%LÐ%LÀGÐ%LÑ%LÔ%Lñô ˆDŒMð ŒJ�NŠN˜DœO¨T¬^¸T¼]Ô=NÐOÑPÔPÐPÐPÐPr?   c                 ó|  — t          |t          ¦  «        s4J t          |¦  «        t          t          |¦  «        ¦  «        z   ¦   «         ‚t          |t          ¦  «        rOt          | ¦  «        }|t          |¦  «        k    rdS t          |¦  «        D ]}| |         ||         k    r dS  dS dS | j        |j        k    S )zo
        Equivalence of boolean class constructors is determined by
        equivalence of its members
        FTN)rk   r"   r¯  r¡   r   r›   Úrangerl   )r;   rD   ÚlengthÚidxs       r<   r°  zOWLRDFListProxy.__eq__$  sÀ   € õ
 ˜%¥Ñ'Ô'ÐHÐH­¨e©¬µt½DÀ¹K¼KÑ7HÔ7HÑ)HÑHÔHÐHÝ�e�\Ñ*Ô*ð 
	7Ý˜‘Y”YˆFØ�˜U™œÒ#Ð#Ø�uå  ™=œ=ð  ð  �CØ˜C”y E¨#¤JÒ.Ð.Ø$˜u˜uØ˜4˜4ð ð  ð
 ”? eÔ&6Ò6Ð6r?   c                 ó*   — t          | j        ¦  «        S r8   )r›   r  râ   s    r<   Ú__len__zOWLRDFListProxy.__len__7  s   € Ý�4”=Ñ!Ô!Ð!r?   c                 óP   — | j                              t          |¦  «        ¦  «        S r8   )r  Úindexr$   ©r;   Úitems     r<   r  zOWLRDFListProxy.index:  s!   € ØŒ}×"Ò"Õ#4°TÑ#:Ô#:Ñ;Ô;Ð;r?   c                 ó   — | j         |         S r8   ©r  ©r;   rf  s     r<   rh  zOWLRDFListProxy.__getitem__=  s   € ØŒ}˜SÔ!Ð!r?   c                 ó4   — t          |¦  «        | j        |<   d S r8   )r$   r  )r;   rf  r   s      r<   Ú__setitem__zOWLRDFListProxy.__setitem__@  s   € Ý.¨uÑ5Ô5ˆŒ�cÑÐÐr?   c                 ó   — | j         |= d S r8   r  r  s     r<   Ú__delitem__zOWLRDFListProxy.__delitem__C  s   € ØŒM˜#ÐÐÐr?   c                 ó8   — | j                              ¦   «          d S r8   )r  r|  râ   s    r<   r|  zOWLRDFListProxy.clearF  s   € ØŒ×ÒÑÔÐÐÐr?   c              #   ó&   K  — | j         D ]}|V — Œd S r8   r  r  s     r<   Ú__iter__zOWLRDFListProxy.__iter__I  s,   è è € Ø”Mð 	ð 	ˆDØˆJˆJˆJˆJð	ð 	r?   c                 óF   — | j         D ]}|t          |¦  «        k    r dS ŒdS )Nr|   r   )r  r$   )r;   r  rÿ   s      r<   Ú__contains__zOWLRDFListProxy.__contains__M  s8   € Ø”ð 	ð 	ˆAØÕ% dÑ+Ô+Ò+Ð+Ø�q�qð ,àˆqr?   c                 ó:   — | j                              |¦  «         d S r8   )r  rš   r  s     r<   rš   zOWLRDFListProxy.appendS  s   € ØŒ×Ò˜TÑ"Ô"Ð"Ð"Ð"r?   c                 óT   — | j                              t          |¦  «        ¦  «         | S r8   )r  rš   r$   rH   s     r<   r²  zOWLRDFListProxy.__iadd__V  s&   € ØŒ×ÒÕ.¨uÑ5Ô5Ñ6Ô6Ð6Øˆr?   r  )rW   rX   rY   r=   r°  r  r  rh  r  r  r|  r  r  rš   r²  rZ   r?   r<   r0   r0     sÑ   € € € € € ðQð Qð Qð Qð7ð 7ð 7ð&"ð "ð "ð<ð <ð <ð"ð "ð "ð6ð 6ð 6ðð ð ðð ð ðð ð ðð ð ð#ð #ð #ðð ð ð ð r?   r0   c                   ó:   — e Zd ZdZej        Zd„ Zdd„Zd„ Z	d„ Z
dS )r)   a2  
    Class for owl:oneOf forms:

    OWL Abstract Syntax is used

    axiom ::= 'EnumeratedClass('
        classID ['Deprecated'] { annotation } { individualID } ')'


    >>> exNs = Namespace('http://example.com/')
    >>> namespace_manager = NamespaceManager(Graph())
    >>> namespace_manager.bind('ex', exNs, override=False)
    >>> namespace_manager.bind('owl', OWL, override=False)
    >>> g = Graph()
    >>> g.namespace_manager = namespace_manager
    >>> Individual.factoryGraph = g
    >>> ogbujiBros = EnumeratedClass(exNs.ogbujicBros,
    ...                              members=[exNs.chime,
    ...                                       exNs.uche,
    ...                                       exNs.ejike])
    >>> ogbujiBros #doctest: +SKIP
    { ex:chime ex:uche ex:ejike }
    >>> col = Collection(g, first(
    ...    g.objects(predicate=OWL.oneOf, subject=ogbujiBros.identifier)))
    >>> [g.qname(item) for item in col]
    [u'ex:chime', u'ex:uche', u'ex:ejike']
    >>> print(g.serialize(format='n3')) #doctest: +SKIP
    @prefix ex: <http://example.com/> .
    @prefix owl: <http://www.w3.org/2002/07/owl#> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    <BLANKLINE>
    ex:ogbujicBros a owl:Class;
        owl:oneOf ( ex:chime ex:uche ex:ejike ) .
    <BLANKLINE>
    <BLANKLINE>
    c                 ó   — dS ©NFrZ   râ   s    r<   rê  zEnumeratedClass.isPrimitiveƒ  ó   € Øˆur?   Nc                 óô   — t                                | ||¬¦  «         |r|pg }t          | j                             t
          j        | j        ¬¦  «        ¦  «        }t                               | ||¦  «         d S )Nr—   ©r‰   rˆ   )	r"   r=   r_   rf   r    r   rž   rl   r0   )r;   rl   r¹  rf   rå  s        r<   r=   zEnumeratedClass.__init__†  sm   € Ý�Š�t˜Z¨uˆÑ5Ô5Ð5ØÐ%˜gÐ+¨ˆÝ�t”z×)Ò)µC´IÀtÄÐ)ÑWÔWÑXÔXˆÝ× Ò   w°Ñ8Ô8Ð8Ð8Ð8r?   c                 óN   — t          | j        j        | j        | j        ¬¦  «        S ©rî  r”   ©r.   r  rg   rf   r}  râ   s    r<   r…  zEnumeratedClass.__repr__Œ  ó"   € õ   ¤Ô 1°4´:ÀtÄ~ÐVÑVÔVÐVr?   c                 óÜ  — t          |t          ¦   «         ¦  «        }| j        D ]?}|                     |¦  «         t	          || j        ¦  «                             |¦  «         Œ@|                     | j        | j	        |j
        f¦  «         | j                             | j        d d f¦  «        D ])\  }}}|| j	        k    r|                     |||f¦  «         Œ*|                      |¦  «         d S r8   ©r   r   r  rš   r!   rf   rÝ   rÚ   rl   r}  rg   rÙ   r“  ©r;   rf   Ú
clonedListr’  rº   r»   r¼   s          r<   rÝ   zEnumeratedClass.serialize’  sè   € Ý ¥u¡w¤wÑ/Ô/ˆ
Ø”-ð 	7ð 	7ˆBØ×Ò˜bÑ!Ô!Ð!Ý�b˜$œ*Ñ%Ô%×/Ò/°Ñ6Ô6Ð6Ð6à�	Š	�4”? D¤N°J´NÐCÑDÔDÐDØ”z×)Ò)¨4¬?¸DÀ$Ð*GÑHÔHð 	%ð 	%‰GˆAˆq�!Ø�D”NÒ"Ð"Ø—	’	˜1˜a ˜)Ñ$Ô$Ð$øØ�Š˜ÑÔÐÐÐr?   )NNN)rW   rX   rY   r  r   rž   r}  rê  r=   r…  rÝ   rZ   r?   r<   r)   r)   [  sl   € € € € € ð#ð #ðJ ”	€Iðð ð ð9ð 9ð 9ð 9ðWð Wð Wð
ð 
ð 
ð 
ð 
r?   r)   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚBooleanClassExtentHelperaÔ  
    >>> testGraph = Graph()
    >>> Individual.factoryGraph = testGraph
    >>> EX = Namespace("http://example.com/")
    >>> namespace_manager = NamespaceManager(Graph())
    >>> namespace_manager.bind('ex', EX, override=False)
    >>> testGraph.namespace_manager = namespace_manager
    >>> fire = Class(EX.Fire)
    >>> water = Class(EX.Water)
    >>> testClass = BooleanClass(members=[fire, water])
    >>> testClass2 = BooleanClass(
    ...     operator=OWL.unionOf, members=[fire, water])
    >>> for c in BooleanClass.getIntersections():
    ...     print(c) #doctest: +SKIP
    ( ex:Fire AND ex:Water )
    >>> for c in BooleanClass.getUnions():
    ...     print(c) #doctest: +SKIP
    ( ex:Fire OR ex:Water )
    c                 ó   — || _         d S r8   ©rŠ  )r;   rŠ  s     r<   r=   z!BooleanClassExtentHelper.__init__·  r>   r?   c                 ó   ‡ — ˆ fd„}|S )Nc               3   óŠ   •K  — t           j                             ‰j        ¦  «        D ]} t	          | ‰j        ¬¦  «        V — Œd S )Nr0  )r,   rØ   rÇ   rŠ  r   )rƒ   r;   s    €r<   Ú
_getExtentz5BooleanClassExtentHelper.__call__.<locals>._getExtent»  sQ   øè è € ÝÔ,×5Ò5°d´mÑDÔDð >ð >�Ý" 1¨t¬}Ð=Ñ=Ô=Ð=Ð=Ð=Ð=ð>ð >r?   rZ   )r;   rÕ   r3  s   `  r<   rV   z!BooleanClassExtentHelper.__call__º  s$   ø€ ð	>ð 	>ð 	>ð 	>ð 	>ð Ðr?   N)rW   rX   rY   r  r=   rV   rZ   r?   r<   r.  r.  ¢  s<   € € € € € ðð ð(!ð !ð !ðð ð ð ð r?   r.  c                   ó   — e Zd Zd„ ZdS )r    c                 ó   — || _         d S r8   )rV   )r;   Úanycallables     r<   r=   zCallable.__init__Ã  s   € Ø#ˆŒˆˆr?   N)rW   rX   rY   r=   rZ   r?   r<   r    r    Â  s#   € € € € € ð$ð $ð $ð $ð $r?   r    c                   ó   — e Zd ZdZ eej        ¦  «        ed„ ¦   «         ¦   «         Z ee¦  «        Z eej	        ¦  «        ed„ ¦   «         ¦   «         Z
 ee
¦  «        Z
dej        ddfd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ ZdS )r   zm
    See: http://www.w3.org/TR/owl-ref/#Boolean

    owl:complementOf is an attribute of Class, however

    c                  ó   — d S r8   rZ   rZ   r?   r<   ÚgetIntersectionszBooleanClass.getIntersectionsÏ  ó	   € ð 	ˆr?   c                  ó   — d S r8   rZ   rZ   r?   r<   Ú	getUnionszBooleanClass.getUnionsÖ  r:  r?   Nc           	      óÊ  — |€xg }|                      |t          j        t          j        gd f¦  «        D ]\  }}}|                     |¦  «         |}Œt          |¦  «        dk    sJ t          |¦  «        ¦   «         ‚t                               | ||¬¦  «         |t          j        t          j        fv sJ t          |¦  «        ¦   «         ‚|| _
        t          | j                             || j        ¬¦  «        ¦  «        }	|rG|	rEJ dt          t          | j        |	d         ¦  «                             ¦   «         ¦  «        z   ¦   «         ‚t"                               | |	|¦  «         d S )Nr|   r—   r$  z-This is a previous boolean class description!r   )rª   r   r™   r�   rš   r›   r¯  r"   r=   r   r}  r_   rf   r    rl   r   r®   r0   )
r;   rl   rŠ  r¹  rf   Úpropsrº   r»   r¼   rå  s
             r<   r=   zBooleanClass.__init__Ý  sb  € ð ÐØˆEØ ×0Ò0Ø�cÔ0µ#´+Ð>ÀÐEñô ð ð ‘��1�að —’˜Q‘”�Ø��Ý�u‘:”: ’?�?�?¥D¨¡K¤K‘?”?�?Ý�Š�t˜Z¨uˆÑ5Ô5Ð5Ø�CÔ.µ´Ð<Ð<Ð<Ð<½cÀ(¹m¼mÑ<Ô<Ð<Ø!ˆŒÝ�t”z×)Ò)°HÀdÄoÐ)ÑVÔVÑWÔWˆàð	
Ø&ð	
ð 	
à:½TÝ�t”z 7¨1¤:Ñ.Ô.×1Ò1Ñ3Ô3ñ>
ô >
ñ 
ñ	
ô 	
ð 	
õ
 	× Ò   w°Ñ8Ô8Ð8Ð8Ð8r?   c                 óX   — t          | j        t          | ¦  «        | j        ¬¦  «        }|S )z-
        Create a copy of this class
        r¸  )r   r}  r_   rf   )r;   ÚcopyOfClasss     r<   ÚcopyzBooleanClass.copyó  s1   € õ #Ø”^­T°$©Z¬Z¸t¼zð
ñ 
ô 
ˆð Ðr?   c                 óÜ  — t          |t          ¦   «         ¦  «        }| j        D ]?}|                     |¦  «         t	          || j        ¦  «                             |¦  «         Œ@|                     | j        | j	        |j
        f¦  «         | j                             | j        d d f¦  «        D ])\  }}}|| j	        k    r|                     |||f¦  «         Œ*|                      |¦  «         d S r8   r*  r+  s          r<   rÝ   zBooleanClass.serializeü  sè   € Ý ¥u¡w¤wÑ/Ô/ˆ
Ø”-ð 	7ð 	7ˆBØ×Ò˜bÑ!Ô!Ð!Ý�b˜$œ*Ñ%Ô%×/Ò/°Ñ6Ô6Ð6Ð6à�	Š	�4”? D¤N°J´NÐCÑDÔDÐDà”z×)Ò)¨4¬?¸DÀ$Ð*GÑHÔHð 	%ð 	%‰GˆAˆq�!Ø�D”NÒ"Ð"Ø—	’	˜1˜a ˜)Ñ$Ô$Ð$øØ�Š˜ÑÔÐÐÐr?   c                 ó   — dS r!  rZ   râ   s    r<   rê  zBooleanClass.isPrimitive	  r"  r?   c                 óø   — || j         k    s
J d¦   «         ‚| j                             | j        | j         | j        j        f¦  «         | j                             | j        || j        j        f¦  «         || _         dS )a‡  
        Converts a unionOf / intersectionOf class expression into one
        that instead uses the given operator


        >>> testGraph = Graph()
        >>> Individual.factoryGraph = testGraph
        >>> EX = Namespace("http://example.com/")
        >>> namespace_manager = NamespaceManager(Graph())
        >>> namespace_manager.bind('ex', EX, override=False)
        >>> testGraph.namespace_manager = namespace_manager
        >>> fire = Class(EX.Fire)
        >>> water = Class(EX.Water)
        >>> testClass = BooleanClass(members=[fire,water])
        >>> testClass #doctest: +SKIP
        ( ex:Fire AND ex:Water )
        >>> testClass.changeOperator(OWL.unionOf)
        >>> testClass #doctest: +SKIP
        ( ex:Fire OR ex:Water )
        >>> try: testClass.changeOperator(OWL.unionOf)
        ... except Exception as e: print(e)
        The new operator is already being used!

        z'The new operator is already being used!N)r}  rf   rÒ   rl   r  rg   rÚ   )r;   ÚnewOperators     r<   ÚchangeOperatorzBooleanClass.changeOperator  ss   € ð2 ˜dœnÒ,Ð,Ð,Ð.WÑ,Ô,Ð,ØŒ
×Ò˜4œ?¨D¬N¸D¼MÔ<MÐNÑOÔOÐOØŒ
�Š˜œ¨°d´mÔ6GÐHÑIÔIÐIØ$ˆŒˆˆr?   c                 óN   — t          | j        j        | j        | j        ¬¦  «        S r&  r'  râ   s    r<   r…  zBooleanClass.__repr__*  r(  r?   c                 ó‚   — | j         t          j        k    sJ ‚| j                             t          |¦  «        ¦  «         | S )z9
        Adds other to the list and returns self
        )r}  r   r�   r  rš   r$   rH   s     r<   rL   zBooleanClass.__or__0  s=   € ð Œ~¥¤Ò,Ð,Ð,Ð,ØŒ×ÒÕ.¨uÑ5Ô5Ñ6Ô6Ð6Øˆr?   )rW   rX   rY   r  r.  r   r™   r    r9  r�   r<  r=   rA  rÝ   rê  rF  r…  rL   rZ   r?   r<   r   r   Ç  s'  € € € € € ðð ð Ð˜cÔ0Ñ1Ô1Øðð ñ „Xñ 2Ô1ðð  �xÐ 0Ñ1Ô1ÐàÐ˜cœkÑ*Ô*Øðð ñ „Xñ +Ô*ðð �˜Ñ#Ô#€Ið ¨Ô(:ÀDÐPTð9ð 9ð 9ð 9ð,ð ð ðð ð ðð ð ð%ð %ð %ð<Wð Wð Wðð ð ð ð r?   r   c                 ó   — dS )zH
    DisjointClasses(' description description { description } ')'

    NrZ   )r¹  s    r<   r   r   9  s	   € ð
 	€Dr?   c                   ó  ‡ — e Zd ZdZej        ej        ej        ej        ej	        gZ
 e¦   «         dddddddfˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z eej        ¦  «        d
„ ¦   «         Z eeee¦  «        Zd„ Zd„ Z eej        ¦  «        d„ ¦   «         Z eeee¦  «        Zd„ Zd„ Z eej        ¦  «        d„ ¦   «         Z eeee¦  «        Zd„ Zd„ Z eej        ¦  «        d„ ¦   «         Z eeee¦  «        Zd„ Z d„ Z! eej"        ¦  «        d„ ¦   «         Z# ee e!e#¦  «        Z"d„ Z$d„ Z% eej        ¦  «        d„ ¦   «         Z& ee$e%e&¦  «        Zd„ Z'd„ Z( eej	        ¦  «        d„ ¦   «         Z) ee'e(e)¦  «        Z	d„ Z*d„ Z+ˆ xZ,S )r3   zþ
    restriction ::= 'restriction('
    datavaluedPropertyID dataRestrictionComponent
    { dataRestrictionComponent } ')'
    | 'restriction(' individualvaluedPropertyID
    individualRestrictionComponent
    { individualRestrictionComponent } ')'

    Nc
                 ó  •— t          t          | ¦  «                             |	|d¬¦  «         | j        t          j        t          |¦  «        f|vr4|                     | j        t          j        t          |¦  «        f¦  «         || _        |t          j        f|t          j	        f|t          j
        f|t          j        f|t          j        f|t          j        fg}
d„ |
D ¦   «         }t          |¦  «        sJ ‚|                     ¦   «         \  }}|| _        t#          |t$          ¦  «        r|| _        n\t#          |t(          ¦  «        rt+          |¦  «        | _        n2t-          | j                             | j        |¦  «        ¦  «        | _        | j        || j        f| j        vr'| j                             | j        || j        f¦  «         | j        €J t)          | j        ¦  «        ¦   «         ‚| j        t2          j        t          j        f| j        vrn| j                             | j        t2          j        t          j        f¦  «         | j                             | j        t2          j        t          j        f¦  «         d S d S )NTr‹  c                 ó    — g | ]\  }}|¯||f‘ŒS rZ   rZ   )ru   rÿ   ÚoTerms      r<   rx   z(Restriction.__init__.<locals>.<listcomp>t  s%   € ÐHÐHÐH©*¨1¨eÀaÐH˜A˜u˜:ÐHÐHÐHr?   )r  r3   r=   rl   r   r¢   r2   rÚ   r¤   r¦   r¥   r©   r§   r¨   r›   ÚpopÚrestrictionTyperk   r   ÚrestrictionRanger"   r$   r   rf   r    r   r¡   rÒ   )r;   r¢   rf   r¤   r¦   r   r©   r§   r¨   rl   Ú
restrTypesÚvalidRestrPropsrP  rO  r  s                 €r<   r=   zRestriction.__init__T  s]  ø€ õ 	�k˜4Ñ Ô ×)Ò)Ø˜e¸Dð 	*ñ 	
ô 	
ð 	
ð ŒOÝŒNÝ  Ñ,Ô,ð
ð ð	ð ð
 �IŠIØ”¥#¤.Õ2FÀzÑ2RÔ2RÐSñô ð ð %ˆŒà�CÔ-Ð.Ø�SÔ/Ð0Ø•C”LÐ!Ø�#œ/Ð*Ø�SÔ/Ð0Ø�SÔ/Ð0ð
ˆ
ð IÐH¸
ÐHÑHÔHˆÝ�?Ñ#Ô#Ð#Ð#Ð#Ø,;×,?Ò,?Ñ,AÔ,AÑ)Ð˜/Ø.ˆÔÝÐ&­
Ñ3Ô3ð 	Ø$4ˆDÔ!Ð!ÝÐ(­%Ñ0Ô0ð 	Ý$5Ð6FÑ$GÔ$GˆDÔ!Ð!å$)Ø”
×"Ò" 4¤?°OÑDÔDñ%ô %ˆDÔ!ð ŒO˜_¨dÔ.CÐDÈDÌJÐVÐVØŒJ�NŠN˜DœO¨_¸dÔ>SÐTÑUÔUÐUØÔ$Ð0Ð0µ%¸¼Ñ2HÔ2HÑ0Ô0Ð0ØŒO�SœX¥s¤Ð7¸t¼zÐIÐIØŒJ�NŠN˜DœO­S¬Xµs´ÐGÑHÔHÐHØŒJ×Ò˜tœµ´½#¼)ÐDÑEÔEÐEÐEÐEð JÐIr?   c                 ój  — t          | j        | j        d¬¦  «                             |¦  «         | j                             | j        ddf¦  «        D ]`\  }}}|                     |||f¦  «         |t          j        t          j	        fv r(t          || j        ¦  «                             |¦  «         ŒadS )a³  
        >>> g1 = Graph()
        >>> g2 = Graph()
        >>> EX = Namespace("http://example.com/")
        >>> namespace_manager = NamespaceManager(g1)
        >>> namespace_manager.bind('ex', EX, override=False)
        >>> namespace_manager = NamespaceManager(g2)
        >>> namespace_manager.bind('ex', EX, override=False)
        >>> Individual.factoryGraph = g1
        >>> prop = Property(EX.someProp, baseType=OWL.DatatypeProperty)
        >>> restr1 = (Property(
        ...    EX.someProp,
        ...    baseType=OWL.DatatypeProperty)) | some | (Class(EX.Foo))
        >>> restr1 #doctest: +SKIP
        ( ex:someProp SOME ex:Foo )
        >>> restr1.serialize(g2)
        >>> Individual.factoryGraph = g2
        >>> list(Property(
        ...     EX.someProp,baseType=None).type
        ... ) #doctest: +NORMALIZE_WHITESPACE +SKIP
        [rdflib.term.URIRef(
            u'http://www.w3.org/2002/07/owl#DatatypeProperty')]
        NrX  )r1   r¢   rf   rÝ   rÙ   rl   rÚ   r   r¤   r¦   r!   )r;   rf   rº   r»   r¼   s        r<   rÝ   zRestriction.serialize‡  s²   € õ0 	�”¨¬
¸TÐBÑBÔB×LÒLÈUÑSÔSÐSØ”z×)Ò)¨4¬?¸DÀ$Ð*GÑHÔHð 	:ð 	:‰GˆAˆq�!Ø�IŠI�q˜!˜Q�iÑ Ô Ð Ø•SÔ&­Ô(:Ð;Ð;Ð;Ý˜!˜TœZÑ(Ô(×2Ò2°5Ñ9Ô9Ð9øð	:ð 	:r?   c                 ó   — dS r!  rZ   râ   s    r<   rê  zRestriction.isPrimitive¥  r"  r?   c                 ó8   — t          | j        | j        f¦  «        S r8   )r¬  r¢   rP  râ   s    r<   r­  zRestriction.__hash__¨  s   € Ý�T”_ dÔ&;Ð<Ñ=Ô=Ð=r?   c                 ó  — t          |t          ¦  «        s4J t          |¦  «        t          t          |¦  «        ¦  «        z   ¦   «         ‚t          |t          ¦  «        r |j        | j        k    o|j        | j        k    S dS )zŠ
        Equivalence of restrictions is determined by equivalence of the
        property in question and the restriction 'range'
        F)rk   r"   r¯  r¡   r3   r¢   rP  rH   s     r<   r°  zRestriction.__eq__«  sz   € õ
 ˜%¥Ñ'Ô'ÐHÐH­¨e©¬µt½DÀ¹K¼KÑ7HÔ7HÑ)HÑHÔHÐHÝ�e�[Ñ)Ô)ð 	àÔ  D¤OÒ3ð DØÔ*¨dÔ.CÒCðð
 �5r?   c                 ó~   — t          | j                             | j        t          j        ¬¦  «        ¦  «        d         S )Nr‡   r   )r_   rf   r    rl   r   r¢   râ   s    r<   Ú_get_onPropertyzRestriction._get_onProperty¹  s8   € ÝØŒJ×Ò t¤Å#Ä.ÐÑQÔQñ
ô 
à
ôð 	r?   c                 óš   — | j         t          j        t          |¦  «        f}|sd S || j        v rd S | j                             |¦  «         d S r8   )rl   r   r¢   r2   rf   rK  )r;   r´   Útriples      r<   Ú_set_onPropertyzRestriction._set_onProperty¾  sT   € Ø”/¥3¤>Õ3GÈÑ3MÔ3MÐNˆØð 	#ØˆFØ�t”zÐ!Ð!ØˆFàŒJ�NŠN˜6Ñ"Ô"Ð"Ð"Ð"r?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_onPropertyzRestriction._del_onPropertyÇ  r  r?   c                 ó�   — | j                              | j        t          j        ¬¦  «        D ]}t          || j         ¬¦  «        c S d S rÇ  )rf   r    rl   r   r¤   r"   ©r;   rÿ   s     r<   Ú_get_allValuesFromzRestriction._get_allValuesFromÍ  sT   € Ø”×#Ò#Ø”O­sÔ/@ð $ñ 
ô 
ð 	.ð 	.ˆAõ ˜ $¤*Ð-Ñ-Ô-Ð-Ð-Ð-Øˆtr?   c                 óš   — | j         t          j        t          |¦  «        f}|sd S || j        v rd S | j                             |¦  «         d S r8   )rl   r   r¤   r$   rf   rK  ©r;   rD   rZ  s      r<   Ú_set_allValuesFromzRestriction._set_allValuesFromÔ  sU   € Ø”/¥3Ô#4Õ6GÈÑ6NÔ6NÐOˆØð 	#ØˆFØ�t”zÐ!Ð!ØˆFàŒJ�NŠN˜6Ñ"Ô"Ð"Ð"Ð"r?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_allValuesFromzRestriction._del_allValuesFromÝ  r  r?   c                 ó�   — | j                              | j        t          j        ¬¦  «        D ]}t          || j         ¬¦  «        c S d S rÇ  )rf   r    rl   r   r¦   r"   r_  s     r<   Ú_get_someValuesFromzRestriction._get_someValuesFromã  óT   € Ø”×#Ò#Ø”O­sÔ/Að $ñ 
ô 
ð 	.ð 	.ˆAõ ˜ $¤*Ð-Ñ-Ô-Ð-Ð-Ð-Øˆtr?   c                 óš   — | j         t          j        t          |¦  «        f}|sd S || j        v rd S | j                             |¦  «         d S r8   )rl   r   r¦   r$   rf   rK  rb  s      r<   Ú_set_someValuesFromzRestriction._set_someValuesFromê  óU   € Ø”/¥3Ô#5Õ7HÈÑ7OÔ7OÐPˆØð 	#ØˆFØ�t”zÐ!Ð!ØˆFàŒJ�NŠN˜6Ñ"Ô"Ð"Ð"Ð"r?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_someValuesFromzRestriction._del_someValuesFromó  r  r?   c                 ó�   — | j                              | j        t          j        ¬¦  «        D ]}t          || j         ¬¦  «        c S d S rÇ  )rf   r    rl   r   r¥   r"   r_  s     r<   Ú_get_hasValuezRestriction._get_hasValueû  sJ   € Ø”×#Ò#¨D¬OÅsÄ|Ð#ÑTÔTð 	.ð 	.ˆAÝ˜ $¤*Ð-Ñ-Ô-Ð-Ð-Ð-Øˆtr?   c                 óš   — | j         t          j        t          |¦  «        f}|sd S || j        v rd S | j                             |¦  «         d S r8   )rl   r   r¥   r$   rf   rK  rb  s      r<   Ú_set_hasValuezRestriction._set_hasValue   sT   € Ø”/¥3¤<Õ1BÀ5Ñ1IÔ1IÐJˆØð 	#ØˆFØ�t”zÐ!Ð!ØˆFàŒJ�NŠN˜6Ñ"Ô"Ð"Ð"Ð"r?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_hasValuezRestriction._del_hasValue	  r  r?   c                 ó�   — | j                              | j        t          j        ¬¦  «        D ]}t          || j         ¬¦  «        c S d S rÇ  )rf   r    rl   r   r©   r"   r_  s     r<   Ú_get_cardinalityzRestriction._get_cardinality  sJ   € Ø”×#Ò#¨D¬OÅsÄÐ#ÑWÔWð 	.ð 	.ˆAÝ˜ $¤*Ð-Ñ-Ô-Ð-Ð-Ð-Øˆtr?   c                 óš   — | j         t          j        t          |¦  «        f}|sd S || j        v rd S | j                             |¦  «         d S r8   )rl   r   r©   r$   rf   rK  rb  s      r<   Ú_set_cardinalityzRestriction._set_cardinality  sT   € Ø”/¥3¤?Õ4EÀeÑ4LÔ4LÐMˆØð 	#ØˆFØ�t”zÐ!Ð!ØˆFàŒJ�NŠN˜6Ñ"Ô"Ð"Ð"Ð"r?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_cardinalityzRestriction._del_cardinality  r  r?   c                 ó�   — | j                              | j        t          j        ¬¦  «        D ]}t          || j         ¬¦  «        c S d S rÇ  )rf   r    rl   r   r§   r"   r_  s     r<   Ú_get_maxCardinalityzRestriction._get_maxCardinality#  rh  r?   c                 óš   — | j         t          j        t          |¦  «        f}|sd S || j        v rd S | j                             |¦  «         d S r8   )rl   r   r§   r$   rf   rK  rb  s      r<   Ú_set_maxCardinalityzRestriction._set_maxCardinality*  rk  r?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_maxCardinalityzRestriction._del_maxCardinality3  r  r?   c                 ó�   — | j                              | j        t          j        ¬¦  «        D ]}t          || j         ¬¦  «        c S d S rÇ  )rf   r    rl   r   r¨   r"   r_  s     r<   Ú_get_minCardinalityzRestriction._get_minCardinality;  rh  r?   c                 óš   — | j         t          j        t          |¦  «        f}|sd S || j        v rd S | j                             |¦  «         d S r8   )rl   r   r¨   r$   rf   rK  rb  s      r<   Ú_set_minCardinalityzRestriction._set_minCardinalityB  rk  r?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_minCardinalityzRestriction._del_minCardinalityK  r  r?   c                 óš   — | j                              | j        | j        d f¦  «        D ]#}|                     t
          ¦  «        d         c S ‚ )Nr‡  )rf   Útriple_choicesrl   rŒ  r‰  r   )r;   r»   s     r<   ÚrestrictionKindzRestriction.restrictionKindS  sR   € Ø”×*Ò*ØŒ_˜dÔ3°TÐ:ñ
ô 
ð 	$ð 	$ˆAð —7’7�3‘<”< Ô#Ð#Ð#Ð#Ør?   c                 ó6   — t          | j        | j        ¦  «        S )zO
        Returns the Manchester Syntax equivalent for this restriction
        )r.   rl   rf   râ   s    r<   r…  zRestriction.__repr__Z  s   € õ   ¤°´Ñ<Ô<Ð<r?   )-rW   rX   rY   r  r   r¤   r¦   r¥   r§   r¨   rŒ  r
   r=   rÝ   rê  r­  r°  rX  r[  rÎ   r¢   r]  rÊ   r`  rc  re  rg  rj  rm  ro  rq  rs  ru  rw  r©   ry  r{  r}  r  r�  rƒ  r…  rˆ  r…  rE  rF  s   @r<   r3   r3   A  s’  ø€ € € € € ðð ð 	ÔØÔØŒØÔØÔðÐð ˆe‰gŒgØØØØØØØð1Fð 1Fð 1Fð 1Fð 1Fð 1Fðf:ð :ð :ð<ð ð ð>ð >ð >ðð ð ðð ð ð
#ð #ð #ð Ð˜œÑ'Ô'ðð ñ (Ô'ðð �˜/¨?¸OÑLÔL€Jðð ð ð#ð #ð #ð Ð˜Ô)Ñ*Ô*ðð ñ +Ô*ðð �HÐ/Ð1CÐEWÑXÔX€Mðð ð ð#ð #ð #ð Ð˜Ô*Ñ+Ô+ðð ñ ,Ô+ðð �XØÐ0Ð2Eñô €Nðð ð ð
#ð #ð #ð Ð˜œÑ%Ô%ðð ñ &Ô%ðð ˆx˜ }°mÑDÔD€Hðð ð ð
#ð #ð #ð Ð˜œÑ(Ô(ðð ñ )Ô(ðð �(Ð+Ð-=Ð?OÑPÔP€Kðð ð ð#ð #ð #ð Ð˜Ô*Ñ+Ô+ðð ñ ,Ô+ðð �XØÐ0Ð2Eñô €Nðð ð ð#ð #ð #ð Ð˜Ô*Ñ+Ô+ðð ñ ,Ô+ðð �XØÐ0Ð2Eñô €Nðð ð ð=ð =ð =ð =ð =ð =ð =r?   r3   c                 ó0   — t          | |j        |¬¦  «        S )N)rf   r¦   ©r3   rf   ©r´   ry  s     r<   rE   rE   e  s   € � T°´ÈfÐUÑUÔU€ r?   c                 ó0   — t          | |j        |¬¦  «        S )N)rf   r¤   r‹  rŒ  s     r<   rE   rE   h  s   € � T°´ÈVÐTÑTÔT€ r?   c                 ó0   — t          | | j        |¬¦  «        S )N)rf   r§   r‹  rŒ  s     r<   rE   rE   k  ó   € � T°´ÈFÐSÑSÔS€ r?   c                 ó0   — t          | | j        |¬¦  «        S )N)rf   r¨   r‹  rŒ  s     r<   rE   rE   n  r�  r?   c                 ó0   — t          | | j        |¬¦  «        S )N)rf   r©   r‹  rŒ  s     r<   rE   rE   q  s   € � T°´ÈÐPÑPÔP€ r?   c                 ó0   — t          | | j        |¬¦  «        S )N)rf   r   r‹  rŒ  s     r<   rE   rE   s  s   € ¥;¨t¸4¼:ÈVÐ#TÑ#TÔ#T€ r?   zh
%s( %s { %s }
%s
{ 'super(' datavaluedPropertyID ')'} ['Functional']
{ domain( %s ) } { range( %s ) } )c                   óæ  ‡ — e Zd ZdZd„ Zddej        ddddddddddfˆ fd„	Zd„ Zdd„Z	d„ Z
 ee	e
¦  «        Zd	„ Zd
„ Zd„ Z eej        ¦  «        d„ ¦   «         Z eeee¦  «        Zd„ Zd„ Z eej        ¦  «        d„ ¦   «         Z eeee¦  «        Zd„ Zd„ Z eej        ¦  «        d„ ¦   «         Z eeee¦  «        Zd„ Zd„ Z eej        ¦  «        d„ ¦   «         Z eeee¦  «        Zd„ Z ˆ xZ!S )r1   aÌ  
    axiom ::= 'DatatypeProperty(' datavaluedPropertyID ['Deprecated']
                { annotation }
                { 'super(' datavaluedPropertyID ')'} ['Functional']
                { 'domain(' description ')' } { 'range(' dataRange ')' } ')'
                | 'ObjectProperty(' individualvaluedPropertyID ['Deprecated']
                { annotation }
                { 'super(' individualvaluedPropertyID ')' }
                [ 'inverseOf(' individualvaluedPropertyID ')' ] [ 'Symmetric' ]
                [ 'Functional' | 'InverseFunctional' |
                'Functional' 'InverseFunctional' |
                'Transitive' ]
                { 'domain(' description ')' } { 'range(' description ')' } ')

    c                 óD  — t          |t          ¦  «        r|\  }}}n|}|}|}|r'| j        |                      |¦  «        fg| j        _        |r'| j        |                      |¦  «        fg| j        _        |r)| j        |                      |¦  «        fg| j        _        d S d S r8   )rk   r–  rl   r  r)  r  r+  r-  )r;   ÚverbAnnotationsr)  r+  r,  s        r<   ÚsetupVerbAnnotationszProperty.setupVerbAnnotations�  sÊ   € Ý�o¥uÑ-Ô-ð 	%Ø+:Ñ(ˆI�y & &à'ˆIØ'ˆIØ$ˆFØð 	à” $×"7Ò"7¸	Ñ"BÔ"BÐCð%ˆDŒNÔ!ð ð 	à” $×"7Ò"7¸	Ñ"BÔ"BÐCð%ˆDŒNÔ!ð ð 	XØ'+¤¸×8MÒ8MÈfÑ8UÔ8UÐ&VÐ%WˆDŒOÔ"Ð"Ð"ð	Xð 	Xr?   NFc                 ó  •— t          t          | ¦  «                             ||||¦  «         |r|                      |¦  «         t	          | j        t          ¦  «        rJ ‚|€3t          t          | j        | j	        ¬¦  «        j
        ¦  «        | _        nN| j        t          j
        |f| j	        vr,| j	                             | j        t          j
        |f¦  «         || _        || _        || _        || _        || _        |
r|
pg | _        d S )Nr—   )r  r1   r=   r–  rk   rl   r   r   r,   rf   r¡   Ú	_baseTyper   rÚ   ÚsubPropertyOfÚ	inverseOfÚdomainr  r/  )r;   rl   rf   r   r™  r›  r  rš  Ú	otherTypeÚequivalentPropertyr/  r•  r  r  r  s                 €r<   r=   zProperty.__init__Ÿ  sø   ø€ õ  	�h˜ÑÔ×&Ò& z°5¸.È+ÑVÔVÐVØð 	7Ø×%Ò% oÑ6Ô6Ð6å˜dœo­uÑ5Ô5Ð5Ð5Ð5ØÐå"¥:¨d¬oÀTÄZÐ#PÑ#PÔ#PÔ#UÑVÔVˆDŒNˆNà”¥¤¨8Ð4¸D¼JÐFÐFØ”
—’ ¤µ´¸8ÐDÑEÔEÐEØ%ˆDŒNØ*ˆÔØ"ˆŒØˆŒØˆŒ
ØÐ* 7Ð0¨bˆŒˆˆr?   c                 ó|  — | j                              | j        d d f¦  «        D ]}|                     |¦  «         Œt	          j        | j        | j        ¦  «        D ]}|                     |¦  «         Œt	          j        | j	        | j
        ¦  «        D ]*}t          || j         ¦  «                             |¦  «         Œ+d S r8   )rf   rÙ   rl   rÚ   rÜ  rÝ  r™  rš  rÝ   r›  r  r!   )r;   rf   rÜ   r»   rƒ   s        r<   rÝ   zProperty.serializeÁ  s¼   € Ø”J×&Ò&¨¬¸¸tÐ'DÑEÔEð 	ð 	ˆDØ�IŠI�d‰OŒOˆOˆOÝ” Ô!3°T´^ÑDÔDð 	ð 	ˆAØ�KŠK˜ÑÔÐÐÝ” ¤¨d¬jÑ9Ô9ð 	6ð 	6ˆAÝ�a˜œÑ$Ô$×.Ò.¨uÑ5Ô5Ð5Ð5ð	6ð 	6r?   c              #   óh   K  — |d u r| j         p|                     d | j        d f¦  «        D ]}|V — Œd S r8   )rf   rÙ   rl   )r;   rf   rZ  s      r<   rœ  zProperty._get_extentÉ  sX   è è € Ø �}Ð3¨¬Ð<°u×EÒEØ�4”? DÐ)ñ
ô 
ð 	ð 	ˆFð ˆLˆLˆLˆLð	ð 	r?   c                 ób   — |sd S |D ]'\  }}| j                              || j        |f¦  «         Œ(d S r8   )rf   rÚ   rl   )r;   rD   ÚsubjÚobjs       r<   rŸ  zProperty._set_extentÏ  sL   € Øð 	ØˆFØð 	9ð 	9‰IˆD�#ØŒJ�NŠN˜D $¤/°3Ð7Ñ8Ô8Ð8Ð8ð	9ð 	9r?   c                 ó~  ‡ ‡— g }t           j        ‰ j        v �r•|                     d‰ j        ›dt          ‰ j        ¦  «        rt          ‰ j        ¦  «        pd›d�¦  «         t          ‰ j        ¦  «        r£t          t          ‰ j        ¦  «        j        ¦  «        }|r*|j        ‰ j        k    rt          ‰ j        ¦  «        j        }n!t          t          ‰ j        ¦  «        ¦  «        }|                     d|›dt           j
        ‰ j        v rdpd›�¦  «         ‰ j                             ‰ j        t          j        t           j        t           j        t           j        gf¦  «        D ]F\  }}}|                     t#          |                     t           ¦  «        d         ¦  «        ¦  «         ŒGnš|                     d	‰ j        ›d
t          ‰ j        ¦  «        rt          ‰ j        ¦  «        pd›�¦  «         ‰ j                             ‰ j        t          j        t           j        f¦  «        D ]\  }}}|                     d¦  «         Œd„ Š|                     d
                     ˆˆ fd„‰ j        D ¦   «         ¦  «        ¦  «         |                     d
                     ˆˆ fd„‰ j        D ¦   «         ¦  «        ¦  «         |                     d
                     ˆˆ fd„‰ j        D ¦   «         ¦  «        ¦  «         d                     d„ |D ¦   «         ¦  «        }|dz  }t#          |¦  «                             d¦  «        S )NzObjectProperty( z annotation(rï  rñ  z  inverseOf( r}   z
 Symmetricr‡  zDatatypeProperty( r…   z   Functionalc                 ó\  — t          | ¦  «        }t          |t          ¦  «        r| S |                     t          ¦  «        rt          | ¦  «        S t          |                     |t          j	        t          j
        gd f¦  «        ¦  «        rt          | ¦  «        S t          | j        ¦  «        S r8   )r$   rk   r   rk  r   r   r   rª   r   r�   r™   r¯  rÃ   )r
  ÚgÚnormalizedNames      r<   ÚcanonicalNamez(Property.__repr__.<locals>.canonicalName  s�   € Ý.¨tÑ4Ô4ˆNÝ˜.­%Ñ0Ô0ð 'Ø�Ø×*Ò*­3Ñ/Ô/ð 	'Ý˜4‘y”yÐ ÝØ×!Ò!Ø#¥c¤kµ3Ô3EÐ%FÈÐMñô ñô ð 'õ
 ˜D‘z”zÐ!å˜4œ:‘”Ð&r?   c                 ó8   •— g | ]}d  ‰|‰j         ¦  «        z  ‘ŒS )z   super( %s )r—   )ru   ÚsuperPr§  r;   s     €€r<   rx   z%Property.__repr__.<locals>.<listcomp>  s<   ø€ ð ð ð àð % } }°V¸T¼ZÑ'HÔ'HÑHðð ð r?   c                 ó8   •— g | ]}d  ‰|‰j         ¦  «        z  ‘ŒS )z   domain( %s )r—   )ru   r›  r§  r;   s     €€r<   rx   z%Property.__repr__.<locals>.<listcomp>  s<   ø€ ð ð ð àð &¨¨°f¸d¼jÑ(IÔ(IÑIðð ð r?   c                 ó8   •— g | ]}d  ‰|‰j         ¦  «        z  ‘ŒS )z   range( %s )r—   )ru   r  r§  r;   s     €€r<   rx   z%Property.__repr__.<locals>.<listcomp>"  s<   ø€ ð ð ð àð % } }°U¸D¼JÑ'GÔ'GÑGðð ð r?   r�   c                 ó   — g | ]}|¯|‘ŒS rZ   rZ   )ru   Úexprs     r<   rx   z%Property.__repr__.<locals>.<listcomp>(  s   € Ð4Ð4Ð4 ¨tÐ4˜Ð4Ð4Ð4r?   z
)zutf-8)r   r^  r¡   rš   rÃ   r   r/  rš  rl   r¯  rY  rf   rª   r   rZ  r[  r\  r   r‰  rÙ   re   r™  r›  r  Úencode)r;   ÚrtÚtwoLinkInverseÚinverseReprrº   r»   ÚroleTyper§  s   `      @r<   r…  zProperty.__repr__×  sŒ  øø€ ØˆÝÔ ¤Ð*Ñ*Ø�IŠIˆIà”:�:�:�u T¤\Ñ2Ô2ÐJµu¸T¼\Ñ7JÔ7JÐPÈbÐPÐPðRñô ð õ �T”^Ñ$Ô$ð Ý!&¥u¨T¬^Ñ'<Ô'<Ô'FÑ!GÔ!G�Ø!ð > nÔ&?À4Ä?Ò&RÐ&RÝ"'¨¬Ñ"7Ô"7Ô"=�K�Kå"&¥u¨T¬^Ñ'<Ô'<Ñ"=Ô"=�KØ—	’	�	ð $˜˜ÝÔ-°´Ð:ÐK¸|ÐQÈrÐQðñô ð ð #'¤*×"<Ò"<à”OÝ”HåÔ.ÝÔ5ÝÔ.ððñ
#ô 
#ð 8ð 8‘��1�hð —	’	�#˜hŸnšn­SÑ1Ô1°"Ô5Ñ6Ô6Ñ7Ô7Ð7Ð7ð8ð �IŠIˆIà”:�:�:�u T¤\Ñ2Ô2ÐJµu¸T¼\Ñ7JÔ7JÐPÈbÐPðRñô ð ð #'¤*×"4Ò"4Ø”¥#¤(­CÔ,BÐCñ#ô #ð +ð +‘��1�hð —	’	˜/Ñ*Ô*Ð*Ð*ð	'ð 	'ð 	'ð 	�	Š	Ø�HŠHðð ð ð ð à"&Ô"4ðñ ô ñô ñ	
ô 	
ð 	
ð 	�	Š	Ø�HŠHðð ð ð ð à"&¤+ðñ ô ñô ñ	
ô 	
ð 	
ð 	�	Š	Ø�HŠHðð ð ð ð à!%¤ðñ ô ñô ñ	
ô 	
ð 	
ð �YŠYÐ4Ð4¨Ð4Ñ4Ô4Ñ5Ô5ˆØ
ˆe‰ˆÝ�2‰wŒw�~Š~˜gÑ&Ô&Ð&r?   c              #   ó˜   K  — | j                              | j        t          j        ¬¦  «        D ]}t          || j         d ¬¦  «        V — Œd S ©Nr‡   rX  )rf   r    rl   r   r™  r1   r½  s     r<   Ú_get_subPropertyOfzProperty._get_subPropertyOf,  sf   è è € Ø”:×%Ò%Ø”O­tÔ/Að &ñ 
ô 
ð 	Að 	AˆCõ ˜3 d¤j¸4Ð@Ñ@Ô@Ð@Ð@Ð@Ð@ð	Að 	Ar?   c                 óŠ   — |sd S |D ];}| j                              | j        t          j        t          |¦  «        f¦  «         Œ<d S r8   )rf   rÚ   rl   r   r™  r$   )r;   rD   ÚsPs      r<   Ú_set_subPropertyOfzProperty._set_subPropertyOf2  sY   € Øð 	ØˆFØð 	Yð 	YˆBØŒJ�NŠN˜DœO­TÔ-?ÕARÐSUÑAVÔAVÐWÑXÔXÐXÐXð	Yð 	Yr?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_subPropertyOfzProperty._del_subPropertyOf8  r  r?   c              #   ó˜   K  — | j                              | j        t          j        ¬¦  «        D ]}t          || j         d ¬¦  «        V — Œd S r´  )rf   r    rl   r   rš  r1   r½  s     r<   Ú_get_inverseOfzProperty._get_inverseOf>  s\   è è € Ø”:×%Ò%¨d¬oÍÌÐ%ÑWÔWð 	Að 	AˆCÝ˜3 d¤j¸4Ð@Ñ@Ô@Ð@Ð@Ð@Ð@ð	Að 	Ar?   c                 ó€   — |sd S | j                              | j        t          j        t          |¦  «        f¦  «         d S r8   )rf   rÚ   rl   r   rš  r$   rH   s     r<   Ú_set_inverseOfzProperty._set_inverseOfB  s=   € Øð 	ØˆFØŒ
�Š˜œ­¬Õ8IÈ%Ñ8PÔ8PÐQÑRÔRÐRÐRÐRr?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_inverseOfzProperty._del_inverseOfG  r  r?   c              #   ó–   K  — | j                              | j        t          j        ¬¦  «        D ]}t          || j         ¬¦  «        V — Œd S rÇ  )rf   r    rl   r   r›  r"   )r;   Údoms     r<   Ú_get_domainzProperty._get_domainM  sV   è è € Ø”:×%Ò%¨d¬oÍÌÐ%ÑUÔUð 	/ð 	/ˆCÝ˜ 4¤:Ð.Ñ.Ô.Ð.Ð.Ð.Ð.ð	/ð 	/r?   c                 ó8  — |sd S t          |t          t          f¦  «        r;| j                             | j        t          j        t          |¦  «        f¦  «         d S |D ];}| j                             | j        t          j        t          |¦  «        f¦  «         Œ<d S r8   )	rk   r,   r   rf   rÚ   rl   r   r›  r$   )r;   rD   rÂ  s      r<   Ú_set_domainzProperty._set_domainQ  sž   € Øð 	ØˆFÝ�e�j­*Ð5Ñ6Ô6ð 	WØŒJ�NŠN˜DœO­T¬[Õ:KÈEÑ:RÔ:RÐSÑTÔTÐTÐTÐTàð Wð W�Ø”
—’ ¤µ´Õ>OÐPSÑ>TÔ>TÐUÑVÔVÐVÐVðWð Wr?   c                 ó   — d S r8   rZ   râ   s    r<   Ú_del_domainzProperty._del_domainZ  r  r?   c              #   ó–   K  — | j                              | j        t          j        ¬¦  «        D ]}t          || j         ¬¦  «        V — Œd S rÇ  )rf   r    rl   r   r  r"   )r;   Úrans     r<   Ú
_get_rangezProperty._get_range`  sV   è è € Ø”:×%Ò%¨d¬oÍÌÐ%ÑTÔTð 	/ð 	/ˆCÝ˜ 4¤:Ð.Ñ.Ô.Ð.Ð.Ð.Ð.ð	/ð 	/r?   c                 ó8  — |sd S t          |t          t          f¦  «        r;| j                             | j        t          j        t          |¦  «        f¦  «         d S |D ];}| j                             | j        t          j        t          |¦  «        f¦  «         Œ<d S r8   )	rk   r,   r   rf   rÚ   rl   r   r  r$   )r;   Úrangesr  s      r<   Ú
_set_rangezProperty._set_ranged  s�   € Øð 	ØˆFÝ�f�z­:Ð6Ñ7Ô7ð 	XØŒJ�NŠN˜DœO­T¬ZÕ9JÈ6Ñ9RÔ9RÐSÑTÔTÐTÐTÐTàð Xð X�Ø”
—’ ¤µ´Õ=NÈuÑ=UÔ=UÐVÑWÔWÐWÐWðXð Xr?   c                 ó   — d S r8   rZ   râ   s    r<   Ú
_del_rangezProperty._del_rangem  r  r?   c                 óº   — | j         D ]0\  }}}| j                             |t          |¦  «        |f¦  «         Œ1| j                             d | j        d f¦  «         d S r8   )r  rf   rÚ   r2   rÒ   rl   ré   s        r<   rê   zProperty.replaces  sg   € à”{ð 	@ð 	@‰GˆAˆq�!ØŒJ�NŠN˜AÕ3°EÑ:Ô:¸AÐ>Ñ?Ô?Ð?Ð?ØŒ
×Ò˜4 ¤°$Ð7Ñ8Ô8Ð8Ð8Ð8r?   r8   )"rW   rX   rY   r  r–  r   r^  r=   rÝ   rœ  rŸ  rÊ   r  r…  rµ  r¸  rÎ   r   r™  rº  r¼  r¾  rš  rÀ  rÃ  rÅ  r›  rÇ  rÊ  rÍ  r  rÏ  rê   rE  rF  s   @r<   r1   r1   |  ss  ø€ € € € € ðð ð Xð Xð Xð( ØØÔ#ØØØØØØØØØØð 1ð  1ð  1ð  1ð  1ð  1ðD6ð 6ð 6ðð ð ð ð9ð 9ð 9ð ˆX�k ;Ñ/Ô/€FðS'ð S'ð S'ðjAð Að AðYð Yð Yð Ð˜Ô*Ñ+Ô+ðð ñ ,Ô+ðð �HÐ/Ð1CÐEWÑXÔX€MðAð Að AðSð Sð Sð
 Ð˜œÑ&Ô&ðð ñ 'Ô&ðð �˜¨¸ÑHÔH€Ið/ð /ð /ðWð Wð Wð Ð˜œÑ$Ô$ðð ñ %Ô$ðð ˆX�k ;°Ñ<Ô<€Fð/ð /ð /ðXð Xð Xð Ð˜œ
Ñ#Ô#ðð ñ $Ô#ðð ˆH�Z ¨ZÑ8Ô8€Eð9ð 9ð 9ð 9ð 9ð 9ð 9r?   r1   c                 óR  — t          | ¦  «        }|                     dt          ¦  «         |                     dt          ¦  «         |                     dt          ¦  «         t          |                     ¦   «         ¦  «        D ]\  }}|                     ||d¬¦  «         Œ|| _        dS )zI
    Takes a graph and binds the common namespaces (rdf,rdfs, & owl)
    r]   r\   r^   Fr  N)r   r!  r   r   r   r_   ÚitemsÚnamespace_manager)rf   ÚadditionalNSrÓ  rh   rg   s        r<   r&   r&   z  s§   € õ )¨Ñ/Ô/ÐØ×Ò˜6¥4Ñ(Ô(Ð(Ø×Ò˜5¥#Ñ&Ô&Ð&Ø×Ò˜5¥#Ñ&Ô&Ð&Ý˜L×.Ò.Ñ0Ô0Ñ1Ô1ð <ð <‰ˆ�Ø×Ò˜v s°UÐÑ;Ô;Ð;Ð;Ø/€EÔÐÐr?   c                  ó6   — dd l } |                      ¦   «          d S )Nr   )ÚdoctestÚtestmod)rÖ  s    r<   ÚtestrØ  ‡  s!   € Ø€N€N€Nà‡O‚OÑÔÐÐÐr?   Ú__main__r!  r8   )Tr  rÜ  Úrdflibr   r   r   r   r   r   r	   Úrdflib.graphr
   Úrdflib.collectionr   Úrdflib.namespacer   r   r   Úrdflib.termr   Úrdflib.utilr   ÚloggingÚ	getLoggerrW   ÚloggerÚ__all__r6   r   r*   r%   r$   r2   r.   r+   r4   rÎ   rÆ   r,   r   r   r/   r   r   r#   rK  Ú
differencer¢   r¤   r¥   r¦   rš  rI  rL  ÚbackwardCompatibleWithÚincompatibleWithr�   r™   rž   r   r'   r(   r­   r-   r!   r"   r0   r)   ÚBooleanPredicatesr.  r    r   r   r3   r   r   r   r   r   r   r   r1   r&   rØ  rZ   r?   r<   ú<module>rè     sO  ðði€ðV Ð Ð Ð à IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø -Ð -Ð -Ð -Ð -Ð -Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð à €€€à	ˆÔ	˜8Ñ	$Ô	$€ðð%ð %ð %€ð^-ð -ð -ð -ð -ñ -ô -ð -ð* 3ØØØØˆFÐ9Ñ:Ô:Ø
,ðð €ð)ð )ð )ð
ð ð ðð ð ðð ð ð_ð _ð _ð _ðDð ð ðð ð ðð ð ð ð ñ ô ð ðv@ð v@ð v@ð v@ð v@�ñ v@ô v@ð v@ðr 
ˆÐ<Ñ	=Ô	=€ðs<ð s<ð s<ð s<ð s<�zñ s<ô s<ð s<ðlAð Að Að Að AÐñ Aô Að Að@ð ð ð;ð ;ð ;ð>#ð #ð #ð #ð #˜Iñ #ô #ð #ð �#Ø€IÐ@ÑAÔAñô ç‚*àŒØÔØŒØÔØŒØŒØŒØÔ"ØÔØŒØÔØŒ	ðñô ð ð(+#ð +#ð +#ð\C
ð C
ð C
ðLð ð ð ð �Yñ ô ð ðYð Yð Yð YðDjð jð jð jð jÐñ jô jð jðZDð Dð Dð Dð D�fñ Dô Dð DðNAð Að Að Að A�o uñ Aô Að AðH Ô'¨¬Ð5Ð ðð ð ð ð ñ ô ð ð@$ð $ð $ð $ð $ñ $ô $ð $ð
oð oð oð oð o�? Eñ oô oð oðd	ð 	ð 	ð]=ð ]=ð ]=ð ]=ð ]=�%ñ ]=ô ]=ð ]=ðF	 €uØUÐUñô €ð €uØTÐTñô €ð €eØSÐSñô €ð €eØSÐSñô €ð ˆ%ØPÐPñô €ð 	ˆÐTÐTÑUÔU€ð&Ð ð{9ð {9ð {9ð {9ð {9Ðñ {9ô {9ð {9ð| *,ð 
0ð 
0ð 
0ð 
0ðð ð ð ˆzÒÐØ€D�F„F€F€F€Fð Ðr?   