|
1 | 1 | # kotgll |
| 2 | +[](https://github.com/vadyushkins/kotgll/actions/workflows/build.yml) |
| 3 | +[](https://github.com/vadyushkins/kotgll/actions/workflows/test.yml) |
| 4 | + |
2 | 5 | * [About](https://github.com/vadyushkins/kotgll#about) |
3 | 6 | * [Usage](https://github.com/vadyushkins/kotgll#usage) |
4 | 7 | * [From sources](https://github.com/vadyushkins/kotgll#from-sources) |
5 | 8 | * [Using JAR](https://github.com/vadyushkins/kotgll#using-jar) |
6 | 9 | * [CFG Format Example](https://github.com/vadyushkins/kotgll#cfg-format-example) |
7 | 10 | * [RSM Format Example](https://github.com/vadyushkins/kotgll#rsm-format-example) |
| 11 | +* [Performance](https://github.com/vadyushkins/kotgll#performance) |
| 12 | + * [Graphs](https://github.com/vadyushkins/kotgll#graphs) |
| 13 | + * [Grammars](https://github.com/vadyushkins/kotgll#grammars) |
| 14 | + * [Results](https://github.com/vadyushkins/kotgll#results) |
| 15 | + * [More results](https://github.com/vadyushkins/kotgll#more-results) |
| 16 | + |
| 17 | +> Note: project under heavy development! |
8 | 18 |
|
9 | 19 | ## About |
10 | | -GLL implementation in Kotlin |
| 20 | +**kotgll** is an open-source project for implementing the GLL algorithm and its modifications in Kotlin |
11 | 21 |
|
12 | 22 | ## Usage |
13 | 23 |
|
@@ -98,3 +108,69 @@ NonterminalEdge(tail=4,head=5,nonterminal=Nonterminal("S")) |
98 | 108 | TerminalEdge(tail=2,head=3,terminal=Terminal("subClassOf")) |
99 | 109 | TerminalEdge(tail=5,head=6,terminal=Terminal("type")) |
100 | 110 | ``` |
| 111 | + |
| 112 | +## Performance |
| 113 | + |
| 114 | +The GLL algorithm has been modified to support graph input. |
| 115 | +The proposed modification has been evaluated on several real graphs for the scenario of finding all pairs of reachability. |
| 116 | + |
| 117 | +**Machine configuration**: PC with Ubuntu 20.04, Intel Core i7-6700 3.40GHz CPU, DDR4 64Gb RAM. |
| 118 | + |
| 119 | +**Enviroment configuration**: |
| 120 | +* Java HotSpot(TM) 64-Bit server virtual machine (build 15.0.2+7-27, mixed mode, sharing). |
| 121 | +* JVM heap configuration: 55Gb both xms and xmx. |
| 122 | + |
| 123 | +### Graphs |
| 124 | + |
| 125 | +The graph data is selected from [CFPQ_Data dataset](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data). |
| 126 | + |
| 127 | +A detailed description of the graphs is listed bellow. |
| 128 | + |
| 129 | +#### RDF analysis graphs |
| 130 | + |
| 131 | +| Graph name | \|*V*\| | \|*E*\| | #subClassOf | #type | #broaderTransitive | |
| 132 | +|:------------|----------:|------------:|-------------:|-----------:|--------------------:| |
| 133 | +| [Enzyme](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/enzyme.html#enzyme) | 48 815 | 86 543 | 8 163 | 14 989 | 8 156 | |
| 134 | +| [Eclass](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/eclass.html#eclass) | 239 111 | 360 248 | 90 962 | 72 517 | 0 | |
| 135 | +| [Go hierarchy](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/go_hierarchy.html#go-hierarchy) | 45 007 | 490 109 | 490 109 | 0 | 0 | |
| 136 | +| [Go](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/go.html#go) | 582 929 | 1 437 437 | 94 514 | 226 481 | 0 | |
| 137 | +| [Geospecies](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/geospecies.html#geospecies) | 450 609 | 2 201 532 | 0 | 89 065 | 20 867 | |
| 138 | +| [Taxonomy](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/taxonomy.html#taxonomy) | 5 728 398 | 14 922 125 | 2 112 637 | 2 508 635 | 0 | |
| 139 | + |
| 140 | +### Grammars |
| 141 | + |
| 142 | +All queries used in evaluation are variants of same-generation query. |
| 143 | +The inverse of an ```x``` relation and the respective edge is denoted as ```x_r```. |
| 144 | + |
| 145 | +<br/> |
| 146 | + |
| 147 | +Grammars used for **RDF** graphs: |
| 148 | + |
| 149 | +**G<sub>1</sub>** |
| 150 | +``` |
| 151 | +S -> subClassOf_r S subClassOf | subClassOf_r subClassOf |
| 152 | + | type_r S type | type_r type |
| 153 | +``` |
| 154 | + |
| 155 | +The representation of **G<sub>1</sub>** context-free grammar in the repository can be found [here](https://github.com/vadyushkins/kotgll/blob/main/src/test/resources/cli/TestCFGReadWriteTXT/g1.txt). |
| 156 | + |
| 157 | +The representation of **G<sub>1</sub>** context-free grammar as recursive automaton in the repository can be found [here](https://github.com/vadyushkins/kotgll/blob/main/src/test/resources/cli/TestRSMReadWriteTXT/g1.txt). |
| 158 | + |
| 159 | +### Results |
| 160 | + |
| 161 | +The results of the **all pairs reachability** queries evaluation on graphs related to **RDF analysis** are listed below. |
| 162 | + |
| 163 | +In each row, the best mean time in seconds is highlighted in **bold**. |
| 164 | + |
| 165 | +| Graph | [CFG](https://github.com/vadyushkins/kotgll/tree/main/src/main/kotlin/org/kotgll/cfg/graphinput/withoutsppf) | [RSM](https://github.com/vadyushkins/kotgll/tree/main/src/main/kotlin/org/kotgll/rsm/graphinput/withoutsppf) | [GLL4Graph](https://github.com/FormalLanguageConstrainedPathQuerying/GLL4Graph) | |
| 166 | +|-------------- |:-----: |:---------: |:---------: | |
| 167 | +| [Enzyme](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/enzyme.html#enzyme) | 0.107 | **0.044** | 0.22 | |
| 168 | +| [Eclass](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/eclass.html#eclass) | 0.94 | **0.43** | 1.5 | |
| 169 | +| [Go hierarchy](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/go_hierarchy.html#go-hierarchy) | 4.1 | **3.0** | 3.6 | |
| 170 | +| [Go](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/go.html#go) | 3.2 | **1.86** | 5.55 | |
| 171 | +| [Geospecies](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/geospecies.html#geospecies) | 0.97 | **0.34** | 2.89 | |
| 172 | +| [Taxonomy](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/taxonomy.html#taxonomy) | 31.2 | **14.8** | 45.4 | |
| 173 | + |
| 174 | +#### More results |
| 175 | + |
| 176 | +More results, but in raw form, can be found in repository [kotgll_benchmarks](https://github.com/vadyushkins/kotgll_benchmarks/) |
0 commit comments