I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None +0246=KHNeo4j monadic type to be able to sequence neo4j commands in a connectionType for a connection!Exceptions this library can raiseType for an indexType for a labelnType for a Neo4j relationship, has a location URI, a relationship type, a starting node and a destination node Type for a relationship locationRelationship direction!(Type for a relationship type description'JRepresentation of a Neo4j node, has a location URI and a set of propertieslClass for top-level Neo4j entities (nodes and relationships) useful to have generic property management code)-We use hashmaps to represent Neo4j propertiesIThis class allows easy construction of property value types from literals+Wrapping type for a Neo4j single property or array of properties Using these types allows type checking for only correct properties that is int, double, string, boolean and single typed arrays of these, also nulls are not allowed.+Type for a single value of a Neo4j property3LThis operator allows easy construction of property value types from literals4Shortcut for emtpy propertiesPTries to get the path from a URL, we try our best otherwise return the url as isPath without the db*data part, useful for batch paths and such5Get the properties of a node7$Get the properties of a relationship8Get the type of a relationship JSON to IndexJSON to Relationship JSON to NodeJSON to property valuesJSON to single property values1Specifying how to convert property values to JSON8Specifying how to convert property single values to JSON  !"#$%&'()*+,-./0123456789   _  !"#$%&'()*+,-./0123456789U  !"#$%&'()*+-,.210/3456789   None<Create an empty graph=Add a node to the graph>^Set the properties of a node or relationship in the graph, if not present it won't do anything?ZSet a property of a node or relationship in the graph, if not present it won't do anything@fDelete all the properties of a node or relationship, if the entity is not present it won't do anythingA^Delete a property of a node or relationship, if the entity is not present it won't do anythingB&Whether a node is present in the graphCGet a node in the graphD&Get outgoing relationships from a nodeE&Get incoming relationships from a nodeF*Get a list with all the nodes in the graphG.Whether a relationship is present in the graphHDelete a node from the graphIAdd a relationship to the graphJ2Get a list with all the relationships in the graphKGet a relationship in the graphL+Get relationships missing their "from" nodeM)Get relationships missing their "to" nodeN,Remove all relationships with a missing nodeO$Delete a relationship from the graphP'Get the "node from" from a relationshipQ%Get the "node to" from a relationshipRSet what labels a node hasSAdd a label to a nodeTGet the labels of a nodeURemove a label from a nodeVFilter the nodes of a graphW#Filter the relationships of a graphXAdd two graphs resulting in a graph with all the nodes, labels and relationships of both | If a node/entity is present in both the second one will be chosenYORemove the nodes and relationships in the first graph that appear in the secondZKHave a graph that only has nodes and relationships that are present in both/:  ;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ!:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ!:;<=BHFCDEJGIOPQKLMN>?@ARSTUVWXYZ(:  ;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZNone[ECreate a new connection that can be manually closed with runResourceT\2Run a set of Neo4j commands in a single connection"General function for HTTP requestsjExtracts the exception description from a HTTP Neo4j response if the status code matches otherwise NothingQLaunch a POST request, this will raise an exception if 201 or 200 is not received*Launch a POST request and get some headers^Launch a POST request, this will raise an exception if 201 or 204 is not received, explain 500Launch a POST request, this will raise an exception if 201 or 204 is not received With 404 or 400 will return a left with the explanation lLaunch a POST request that doesn't expect response body, this will raise an exception if 204 is not received!PLaunch a GET request, this will raise an exception if 200 or 404 is not received"RLaunch GET request, just allow 200, if 404 is received an exception will be raised#Launch a GET request, this will raise an exception if 200 or 404 is not received With 404 will return a left with the explanation Unlike httpRetrieve this method can parse any JSON value even if it's non-top (arrays and objects)$Launch a DELETE request, this will raise an exception if 204 is not received If we receive 404, we will just return true, though wasn't existing already the result is the same%cLaunch a DELETE request, this will raise an exception if 204 is not received We don't accept 404&Launch a DELETE request, this will raise an exception if 204 is not received If we receive 404, we will return the server explanation'PLaunch a PUT request, this will raise an exception if 200 or 204 is not received(Launch a PUT request, this will raise an exception if 200 or 204 is not received If we receive 404, we will return the server explanation)0Wrap 404 exception into Neo4jNoEntity exceptions[\ !"#$%&'()[\ !"#$%&'()[\ !"#$%&'()None]Get all labels in the DB^Retrieve all labels for a node, if the node doesn't exist already it will raise an exception | Raises Neo4jNoEntityException if the node doesn't exist_*Get all nodes using a label and a property`OAdd labels to a node | Raises Neo4jNoEntityException if the node doesn't existaMChange node labels | Raises Neo4jNoEntityException if the node doesn't existbTRemove a label for a node | Raises Neo4jNoEntityException if the node doesn't exist]^_`ab]^_`ab]^_`abNonecGet the ID of a noded*Create a new node with a set of propertiese1Refresh a node entity with the contents in the DBfWDelete a node, if the node has relationships it will raise a Neo4jNonOrphanNodeDeletioncdefcdefcdef NonegGet the ID of a relationshiph%Gets all relationship types in the DBi=Create a new relationship with a type and a set of propertiesj9Refresh a relationship entity with the contents in the DBkGet the "node from" from a relationship from the DB | Raises Neo4jNoEntityException if the node (and thus the relationship) does not exist any morelGet the "node to" from a relationship from the DB | Raises Neo4jNoEntityException if the node (and thus the relationship) does not exist any moremDelete a relationshipnXGet all relationships for a node, if the node has disappeared it will raise an exceptionghijklmnghijklmnghijklmn NoneoRetrieve relationship/node properties from the DB, if the entity is not present it will raise an exception If the entity doesn't exist it will raise a Neo4jNoEntity exceptionpGet a relationship/node property If the 404 is because the parent entity doesn't exist we'll raise the corresponding Neo4jNoEntity If the 404 is because there is no property just return NothingqkSet all relationship/node properties If the entity doesn't exist it will raise a Neo4jNoEntity exceptionrgSet a relationship/node property If the entity doesn't exist it will raise a Neo4jNoEntity exceptionsnDelete all relationship/node properties If the entity doesn't exist it will raise a Neo4jNoEntity exceptiontjDelete a relationship/node property If the entity doesn't exist it will raise a Neo4jNoEntity exceptionopqrstopqrstopqrst None24*CHelper function to parse a batch element response from a body entry+CHelper function to parse a batch element response from a from entry,lGet teh exception type for a given batch exception message, if nothing is found a default exception is given-Parse batch exceptionsu./0123456789vw:;*+<=,-x>?u./0123456789vw:;*+<=,-xu./0123456789vw:;*+<=,-x>? None24z Batch operation to create a node{)Batch operation to get a node from the DB| Batch operation to delete a node y@z{|ABCDy@z{|y@z{|ABCD None24}Retrieve all labels for a node, if the node doesn't exist already it will raise an exception | Raises Neo4jNoEntityException if the node doesn't exist~*Get all nodes using a label and a propertyOAdd labels to a node | Raises Neo4jNoEntityException if the node doesn't existMChange node labels | Raises Neo4jNoEntityException if the node doesn't existTRemove a label for a node | Raises Neo4jNoEntityException if the node doesn't existE}~E}~E}~None24=Create a new relationship with a type and a set of properties9Refresh a relationship entity with the contents in the DB3Get the "node from" from a relationship from the DB1Get the "node to" from a relationship from the DBDelete a relationship Get all relationships for a node FGHIJF FGHIJNone24$Set all relationship/node properties Set a relationship/node property'Delete all relationship/node properties#Delete a relationship/node propertyKLMNOPQRSTKLKLMNOPQRSTNone24uvwxyz{|}~uxvwyz{|}~None24MUDifferent transaction states.Error code and message for a transaction errorNType for a Cypher response with tuples containing column name and their valuesHolds the connection stats.We use hashmaps to represent Cypher parameters`Value for a cypher parmeter value, might be a literal, a property map or a list of property maps Default statsVAn empty responseW$Build a graph from a cypher responseX7General function to launch queries inside a transactionRun a transaction and get its final result, has an implicit commit request (or rollback if an exception occurred). This implicit commit/rollback will only be executed if it hasn't before because of an explicit oneYeIf a query returns an error we have to stop processing the transaction and make sure it's rolled back^Run a cypher query in a transaction, if an error occurs the transaction will stop and rollbackRollback a transaction. After this, executing rollback, commit, keepalive, cypher in the transaction will result in an exceptiongRollback a transaction and stop processing it, set the message that runTransaction will return as errorCommit a transaction. After this, executing rollback, commit, keepalive, cypher in the transaction will result in an exceptionSend a cypher query and commit at the same time, if an error occurs the transaction will be rolled back. After this, executing rollback, commit, keepalive, cypher in the transaction will result in an exception0Send a keep alive message to an open transactionZ/Get the transaction ID from the location header[KStart a transaction and register the transaction to be committed/rollbacked1Get the result of the response or a default value1Get the result of the response or a default valueTrue if the operation succeeded\;How to create a response object from a cypher JSON response]-Instance for the rel type in cypher responses^.Instance for the node type in cypher responses_#Instance to parse stats from a JSON`DInstance toJSON for param values so we can serialize them in queriesNabcUdefghijklmnopqVrsWtuXYZ[vwxy\z]^_`((.abcUfedghijklmnop qVrsWtuXYZ[vwxy\z]^_`None+Creates an index for a label and a propertyGets all indexes for a labelDrop and index{{{(c) 2014, Antoni SilvestreMIT-Antoni Silvestre <antoni.silvestre@gmail.com> experimentalportableNoneW  !"#$%&'()*+,-./0123456789[\]^_`abcdefghijklmnopqrstY[\.210/+-,*3)4opqrst'(5defc(6"#$%& !ijmngh789kl]^_`ab | !"#$%&''()*+,-./01223456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqPU r s t X u v \ W w x K L M N y z z { | q P U k l m n o}tXuv\W~KLMN)4G                      ! " # $ % & ' ( ) * + ,-./0123456789:;<=>?@ABCDEFGHHIJKLMNNOPPQRRSTUVWXYZ[\]^_ hypher-0.1.4Database.Neo4jDatabase.Neo4j.GraphDatabase.Neo4j.Batch#Database.Neo4j.Transactional.CypherDatabase.Neo4j.TypesDatabase.Neo4j.HttpDatabase.Neo4j.LabelDatabase.Neo4j.NodeDatabase.Neo4j.RelationshipDatabase.Neo4j.PropertyDatabase.Neo4j.Batch.TypesDatabase.Neo4j.Batch.NodeDatabase.Neo4j.Batch.Label!Database.Neo4j.Batch.RelationshipDatabase.Neo4j.Batch.PropertyDatabase.Neo4j.IndexNeo4jrunNeo4jPortHostname ConnectionNeo4jExceptionTransactionEndedExcNeo4jParseExceptionNeo4jBatchExceptionNeo4jNoSuchProperty Neo4jUnexpectedResponseExceptionNeo4jNoEntityException#Neo4jNonOrphanNodeDeletionExceptionNeo4jHttpExceptionIndex indexLabelindexPropertiesLabelEntityIdentifier getEntityPath RelIdentifier getRelPathRelPath runRelPath RelationshiprelPath DirectionAnyIncomingOutgoingRelationshipTypeNodeIdentifier getNodePathNodePath runNodePathNodenodePath Propertiesnewval PropertyValue ArrayProperty ValuePropertyVal DoubleValTextValBoolValIntVal|:emptyPropertiesgetNodePropertiesrunNodeIdentifiergetRelProperties getRelTyperunRelIdentifierGraphLabelSetemptyaddNode setProperties setPropertydeletePropertiesdeletePropertyhasNodegetNode getNodeFrom getNodeTogetNodeshasRelationship deleteNodeaddRelationshipgetRelationshipsgetRelationshipgetOrphansFrom getOrphansTocleanOrphanRelationshipsdeleteRelationshipgetRelationshipNodeFromgetRelationshipNodeTo setNodeLabels addNodeLabel getNodeLabelsdeleteNodeLabel nodeFilterrelationshipFilterunion difference intersection newConnectionwithConnection allLabels getLabelsgetNodesByLabelAndProperty addLabels changeLabels removeLabelnodeId createNoderelIdallRelationshipTypescreateRelationshipgetRelationshipFromgetRelationshipTo getProperties getPropertyBatch BatchFuturerunBatchNodeBatchIdentifierRelBatchIdentifier BatchEntity Transaction TransErrorResultcolsvalsgraphstatsStatscontainsUpdates nodesCreated nodesDeletedpropsSet relsCreated relsDeleted lblsAdded lblsRemovedidxAdded idxRemoved constAdded constRemovedParams ParamValueParamPropertiesArrayParamProperties ParamLiteralnewparam emptyStats loneQueryrunTransactioncypherrollbackrollbackAndLeavecommit commitWith keepalive fromResult fromSuccess isSuccess createIndex getIndexes dropIndexRelUrlEntityPropertyValueConstructorurlPath urlMinPath$fFromJSONIndex$fFromJSONRelationship$fFromJSONNode$fFromJSONPropertyValue $fFromJSONVal$fToJSONPropertyValue $fToJSONVal dbHostnamedbPortmanager EntityPathEntityNodePath EntityRelPathrelType relPropertiesrelFromrelTo runRelUrlnodePropertiesNodeUrl runNodeUrl entityPath propertyPathgetEntityPropertiessetEntityProperties entityObj EntityObj EntityRel EntityNode<>nodeAPI nodeAPITxtrelationshipAPIrelationshipAPITxt$fMonadBaseNeo4jNeo4j$fMonadThrowNeo4j$fMonadIONeo4j$fApplicativeNeo4j$fFunctorNeo4j $fMonadNeo4j$fExceptionNeo4jException$fEntityIdentifierText$fEntityIdentifierRelUrl$fEntityIdentifierRelPath$fEntityIdentifierRelationship$fEntityIdentifierNodeUrl$fEntityIdentifierNodePath$fEntityIdentifierNode$fRelIdentifierInteger$fRelIdentifierRelUrl$fRelIdentifierByteString$fRelIdentifierRelPath$fRelIdentifierRelationship$fHashableRelPath$fEntityEntityObj$fEntityRelationship$fHashableRelUrl$fNodeIdentifierNodeUrl$fNodeIdentifierNodePath$fNodeIdentifierInteger$fNodeIdentifierByteString$fNodeIdentifierNode$fHashableNodePath $fEntityNode$fHashableNodeUrl$fPropertyValueConstructor[]$fPropertyValueConstructor[]0$fPropertyValueConstructor[]1$fPropertyValueConstructor[]2 $fPropertyValueConstructorDouble$fPropertyValueConstructorText$fPropertyValueConstructorBool$fPropertyValueConstructorInt64nodeslabelsrels nodeLabels nodeFromRels nodeToRels NodeRelIndexRelSetNodeLabelIndexLabelNodeIndexNodeSetRelIndex NodeIndexhttpReqextractException httpCreatehttpCreateWithHeadershttpCreate500ExplainedhttpCreate4XXExplained httpCreate_ httpRetrievehttpRetrieveSurehttpRetrieveValue httpDeletehttpDeleteNo404httpDelete404Explained httpModifyhttpModify404Explained proc404Exc tryParseBody tryParseFromexceptionByNameparseException BatchStatecommandsbatchIdBatchCmd cmdMethodcmdPathcmdBodycmdParsecmdId CmdParserdefCmdgetCmds nextStateparseBatchResponse$fToJSONBatchCmd$fToJSONStateTgetNodeBatchId $fNodeBatchIdentifierBatchFuture$fNodeBatchIdentifierNodePath$fNodeBatchIdentifierNodeUrl$fNodeBatchIdentifierNodeparseLabelsPath getRelBatchId$fRelBatchIdentifierBatchFuture$fRelBatchIdentifierRelPath$fRelBatchIdentifierRelUrl $fRelBatchIdentifierRelationshipgetEntityBatchIdparsePropertiesPath$fBatchEntityBatchFuture$fBatchEntityRelPath$fBatchEntityRelUrl$fBatchEntityRelationship$fBatchEntityBatchFuture0$fBatchEntityNodePath$fBatchEntityNodeUrl$fBatchEntityNode TransState emptyResponse buildGraphtransactionReq catchErrorstransIdFromHeaders acquireTrans$fFromJSONResult$fFromJSONCypherRel$fFromJSONCypherNode$fFromJSONStats$fToJSONParamValueResponse runResponse TransDone TransStarted TransInit TransactionIdDataElem runDataElem CypherRel runCypherRel CypherNode runCypherNode cypherAPI readDefaultreadIntDefaulttransAPI queryBody commitReq rollbackReq keepaliveReq$fFromJSONResponse$fFromJSONDataElem indexPath