úÎ!˜üÈ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇNone7Éhasbolt-extrasdRepresentation of Graph that is used for requests and responses. It is parameterized by three types:n: type of node namesa: type of nodesb: type of relations;Relations are described by a pair of nodes - start and end.There are lenses defined for :  and .hasbolt-extrasAlias for text node name.hasbolt-extrasAn empty graph.hasbolt-extrasTAdds node to graph by its name and data. If graph already contains node with given name, error will be thrown. hasbolt-extrasAdds relation to graph by  startName of node, endName of node, and relD with relation data. If graph already contains relation with given (startName, endName), error will be thrown. hasbolt-extrasHBuild relationship name from the names of its start and end nodes like [startNodeName]0[endNodeName].hasbolt-extrasName of the nodehasbolt-extras Node data hasbolt-extrasName of start nodehasbolt-extrasName of end nodehasbolt-extras Relation data  Noneû hasbolt-extras#Entity which can be extracted from È by its name. hasbolt-extras,Entity which can be returned from Neo4j in RETURN operator.hasbolt-extras!If the entity should be returned.hasbolt-extras#How to return entity in the Cypher.hasbolt-extras,Entity which can be requested from Neo4j in MATCH operator.hasbolt-extras How to convert entity to Cypher. SafeEX.7hasbolt-extras"Conditional expressions over type a) and its mappings. Supported operations:equality check disunction conjunction Typical usage:Say we have variable var :: a , a function  f :: a -> b and a value val :: b. Expression  f :== val acts as  f var == val. Examples: Ûdata D = D { fld1 :: Int , fld2 :: String , fld3 :: Double } d = D 42 "noononno" 1.618 d `matches` (fld1 :== 12 :&& fld2 :== "abc") False d `matches` (fld1 :== 42 :|| fld3 == 1.0) Truehasbolt-extras.Check whether data satisfies conditions on it.hasbolt-extras Matching  will always succeed. $whatever `matches` tautology == TrueMatch is lazy: %undefined `matches` tautology == Truehasbolt-extrasIObject itself instead of its mappings is matched with help of this alias. J42 `matches` (itself :== 42) == True 42 `matches` (itself :== 41) == False432 None472Éhasbolt-extrasCommon class to get  from the object.hasbolt-extras8 is wrapper for some object that can be identified with .hasbolt-extras is alias for Bolt É, Ê and Ë identities. hasbolt-extrasThis is just check that your  is valid.  None:´!hasbolt-extras!3 means that properties can be obtained from entity.#hasbolt-extras#/ means that labels can be obtained from entity.%hasbolt-extras%1 means that something can be converted from Bolt Ì.'hasbolt-extras'1 means that something can be converted into Bolt Ì.)hasbolt-extras), class represents convertable into and from Ë.,hasbolt-extras,, class represents convertable into and from É./hasbolt-extrasAlias for Neo4j property.0hasbolt-extrasAlias for Neo4j label.!"#$%&'()*+,-./0NoneA€1hasbolt-extras1 is used to load É and  URelationshipG into database, because id from database is not known for such moment.2hasbolt-extrasÉs can be merged. 2_ is useful when you have to store in one node several labels and props from different classes.3hasbolt-extras3: shows module name and line where this expression is used.4hasbolt-extrasExtract values5hasbolt-extrasExtract values (maybe)1234512345 None=?B None=?H66hasbolt-extras'The class for convertation into Cypher.Íhasbolt-extras4Several properties are formatted with concatenation.Îhasbolt-extrasConverts property with name and value to  name:value.Ïhasbolt-extras0Several labels are formatted with concatenation.Ðhasbolt-extras Label with name are formatted into :nameÑhasbolt-extrasConvertation for Ì into Cypher.67NoneHu! !"#$%&'()*+,-./067! 67%&0#$,-.!"/'()*+ None"#r Òhasbolt-extras Describes a  bijective+ class, i.e. class that has two functions: phi :: a -> SomeType and phiInv :: SomeType -> a. Requires class name, SomeType( name and names of the class functions (phi and phiInv).Óhasbolt-extras Example of  bijective class is ,'. Describes conversions into and from ÉO. That is, this class provides a bridge between Neo4j world and Haskell world.Ôhasbolt-extrasAnother example of  bijective class is )'. Describes conversions into and from Ë.8hasbolt-extrasMake an instance of ,g class. Only data types with one constructor are currently supported. Each field is transformed into Õ) key and its value is transformed into a Ì#. For example, we have a structure kdata Foo = Bar { baz :: Double , quux :: Text , quuz :: Int }You can make it instance of , by writing makeNodeLike ''Foo?Then you may create example and convert it into from from Node: ÿ&ghci> :set -XOverloadedStrings ghci> let foo = Bar 42.0 "Loren ipsum" 7 ghci> toNode foo Node {nodeIdentity = -1, labels = ["Foo"], nodeProps = fromList [("baz",F 42.0),("quux",T "Loren ipsum"),("quuz",I 7)]} ghci> fromNode . toNode $ foo :: Foo Bar {baz = 42.0, quux = "Loren ipsum", quuz = 7}9hasbolt-extrasMake an instance of ), class. Transformations are the same as in ,5 instance declaration with the only one difference: Ë% holds only one label (or type), but É holds list of labels.Öhasbolt-extrasDeclare an instance of  bijective` class using TemplateHaskell. It works as follows: Say we have a type with field records, e.g. ÿ,data VariableDomainScoring = VDS { specie :: Text , vgen :: Double , fr :: Double , sim :: Double , germline :: Text };As an example, transformation into Node is described below. ÿdata Node = Node { nodeIdentity :: Int -- ^Neo4j node identifier , labels :: [Text] -- ^Set of node labels (types) , nodeProps :: Map Text Value -- ^Dict of node properties } deriving (Show, Eq) nodeIdentityo will be set to a dummy value (-1). There is no way of obtaining object ID before uploading it into database. labels will be set to type name, i.e. VariableDomainScoringc. This is due to our convention: object label into Neo4j is the same as its type name in Haskell.  nodeProps` will be set to a Map: keys are field record names, values are data in the corresponding fields. Therefore, applying toNode on a VariableDomainScoringJ will give the following: > Node { nodeIdentity = -1 > , labels = [VariableDomainScoring¯] > , nodeProps = fromList [("specie", T "text value"), ("vgen", F %float_value), ("fr", F %float_value), ("sim", F %float_value), ("germline", T "text value")] > }×hasbolt-extrasHExtract information about type: constructor name and field record names.Øhasbolt-extrasDParse a type declaration and retrieve its name and its constructors.Ùhasbolt-extras9Describes the body of conversion to target type function.Úhasbolt-extras;Describes the body of conversion from target type function.Ûhasbolt-extras†Check whether given type is '_ -> Maybe _' It pattern matches arrow type applied to any argument ant 'T _' and checks if T is ''Maybe89None±8989None"#=?Þ:hasbolt-extras The graph of Ks corresponding to the nodes and relationships which we get after putting ;.;hasbolt-extras The graph of É$s with specified uploading type and Ës.<hasbolt-extras< is the wrapper for Ë8 where we can specify if we want to merge or create it.+Meaning of constructors is the same as for ?.?hasbolt-extras? is the wrapper for É7 where we can specify if we want to merge or create it.@hasbolt-extrasDescribe existing node by its -. No new data will be inserted for this node.Ahasbolt-extras Merge the É. with existing node in the DB. Corresponds to MERGE Cypher operator.Bhasbolt-extras,Create an entirely new node. Corresponds to CREATE Cypher operator.Chasbolt-extras Takes all ?s and <4s and write them to single query to request. Here WITHU is used, because you cannot perform "match", "merge" or "create" at the same query. :;<=>?@ABCNone "#%/7=?SX¯Å Dhasbolt-extras The graph of És and Ë's which we got from the database using E.Ehasbolt-extras<The combinations of getters to load graph from the database.Fhasbolt-extras8Result for relation where properties are represented as aeson Ü.Khasbolt-extras4Result for node where properties are represented as aeson Ü.Phasbolt-extrasEndomorphisms to set up ^ and W.Whasbolt-extrasHelper to find Ës.Yhasbolt-extrasknown Zhasbolt-extras known labels[hasbolt-extrasknown properties\hasbolt-extrasnames of properties to return]hasbolt-extras&whether to return this relation or not^hasbolt-extrasHelper to find És.`hasbolt-extrasknown ahasbolt-extras known labelsbhasbolt-extrasknown propertieschasbolt-extrasnames of properties to returndhasbolt-extras"whether to return this node or notehasbolt-extrasA synonym for Ý. Kept for historical reasons.fhasbolt-extras^ that matches any node.ghasbolt-extrasW that matches any relation.hhasbolt-extras^& that matches any node and returns it.ihasbolt-extras^. that matches any node and does not return it.jhasbolt-extrasW* that matches any relation and returns it.khasbolt-extrasW2 that matches any relation and does not return it.lhasbolt-extras=Return all properties of a node or relation. To be used with U.mhasbolt-extras†Takes all node getters and relationship getters and write them to single query to request. Also return conditions on known boltId-s.nhasbolt-extras Extract a node by its name from D# and convert it to user type with ..ohasbolt-extrasSExtract a relation by name of it start and end nodes and convert to user type with +.phasbolt-extrasExtract just node's .qhasbolt-extrasExtract just relation's .rhasbolt-extrasExtract K.shasbolt-extrasExtract F.Qhasbolt-extras set known Rhasbolt-extrasset known labelShasbolt-extras#set known label as TemplateHaskell ÞThasbolt-extrasadd known propertyUhasbolt-extras add list of properties to returnVhasbolt-extras"set that entity should be returnedfhasbolt-extrasWhether to return the nodeghasbolt-extrasWhether to return the relation1 DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsNone >@HVXkÒá thasbolt-extras Put request in Bolt format with !s of uploaded entities as result.uhasbolt-extrasGet request with graph result.vhasbolt-extrasAType class used to perform requests to the Neo4j based on graphs.whasbolt-extras+Type of entity describing node for request.xhasbolt-extras3Type of entity describing relationship for request.yhasbolt-extras8Type of node entity which will be extracted from result.zhasbolt-extras@Type of relationship entity which will be extracted from result.{hasbolt-extras2Convert requestable entities to text in the query.|hasbolt-extras,Abstract function to form query for request.}hasbolt-extras]Abstract function which exctracts graph from records if nodes and relations can be extracted.~hasbolt-extras?For given query graph, perform query and extract results graph.hasbolt-extrasIHelper function to merge graphs of results, i.e. if you requested graph  A -> B -> C% and in the database there were two B' entities connected to the same entity A and four C- entities connected to the same two entities BX, Cypher query will return four graphs which satisfy this path, despite the fact that A, was present only once in the database and B, was present only two times in the database.oThis function will merge these four graphs in one and return nodes by node names with suffixes equal to their s.'For example, if there were four graphs: ÿ` nodes: [A (boltId = 0), B (boltId = 1), C (boltId = 3)], relations: [A -> B, B -> C]; nodes: [A (boltId = 0), B (boltId = 1), C (boltId = 4)], relations: [A -> B, B -> C]; nodes: [A (boltId = 0), B (boltId = 2), C (boltId = 5)], relations: [A -> B, B -> C]; nodes: [A (boltId = 0), B (boltId = 2), C (boltId = 6)], relations: [A -> B, B -> C]. -this function will merge them into new graph: × nodes: [A0 (boltId = 0), B1 (boltId = 1), B2 (boltId = 2), C3 (boltId = 3), C4 (boltId = 4), C5 (boltId = 5), C6 (boltId = 6)], relations: [A0 -> B1, A0 -> B2, B1 -> C3, B1 -> C4, B2 -> C5, B2 -> C6]. |hasbolt-extras(Custom conditions that will be added to WHERE block.hasbolt-extrasRequest graph template.hasbolt-extrasCypher query as text.tßuàvwxyz|{}~NoneÓPX :;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz|{}~X uPQRSTUV^_`abcdWXYZ[\]EfhigjklKLMNOFGHIJDnopqrst?@AB<=>;:vwxyz|{}~   mCeNone"#4=?õ²)€hasbolt-extrasExpression in Cypher language.hasbolt-extras CREATE query‚hasbolt-extras MATCH queryƒhasbolt-extrasOPTIONAL MATCH query„hasbolt-extras MERGE query…hasbolt-extras WHERE query†hasbolt-extras SET query‡hasbolt-extras DELETE queryˆhasbolt-extrasDETACH DELETE query‰hasbolt-extras REMOVE queryŠhasbolt-extras RETURN query‹hasbolt-extras WITH queryŒhasbolt-extrasfree text queryŽhasbolt-extras condition AND  conditionhasbolt-extras condition OR  conditionhasbolt-extrassingle  condition‘hasbolt-extrasNOT  condition’hasbolt-extras Conditions.“hasbolt-extrasID(txt) = boltId”hasbolt-extras#ID(txt) IN [boltId1, boltId2, ... ]•hasbolt-extrastxt IN [txt1, txt2, ... ]–hasbolt-extrasfree text condition™hasbolt-extras path selectoršhasbolt-extrasfree text selectorœhasbolt-extrasnot directed relationhasbolt-extrasdirected relationžhasbolt-extrasstarting node of PathŸhasbolt-extrasSelector for paths. hasbolt-extrasdirected relation¡hasbolt-extrasnot directed relation¢hasbolt-extras Selector for Ës.This datatype has OverloadedLabels instance as well, similar to §.§hasbolt-extras Selector for És.This datatype has OverloadedLabelsD instance to simplify specifying nodes. Labels produce empty nodes. =#foo :: NodeSelector -- foo = NodeSelector (Just "foo") [] []¬hasbolt-extrasCClass for Selectors, which can update identifier, labels and props.°hasbolt-extrasOperator version of ®. To be used with OverloadedLabels instances. #foo .: "Foo" :: NodeSelector±hasbolt-extrasOperator version of ¯. To be used with OverloadedLabels instances. See also  from  Database.Bolt package. 5#foo .# ["bar" =: 42, "baz" =: "baz"] :: NodeSelector²hasbolt-extrasCombined version of œ and ž' for specifying the first node of path.³hasbolt-extrasCombined version of  and ž' for specifying the first node of path.´hasbolt-extrasEmpty §.µhasbolt-extrasShorter synonym for ¶.¶hasbolt-extrasEmpty ¢.·hasbolt-extrasShorter synonym for ¶.;€‚Œ†ƒ„…‡ˆ‰Š‹‘Ž’“”•–—˜™š›žœŸ ¡¢£¤¥¦§¨©ª«¬®¯­°±á²³´µ¶·¸¹ Ž32œ11 2¡2°9 ±9 ²1³1Noneÿ• ºhasbolt-extrasA synonym for â DSL.»hasbolt-extrasPrepare CREATE query¼hasbolt-extrasPrepare MATCH query½hasbolt-extrasPrepare 'OPTIONAL MATCH' query¾hasbolt-extrasPrepare MERGE query¿hasbolt-extrasPrepare WHERE queryÀhasbolt-extrasPrepare SET queryÁhasbolt-extrasPrepare DELETE queryÂhasbolt-extrasPrepare 'DETACH DELETE' queryÃhasbolt-extrasPrepare REMOVE queryÄhasbolt-extrasPrepare RETURN queryÅhasbolt-extrasPrepare WITH queryÆhasbolt-extrasPrepare query with custom text º»¼½¾¿ÀÁÂÃÄÅÆNone "#=?@AXkXNone}ãhasbolt-extras Translates € to cypher query.ähasbolt-extrasHelper to translate €3 with something, which can be translated to cypher.åhasbolt-extrasHelper to translate € with €s.ÇNone¸H€‚Œ†ƒ„…‡ˆ‰Š‹‘Ž’“”•–—˜™š›žœŸ ¡¢£¤¥¦§¨©ª«¬®¯­°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇH§¨©ª«¢£¤¥¦¬®¯­°±¸¹›žœŸ ¡²³˜™š—´µ¶·’“”•–‘Žº»¼½¾¿ÀÁÂÃÄÅÆÇ€‚Œ†ƒ„…‡ˆ‰Š‹æ !"#$%&'()*+,-. / 0 1 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D EFGHIJ K L M NOPQRST4UVWXYZZ[\]^^_`abcdefghiijklmnoopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²²³´µ¶¶·¸¹º»df¼½¾¿vÀwÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐŒÑÒÓÑÔÕÑÔÖÑÔ×ÑÔØ Ù Ú Û Ü Ý Þ ß àá✠ã ä å æ ç èéêØëìíîïð„…uñòóôõö÷.hasbolt-extras-0.0.0.21-BQoU1vtyesoHazAlVgLGKhDatabase.Bolt.Extras.GraphDatabase.Bolt.ExtrasDatabase.Bolt.Extras.UtilsDatabase.Bolt.Extras.TemplateDatabase.Bolt.Extras.DSL1Database.Bolt.Extras.Graph.Internal.AbstractGraph)Database.Bolt.Extras.Graph.Internal.Class'Database.Bolt.Extras.Internal.Condition'Database.Bolt.Extras.Internal.Persisted#Database.Bolt.Extras.Internal.Types'Database.Bolt.Extras.Internal.Instances$Database.Bolt.Extras.Internal.Cypher1Database.Bolt.Extras.Template.Internal.Converters'Database.Bolt.Extras.Graph.Internal.Put'Database.Bolt.Extras.Graph.Internal.Get.Database.Bolt.Extras.Graph.Internal.GraphQuery'Database.Bolt.Extras.DSL.Internal.Types Database.Bolt=:*Database.Bolt.Extras.DSL.Internal.Language+Database.Bolt.Extras.DSL.Internal.Instances*Database.Bolt.Extras.DSL.Internal.ExecuterGraph _vertices _relationsNodeName relationsvertices emptyGraphaddNode addRelation relationName Extractableextract Returnable isReturned'return' Requestablerequest Condition:==:&&:||matches tautologyitself GetBoltId getBoltId PersistedobjectId objectValueBoltIdfromInt PropertiesgetPropsLabels getLabels FromValue fromValueToValuetoValue URelationLike toURelation fromURelationNodeLiketoNodefromNodePropertyLabeldummyIdunion currentLoc exactValues exactValuesMToCyphertoCypher makeNodeLikemakeURelationLikeGraphPutResponseGraphPutRequestPutRelationshipMergeRCreateRPutNodeMergeNCreateN requestPutGraphGetResponseGraphGetRequest RelResultrresId rresLabel rresProps NodeResultnresId nresLabels nresProps GetterLike withBoltId withLabel withLabelQwithProp withReturn isReturned RelGetterrgboltIdrgLabelrgProps rgReturnProps rgIsReturned NodeGetterngboltIdngLabelsngProps ngReturnProps ngIsReturned# defaultNode defaultReldefaultNodeReturndefaultNodeNotReturndefaultRelReturndefaultRelNotReturnallPropsrequestGetters extractNodeextractRelation extractNodeIdextractRelationIdextractNodeAesonextractRelationAeson PutRequest GetRequest GraphQueryNodeReqRelReqNodeResRelResrequestEntities formQuery extractGraphs makeRequest mergeGraphsExprCreateMatch OptionalMatchMergeWhereSetDelete DetachDeleteRemoveReturnWithTextConds:&&::||:CNotCondIDIDsINTC SelectorsSelectorPSTS PathSelector:-!::<-!:PPathPart:!->::!-: RelSelector relIdentifierrelLabel relProperties NodeSelectornodeIdentifier nodeLabelsnodeProperties SelectorLikewithIdentifier.:.#-:<-:defNdefRtoNodeSelector toRelSelector CypherDSLcreateFmatchFoptionalMatchFmergeFwhereFsetFdeleteF detachDeleteFremoveFreturnFwithFtextF&hasbolt-0.1.3.5-2EwtswZbRHN1D3stxTVKm2Database.Bolt.RecordRecordDatabase.Bolt.Value.TypeNode Relationship URelationshipValue $fToCypher[] $fToCypher(,) $fToCypher[]0$fToCypherText$fToCypherValue BiClassInfo nodeLikeClassuRelationLikeClass text-1.2.3.1Data.Text.InternalmakeBiClassInstance getConsFields getTypeCons makeToClausemakeFromClauseisMaybe$aeson-1.4.5.0-9WciqreC8Dh4Ox91K72izuData.Aeson.Types.Internalbase Data.Function&template-haskellLanguage.Haskell.TH.SyntaxName!free-5.1.2-B7tCH4dyTQ8LXhCvOtAFVrControl.Monad.FreeFreeexecuteexecuteHelperCexecuteHelperT