NODES 2019 Modeling a Tournament in Neo4j Michael McKenzie 6th Degree UFAF Black Belt October 10, 2019
Problem ● United Fighting Arts Federation (UFAF) ○ Martial arts organization founded by Chuck Norris ● International Training Convention (ITC) ○ Hosted annually in Las Vegas, NV, USA ○ Seminars ○ Tournament ■ 10 Rings ■ 257 Divisions !!!! Currently organized by hand with spreadsheets and manual manipulation Can we improve the scheduling process and efficiency?
:Event :CONTAINS :HAS_REGIS :Registr :Divisio :COMPETES :Person :OCCURS_IN :Ring :NEXT_TO TERED ation n _IN Steps #1 Competitor registers #2 Assign competitor to division #3 Assign divisions to rings #4 Assign judges to rings 1. Person registers 2. Assigned to divisions 3. Divisions assigned to rings 4. Judges assigned to rings
Schema
Problem Ring 1 Ring 2 Ring 3 Ring 4 Ring 10 Ring 5 Ring 9 Ring 8 Ring 7 Ring 6
Scheduling Rules & Division “Groups” ● Division “Groups” ● Order Division “Groups” ○ Age Divisions ○ Sex ○ # competitors per division ○ Rank Group ○ Largest to smallest ■ Beginner ○ Sparring always last ■ Intermediate ● Order Division “Groups” ■ Advanced ○ Total # competitors ■ Black Belt ○ Largest to smallest ● Division Types ○ Traditional Kata ○ Open Kata ○ Weapons Kata ○ Sparring
Scheduling Rules & Division Groups ● Group Characteristics Example: ○ Age ○ Sex Age: 16-17 ○ Rank Type Sex: Male ■ Beginner Rank Type: Black Belt ■ Intermediate Division Types: ■ Advanced Traditional Kata (5) ■ Black Belt Open Kata (3) ● Division Types Weapons Kata (7) ○ Traditional Kata Sparring (8) ○ Open Kata ○ Weapons Kata ○ Sparring
Scheduling Rules & Division Groups ● Order Divisions within Group ○ # competitors per division ○ Largest to smallest ○ Sparring always last Example: “Unsorted” Example: “Sorted” Age: 16-17 Age: 16-17 Sex: Male Sex: Male Rank Type: Black Belt Rank Type: Black Belt Division Types: Division Types: Traditional Kata (5) Weapons Kata (7) Open Kata (3) Traditional Kata (5) Weapons Kata (7) Open Kata (3) Sparring (8) Sparring (8)
Ring Assignments ● Order Groups ○ Total # competitors Ring 1 Ring 2 Ring 3 Ring 4 ∑(all comps in divs in group) ○ Largest to smallest Ring 10 Ring 5 ● Cross-Walk Ring 9 Ring 8 Ring 7 Ring 6
GRANDstack Application
Next Steps... ● Complete GRANDstack prototype application ● Connect registration to UFAF website ○ Limit school affiliation to predefined schools ○ Enforce logic restrictions based on forms selections ● Create admin & user roles ● (No current metrics) Collect metrics to adjust assigning divisions ● Assign judges ● Competitor facing UI ○ Competitor web-app ○ Tournament dashboard
About me... Programmer at CALIBRE Systems, Inc. GraphDB DC Organizer (www.meetup.com/GraphDB-DC/) Washington, DC, USA Contact web: mckenzma.com LinkedIn: www.linkedin.com/in/mckenzma/ GitHub: github.com/mckenzma Neo4j Community: community.neo4j.com/u/mckenzma/summary (graphs)-[:ARE]->(everywhere)
Hunger Games Questions for “Modeling a Tournament in Neo4j” 1. Easy: Who is the Founder of the United Fighting Arts Federation 2. Medium: How many divisions are there? a. 100 b. 257 c. 365 3. Hard: What is the name of the method currently being used to assign division groups to rings? Answer here: r.neo4j.com/hunger-games
Recommend
More recommend