참고 : 개발중인 프로젝트!
UCFS는 컨텍스트 가 없고 일반 언어 교차로 와 관련된 문제를 해결하는 도구입니다. 그러한 문제의 예 :
Usage: kotgll options_list
Options:
--input -> Input format (always required) { Value should be one of [string, graph] }
--grammar -> Grammar format (always required) { Value should be one of [cfg, rsm] }
--sppf [ON] -> Sppf mode { Value should be one of [on, off] }
--inputPath -> Path to input txt file (always required) { String }
--grammarPath -> Path to grammar txt file (always required) { String }
--outputPath -> Path to output txt file (always required) { String }
--help, -h -> Usage info
git clone https://github.com/FormalLanguageConstrainedPathQuerying/kotgll.git
또는
git clone [email protected]:FormalLanguageConstrainedPathQuerying/kotgll.git
또는
gh repo clone FormalLanguageConstrainedPathQuerying/kotgll
cd kotgll
gradle run --args="--help"
"옵션 목록"메시지가 표시됩니다.
gradle run --args="--input graph --grammar rsm --sppf off --inputPath src/test/resources/cli/TestGraphReadWriteCSV/dyck.csv --grammarPath src/test/resources/cli/TestRSMReadWriteTXT/dyck.txt --outputPath ./result.txt"
curl -L -O https://github.com/FormalLanguageConstrainedPathQuerying/kotgll/releases/download/v1.0.0/kotgll-1.0.0.jar
java -jar kotgll-1.0.0.jar --input graph --grammar rsm --sppf off --inputPath src/test/resources/cli/TestGraphReadWriteCSV/dyck.csv --grammarPath src/test/resources/cli/TestRSMReadWriteTXT/dyck.txt --outputPath ./result.txt
StartNonterminal("S")
Nonterminal("S") -> Terminal("subClassOf_r") Nonterminal("S") Terminal("subClassOf")
Nonterminal("S") -> Terminal("subClassOf_r") Terminal("subClassOf")
Nonterminal("S") -> Terminal("type_r") Nonterminal("S") Terminal("type")
Nonterminal("S") -> Terminal("type_r") Terminal("type")
StartState(id=0,nonterminal=Nonterminal("S"),isStart=true,isFinal=false)
State(id=0,nonterminal=Nonterminal("S"),isStart=true,isFinal=false)
State(id=1,nonterminal=Nonterminal("S"),isStart=false,isFinal=false)
State(id=4,nonterminal=Nonterminal("S"),isStart=false,isFinal=false)
State(id=3,nonterminal=Nonterminal("S"),isStart=false,isFinal=true)
State(id=2,nonterminal=Nonterminal("S"),isStart=false,isFinal=false)
State(id=6,nonterminal=Nonterminal("S"),isStart=false,isFinal=true)
State(id=5,nonterminal=Nonterminal("S"),isStart=false,isFinal=false)
TerminalEdge(tail=0,head=1,terminal=Terminal("subClassOf_r"))
TerminalEdge(tail=0,head=4,terminal=Terminal("type_r"))
TerminalEdge(tail=1,head=3,terminal=Terminal("subClassOf"))
NonterminalEdge(tail=1,head=2,nonterminal=Nonterminal("S"))
TerminalEdge(tail=4,head=6,terminal=Terminal("type"))
NonterminalEdge(tail=4,head=5,nonterminal=Nonterminal("S"))
TerminalEdge(tail=2,head=3,terminal=Terminal("subClassOf"))
TerminalEdge(tail=5,head=6,terminal=Terminal("type"))
GLL 알고리즘은 그래프 입력을 지원하도록 수정되었습니다. 제안 된 수정은 모든 쌍의 도달 가능성을 찾는 시나리오에 대해 여러 실제 그래프에서 평가되었습니다.
기계 구성 : Ubuntu 20.04가있는 PC, Intel Core i7-6700 3.40GHz CPU, DDR4 64GB RAM.
환경 구성 :
그래프 데이터는 CFPQ_DATA 데이터 세트에서 선택됩니다.
그래프에 대한 자세한 설명은 Bellow로 나열됩니다.
그래프 이름 | | V | | | e | | #subclassof | #유형 | #BroaderTransitive |
---|---|---|---|---|---|
효소 | 48 815 | 86 543 | 8 163 | 14 989 | 8 156 |
일식 | 239 111 | 360 248 | 90 962 | 72 517 | 0 |
계층 구조로 이동하십시오 | 45 007 | 490 109 | 490 109 | 0 | 0 |
가다 | 582 929 | 1 437 437 | 94 514 | 226 481 | 0 |
지리학 | 450 609 | 2 201 532 | 0 | 89 065 | 20 867 |
분류 | 5 728 398 | 14 922 125 | 2 112 637 | 2 508 635 | 0 |
평가에 사용 된 모든 쿼리는 동일한 세대 쿼리의 변형입니다. x
관계의 역수 및 각각의 에지는 x_r
로 표시됩니다.
RDF 그래프에 사용되는 문법 :
G 1
S -> subClassOf_r S subClassOf | subClassOf_r subClassOf
| type_r S type | type_r type
저장소에서 g 1 컨텍스트가없는 문법의 표현은 여기에서 찾을 수 있습니다.
리포지토리에서 재귀 자동 마톤으로서 G 1 컨텍스트가없는 문법의 표현은 여기에서 찾을 수 있습니다.
RDF 분석 과 관련된 그래프에 대한 모든 쌍 도달 가능성 쿼리 평가 결과는 다음과 같습니다.
각 행에서, 초의 가장 좋은 평균 시간은 굵게 표시됩니다.
그래프 | CFG | RSM | gll4graph |
---|---|---|---|
효소 | 0.107 | 0.044 | 0.22 |
일식 | 0.94 | 0.43 | 1.5 |
계층 구조로 이동하십시오 | 4.1 | 3.0 | 3.6 |
가다 | 3.2 | 1.86 | 5.55 |
지리학 | 0.97 | 0.34 | 2.89 |
분류 | 31.2 | 14.8 | 45.4 |
더 많은 결과, 그러나 원시 형태는 저장소 KOTGLL_BENCHMARK에서 찾을 수 있습니다.