<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: NIKITHA</title>
    <description>The latest articles on DEV Community by NIKITHA (@nikitha_8ca3ffcc07cf331e2).</description>
    <link>https://dev.to/nikitha_8ca3ffcc07cf331e2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3976186%2F3cd8970a-7ecb-4481-8111-4094e319692b.jpg</url>
      <title>DEV Community: NIKITHA</title>
      <link>https://dev.to/nikitha_8ca3ffcc07cf331e2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nikitha_8ca3ffcc07cf331e2"/>
    <language>en</language>
    <item>
      <title>We went Edgemaxxing and FalkorDB mogged Joins</title>
      <dc:creator>NIKITHA</dc:creator>
      <pubDate>Sun, 18 Oct 2026 15:43:48 +0000</pubDate>
      <link>https://dev.to/nikitha_8ca3ffcc07cf331e2/we-went-edgemaxxing-and-falkordb-mogged-joins-3lbf</link>
      <guid>https://dev.to/nikitha_8ca3ffcc07cf331e2/we-went-edgemaxxing-and-falkordb-mogged-joins-3lbf</guid>
      <description>&lt;p&gt;Edgemaxxing is actually very good when it comes to performance. To explain this, we were developing Nodes Don't Lie for the WeHack Hackathon using Falkor DB. The service we were creating allowed users to compare different sets of scientific papers in order to see which ones refute and which ones support the others. When we were working on the data modelling for this system we encountered these issues and solutions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 1: Edgemaxxing begins
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Problama
&lt;/h3&gt;

&lt;p&gt;Let's consider an example: "Lean mass increased by 0.37 kg."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The finding lends support to the hypothesis H2 (that creatine increases muscle gain).&lt;/li&gt;
&lt;li&gt;In the case of another hypothesis, for example 'creatine harms the kidneys', it is &lt;strong&gt;not relevant&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You cannot select "Supports" by themselves. It only functions when it is used in conjunction with a hypothesis.&lt;/p&gt;

&lt;h3&gt;
  
  
  PS: Terms
&lt;/h3&gt;

&lt;p&gt;They are relevant to the problems we're working on so it's useful to know, but the solution should also be applicable in other situations as well! &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Word&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Question&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;User input&lt;/td&gt;
&lt;td&gt;"creatine on intelligence vs muscle gain"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hypothesis&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Verifiable claim from the question&lt;/td&gt;
&lt;td&gt;H2: "Creatine increases muscle gain in adults"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Paper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A published article&lt;/td&gt;
&lt;td&gt;Chen 2026 (a meta-analysis)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Study&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Experiment from the paper&lt;/td&gt;
&lt;td&gt;An RCT with 15 vegans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Finding&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Measured result from a study&lt;/td&gt;
&lt;td&gt;"Skeletal muscle mass: no change"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Concept&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A topic or measurement&lt;/td&gt;
&lt;td&gt;"lean mass"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The bad solution
&lt;/h3&gt;

&lt;p&gt;Put 'stance: "supports"' on the finding node. The issue here is that the second hypothesis won't function because it also detects 'supports', which is incorrect. In that case, you'd have to copy the finding once for each hypothesis, and the copies would gradually move apart over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  So what did we do?
&lt;/h3&gt;

&lt;p&gt;We placed the stance on the edge between the finding and the hypothesis, that is, Edgemaxxing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;It&lt;/span&gt; &lt;span class="n"&gt;was&lt;/span&gt; &lt;span class="n"&gt;found&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="s2"&gt;"lean mass increased by 0.37 kg"&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;:EVIDENCE_FOR&lt;/span&gt; &lt;span class="ss"&gt;{&lt;/span&gt;&lt;span class="py"&gt;stance:&lt;/span&gt; &lt;span class="s2"&gt;"supports"&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;weight&lt;/span&gt;&lt;span class="dl"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0.67&lt;/span&gt;&lt;span class="ss"&gt;}]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;H2&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What this implies is that there will be a single node and, if necessary, several outgoing edges each having a different stance for each hypothesis.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9qn6a4al1n1sgvv38p8v.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9qn6a4al1n1sgvv38p8v.gif" alt=" " width="720" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whilst many databases are not capable of storing properties on an edge, FalkorDB is a property graph and therefore edges can hold data just as nodes can. It is because of this feature that the design can be achieved.&lt;/p&gt;

&lt;p&gt;What is the situation in which it is used?&lt;/p&gt;

&lt;p&gt;We are able to share papers and findings among all the questions. If a new question requires a paper that has already been read, then we can reuse it; all we have to do is add an 'EVIDENCE_FOR' edge to the Hypothesis and that's it ;3&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 2: Edgemaxx the contradictions too
&lt;/h2&gt;

&lt;h3&gt;
  
  
  problama
&lt;/h3&gt;

&lt;p&gt;It is possible for two findings to differ regarding one hypothesis but to agree on another.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The hypotheses H2,"lean mass ↑" (Naddafha 2026) and "skeletal muscle mass: no change" (Chen 2026) contradict one another.&lt;/li&gt;
&lt;li&gt;With regard to the kidney hypothesis, the same two findings are of no significance, so there is no disagreement.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What we did
&lt;/h3&gt;

&lt;p&gt;Another edge-maxing! A contradiction is an edge between two findings and it records &lt;strong&gt;which hypothesis&lt;/strong&gt; it is associated with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Naddafha&lt;/span&gt; &lt;span class="n"&gt;finding&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;:CONTRADICTS&lt;/span&gt; &lt;span class="ss"&gt;{&lt;/span&gt;&lt;span class="py"&gt;hypothesis:&lt;/span&gt; &lt;span class="s2"&gt;"H2"&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="py"&gt;reason:&lt;/span&gt; &lt;span class="s2"&gt;"different population"&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt;
                                   &lt;span class="py"&gt;explained_by:&lt;/span&gt; &lt;span class="s2"&gt;"postmenopausal women vs all women"&lt;/span&gt;&lt;span class="ss"&gt;}]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Chen&lt;/span&gt; &lt;span class="n"&gt;finding&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;&lt;span class="k"&gt;MERGE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="py"&gt;e:&lt;/span&gt;&lt;span class="n"&gt;CONTRADICTS&lt;/span&gt; &lt;span class="ss"&gt;{&lt;/span&gt;&lt;span class="py"&gt;hypothesis:&lt;/span&gt;&lt;span class="n"&gt;$k&lt;/span&gt;&lt;span class="ss"&gt;}]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;Set&lt;/span&gt; &lt;span class="n"&gt;e.reason&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;...&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e.severity&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;...&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;e.explained_by&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command &lt;code&gt;MERGE&lt;/code&gt; means that it will create something only if that thing does not already exist.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyc1kp90nlazsr7m6gfbb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyc1kp90nlazsr7m6gfbb.gif" alt=" " width="720" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The index
&lt;/h3&gt;

&lt;p&gt;If we for example wish to look at all the contradictions involving H2, the app requests "give me every &lt;code&gt;CONTRADICTS&lt;/code&gt; edge where &lt;code&gt;hypothesis = H2&lt;/code&gt;". In the absence of indexing, FalkorDB would have to examine &lt;strong&gt;every&lt;/strong&gt; contradiction edge in the entire graph.&lt;/p&gt;

&lt;p&gt;So we created an &lt;strong&gt;index&lt;/strong&gt; on that edge property:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;&lt;span class="k"&gt;Create&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="k"&gt;index&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;relationship&lt;/span&gt; &lt;span class="py"&gt;r:&lt;/span&gt;&lt;span class="n"&gt;CONTRADICTS&lt;/span&gt; &lt;span class="n"&gt;between&lt;/span&gt; &lt;span class="n"&gt;two&lt;/span&gt; &lt;span class="n"&gt;nodes.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While most databases are capable only of indexing nodes or rows, FalkorDB can index edges as well, and it is precisely this feature that enables the fast lookup.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe76s3t1zehcocg66ng65.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe76s3t1zehcocg66ng65.gif" alt=" " width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 3: Normalizemaxxing the nodes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  problama
&lt;/h3&gt;

&lt;p&gt;Suppose that Paper A uses the term "fat-free mass", Paper B uses "lean body mass", and Paper C uses "FFM"; these refer to the same measurement but are named differently. In that case, the app would fail to recognise these differences if it only matched words exactly, since they would be treated as distinct nodes.&lt;/p&gt;

&lt;h3&gt;
  
  
  What we did
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;There is a synonyms list associated with each Concept node.&lt;/li&gt;
&lt;li&gt;When the Stance agent evaluates a finding, it determines whether the hypothesis can be measured in some other form (that is, in terms of true or false).&lt;/li&gt;
&lt;li&gt;If the answer is yes, the programme includes a special edge running from the result of the search to the outcome concept of the hypothesis:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;   &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;Finding:&lt;/span&gt; &lt;span class="s2"&gt;"FFM increased by 1.15 kg"&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;:MEASURES&lt;/span&gt; &lt;span class="ss"&gt;{&lt;/span&gt;&lt;span class="py"&gt;hypothesis:&lt;/span&gt; &lt;span class="s2"&gt;"H2"&lt;/span&gt;&lt;span class="ss"&gt;}]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;Concept:&lt;/span&gt; &lt;span class="s2"&gt;"muscle gain"&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;The code also includes the exact wording of the finding among the synonyms of the concept so that it can be retrieved the next time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhsv8j2ma93f3cutf0mor.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhsv8j2ma93f3cutf0mor.gif" alt=" " width="720" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This &lt;code&gt;MEASURES&lt;/code&gt; edge also includes &lt;code&gt;hypothesis&lt;/code&gt;, for exactly the same reason as in Part 2: "FFM counts as muscle gain" is true for H2 but might not be true for some other hypothesis. It also has an edge index, once again Edgemaxxing!!!!!&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this matters
&lt;/h3&gt;

&lt;p&gt;The graph improves its knowledge of names with time, and each question enhances the synonym lists for the following question.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 4: Contradiction camps using algo.WCC
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What it does
&lt;/h3&gt;

&lt;p&gt;Imagine the contradiction edges as strings tied between findings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When A contradicts B and B contradicts C, then A, B and C are all linked together.&lt;/li&gt;
&lt;li&gt;A group of linked findings makes up one "camp": it is one area in which the evidence is contradictory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The standard algorithm for finding these groups is WCC (weakly connected components).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fur2fvxquf45d1cpg0zq8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fur2fvxquf45d1cpg0zq8.gif" alt=" " width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The relevant point is that FalkorDB includes graph algorithms as part of its system, which means that the application executes the command &lt;code&gt;CALL algo.WCC(...)&lt;/code&gt; directly within the database; it therefore does not need to download the entire graph and run the algorithm using Python.&lt;/p&gt;

&lt;p&gt;The query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;&lt;span class="n"&gt;Invoke&lt;/span&gt; &lt;span class="n"&gt;algo.WCC&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;parameters&lt;/span&gt; &lt;span class="ss"&gt;{&lt;/span&gt;&lt;span class="py"&gt;nodeLabels:&lt;/span&gt; &lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Finding'&lt;/span&gt;&lt;span class="ss"&gt;],&lt;/span&gt; &lt;span class="py"&gt;relationshipTypes:&lt;/span&gt; &lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'CONTRADICTS'&lt;/span&gt;&lt;span class="ss"&gt;]}&lt;/span&gt;
&lt;span class="k"&gt;YIELD&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;componentId&lt;/span&gt;
&lt;span class="k"&gt;MATCH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="py"&gt;e:&lt;/span&gt;&lt;span class="n"&gt;EVIDENCE_FOR&lt;/span&gt;&lt;span class="ss"&gt;]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;h:&lt;/span&gt;&lt;span class="n"&gt;Hypothesis&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;:ASKS&lt;/span&gt;&lt;span class="ss"&gt;]&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;:Question&lt;/span&gt; &lt;span class="ss"&gt;{&lt;/span&gt;&lt;span class="py"&gt;id:&lt;/span&gt;&lt;span class="n"&gt;$q&lt;/span&gt;&lt;span class="ss"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;componentId&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;findings&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;collect&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;e.stance&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;stances&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;findings&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;Return&lt;/span&gt; &lt;span class="n"&gt;h.statement&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;hypothesis&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;componentId&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;camp&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;findings&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stances&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In simple terms, you should locate the camps within all the findings, retain only those that are relevant to this question, and then display the size of each camp along with its positions.&lt;/p&gt;

&lt;p&gt;A limitation is that WCC includes all the &lt;code&gt;CONTRADICTS&lt;/code&gt; edges for each hypothesis; if a single finding has contradictions under two different hypotheses then those two groups can combine into a single group.&lt;/p&gt;




&lt;h2&gt;
  
  
  How it all fits together
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dot"&gt;&lt;code&gt;&lt;span class="nv"&gt;Paper&lt;/span&gt; &lt;span class="err"&gt;─&lt;/span&gt;&lt;span class="nv"&gt;DESCRIBES&lt;/span&gt;&lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nv"&gt;Study&lt;/span&gt; &lt;span class="err"&gt;─&lt;/span&gt;&lt;span class="nv"&gt;FOUND&lt;/span&gt;&lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nv"&gt;Finding&lt;/span&gt; &lt;span class="err"&gt;─&lt;/span&gt;&lt;span class="nv"&gt;EVIDENCE_FOR&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;stance&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nv"&gt;Hypothesis&lt;/span&gt;
                                   &lt;span class="err"&gt;│&lt;/span&gt;
                                   &lt;span class="err"&gt;├─&lt;/span&gt;&lt;span class="nv"&gt;MEASURES&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;hypothesis&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nv"&gt;Concept&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;synonyms&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
                                   &lt;span class="err"&gt;│&lt;/span&gt;
                                   &lt;span class="err"&gt;└─&lt;/span&gt;&lt;span class="nv"&gt;CONTRADICTS&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;hypothesis&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;reason&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;explained_by&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nv"&gt;Finding&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Parting Notes
&lt;/h2&gt;

&lt;p&gt;The essential aspect of graph databases is edges. Making effective use of them can make your life easier (and quicker!!!).&lt;/p&gt;

</description>
      <category>backend</category>
      <category>database</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
