You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(120) |
Sep
(36) |
Oct
(116) |
Nov
(17) |
Dec
(44) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(143) |
Feb
(192) |
Mar
(74) |
Apr
(84) |
May
(105) |
Jun
(64) |
Jul
(49) |
Aug
(120) |
Sep
(159) |
Oct
(156) |
Nov
(51) |
Dec
(28) |
2009 |
Jan
(17) |
Feb
(55) |
Mar
(33) |
Apr
(57) |
May
(54) |
Jun
(28) |
Jul
(6) |
Aug
(16) |
Sep
(38) |
Oct
(30) |
Nov
(26) |
Dec
(52) |
2010 |
Jan
(7) |
Feb
(91) |
Mar
(65) |
Apr
(2) |
May
(14) |
Jun
(25) |
Jul
(38) |
Aug
(48) |
Sep
(80) |
Oct
(70) |
Nov
(75) |
Dec
(77) |
2011 |
Jan
(68) |
Feb
(53) |
Mar
(51) |
Apr
(35) |
May
(65) |
Jun
(101) |
Jul
(29) |
Aug
(230) |
Sep
(95) |
Oct
(49) |
Nov
(110) |
Dec
(63) |
2012 |
Jan
(41) |
Feb
(42) |
Mar
(25) |
Apr
(46) |
May
(51) |
Jun
(44) |
Jul
(45) |
Aug
(29) |
Sep
(12) |
Oct
(9) |
Nov
(17) |
Dec
(2) |
2013 |
Jan
(12) |
Feb
(14) |
Mar
(7) |
Apr
(16) |
May
(54) |
Jun
(27) |
Jul
(11) |
Aug
(5) |
Sep
(85) |
Oct
(27) |
Nov
(37) |
Dec
(32) |
2014 |
Jan
(8) |
Feb
(29) |
Mar
(5) |
Apr
(3) |
May
(22) |
Jun
(3) |
Jul
(4) |
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <ku...@us...> - 2008-03-26 15:49:09
|
Revision: 727 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=727&view=rev Author: kurzum Date: 2008-03-26 08:49:00 -0700 (Wed, 26 Mar 2008) Log Message: ----------- added new example 1to16 Modified Paths: -------------- trunk/examples/krk/krkopt.data trunk/src/dl-learner/org/dllearner/examples/KRK.java Added Paths: ----------- trunk/examples/krk/krkopt0to16.data trunk/examples/krk/test_ZERO_against_1to16.conf Modified: trunk/examples/krk/krkopt.data =================================================================== --- trunk/examples/krk/krkopt.data 2008-03-26 13:41:24 UTC (rev 726) +++ trunk/examples/krk/krkopt.data 2008-03-26 15:49:00 UTC (rev 727) @@ -103,3 +103,25158 @@ d,3,f,6,e,1,one d,3,f,7,e,1,one d,3,f,8,e,1,one +c,1,b,3,a,1,two +c,1,c,3,a,1,two +c,1,c,4,a,1,two +c,1,c,5,a,1,two +c,1,c,6,a,1,two +c,1,c,7,a,1,two +c,1,c,8,a,1,two +c,1,d,1,a,1,two +c,1,d,3,a,1,two +c,1,d,4,a,1,two +c,1,d,5,a,1,two +c,1,d,6,a,1,two +c,1,d,7,a,1,two +c,1,d,8,a,1,two +c,1,e,1,a,1,two +c,1,e,3,a,1,two +c,1,e,4,a,1,two +c,1,e,5,a,1,two +c,1,e,6,a,1,two +c,1,e,7,a,1,two +c,1,e,8,a,1,two +c,1,f,1,a,1,two +c,1,f,3,a,1,two +c,1,f,4,a,1,two +c,1,f,5,a,1,two +c,1,f,6,a,1,two +c,1,f,7,a,1,two +c,1,f,8,a,1,two +c,1,g,1,a,1,two +c,1,g,3,a,1,two +c,1,g,4,a,1,two +c,1,g,5,a,1,two +c,1,g,6,a,1,two +c,1,g,7,a,1,two +c,1,g,8,a,1,two +c,1,h,1,a,1,two +c,1,h,3,a,1,two +c,1,h,4,a,1,two +c,1,h,5,a,1,two +c,1,h,6,a,1,two +c,1,h,7,a,1,two +c,1,h,8,a,1,two +c,2,b,1,a,1,two +c,2,b,3,a,1,two +c,2,b,4,a,2,two +c,2,c,1,a,1,two +c,2,c,3,a,1,two +c,2,c,4,a,2,two +c,2,c,5,a,2,two +c,2,c,6,a,2,two +c,2,c,7,a,2,two +c,2,c,8,a,2,two +c,2,d,1,a,1,two +c,2,d,1,a,2,two +c,2,d,2,a,1,two +c,2,d,2,a,2,two +c,2,d,3,a,1,two +c,2,d,4,a,2,two +c,2,d,5,a,2,two +c,2,d,6,a,2,two +c,2,d,7,a,2,two +c,2,d,8,a,2,two +c,2,e,1,a,1,two +c,2,e,1,a,2,two +c,2,e,2,a,1,two +c,2,e,2,a,2,two +c,2,e,3,a,1,two +c,2,e,4,a,2,two +c,2,e,5,a,2,two +c,2,e,6,a,2,two +c,2,e,7,a,2,two +c,2,e,8,a,2,two +c,2,f,1,a,1,two +c,2,f,1,a,2,two +c,2,f,2,a,1,two +c,2,f,2,a,2,two +c,2,f,3,a,1,two +c,2,f,4,a,2,two +c,2,f,5,a,2,two +c,2,f,6,a,2,two +c,2,f,7,a,2,two +c,2,f,8,a,2,two +c,2,g,1,a,1,two +c,2,g,1,a,2,two +c,2,g,2,a,1,two +c,2,g,2,a,2,two +c,2,g,3,a,1,two +c,2,g,4,a,2,two +c,2,g,5,a,2,two +c,2,g,6,a,2,two +c,2,g,7,a,2,two +c,2,g,8,a,2,two +c,2,h,1,a,1,two +c,2,h,1,a,2,two +c,2,h,2,a,1,two +c,2,h,2,a,2,two +c,2,h,3,a,1,two +c,2,h,4,a,2,two +c,2,h,5,a,2,two +c,2,h,6,a,2,two +c,2,h,7,a,2,two +c,2,h,8,a,2,two +c,3,a,4,c,1,two +c,3,a,5,c,1,two +c,3,a,6,c,1,two +c,3,a,7,c,1,two +c,3,a,8,c,1,two +c,3,b,4,c,1,two +c,3,b,5,c,1,two +c,3,b,6,c,1,two +c,3,b,7,c,1,two +c,3,b,8,c,1,two +c,3,c,1,a,1,two +c,3,c,2,a,1,two +c,3,c,4,c,1,two +c,3,c,5,c,1,two +c,3,c,6,c,1,two +c,3,c,7,c,1,two +c,3,c,8,c,1,two +c,3,d,1,a,1,two +c,3,d,1,b,1,two +c,3,d,3,b,1,two +c,3,d,4,a,1,two +c,3,d,4,b,1,two +c,3,d,4,c,1,two +c,3,d,5,b,1,two +c,3,d,5,c,1,two +c,3,d,6,b,1,two +c,3,d,6,c,1,two +c,3,d,7,b,1,two +c,3,d,7,c,1,two +c,3,d,8,b,1,two +c,3,d,8,c,1,two +c,3,e,1,a,1,two +c,3,e,1,b,1,two +c,3,e,2,b,1,two +c,3,e,3,b,1,two +c,3,e,4,a,1,two +c,3,e,4,b,1,two +c,3,e,4,c,1,two +c,3,e,5,a,1,two +c,3,e,5,b,1,two +c,3,e,5,c,1,two +c,3,e,6,b,1,two +c,3,e,6,c,1,two +c,3,e,7,b,1,two +c,3,e,7,c,1,two +c,3,e,8,b,1,two +c,3,e,8,c,1,two +c,3,f,1,a,1,two +c,3,f,1,b,1,two +c,3,f,2,b,1,two +c,3,f,3,b,1,two +c,3,f,4,a,1,two +c,3,f,4,b,1,two +c,3,f,4,c,1,two +c,3,f,5,a,1,two +c,3,f,5,b,1,two +c,3,f,5,c,1,two +c,3,f,6,a,1,two +c,3,f,6,b,1,two +c,3,f,6,c,1,two +c,3,f,7,b,1,two +c,3,f,7,c,1,two +c,3,f,8,b,1,two +c,3,f,8,c,1,two +c,3,g,1,a,1,two +c,3,g,1,b,1,two +c,3,g,2,b,1,two +c,3,g,3,b,1,two +c,3,g,4,a,1,two +c,3,g,4,b,1,two +c,3,g,4,c,1,two +c,3,g,5,a,1,two +c,3,g,5,b,1,two +c,3,g,5,c,1,two +c,3,g,6,a,1,two +c,3,g,6,b,1,two +c,3,g,6,c,1,two +c,3,g,7,a,1,two +c,3,g,7,b,1,two +c,3,g,7,c,1,two +c,3,g,8,b,1,two +c,3,g,8,c,1,two +c,3,h,1,a,1,two +c,3,h,1,b,1,two +c,3,h,2,b,1,two +c,3,h,3,b,1,two +c,3,h,4,a,1,two +c,3,h,4,b,1,two +c,3,h,4,c,1,two +c,3,h,5,a,1,two +c,3,h,5,b,1,two +c,3,h,5,c,1,two +c,3,h,6,a,1,two +c,3,h,6,b,1,two +c,3,h,6,c,1,two +c,3,h,7,a,1,two +c,3,h,7,b,1,two +c,3,h,7,c,1,two +c,3,h,8,a,1,two +c,3,h,8,b,1,two +c,3,h,8,c,1,two +d,1,b,3,a,1,two +d,2,b,3,a,1,two +d,3,a,4,d,1,two +d,3,a,5,d,1,two +d,3,a,6,d,1,two +d,3,a,7,d,1,two +d,3,a,8,d,1,two +d,3,b,3,a,1,two +d,3,b,4,d,1,two +d,3,b,5,d,1,two +d,3,b,6,d,1,two +d,3,b,7,d,1,two +d,3,b,8,d,1,two +d,3,c,4,d,1,two +d,3,c,5,d,1,two +d,3,c,6,d,1,two +d,3,c,7,d,1,two +d,3,c,8,d,1,two +d,3,d,4,d,1,two +d,3,d,5,d,1,two +d,3,d,6,d,1,two +d,3,d,7,d,1,two +d,3,d,8,d,1,two +d,3,e,4,d,1,two +d,3,e,5,d,1,two +d,3,e,6,d,1,two +d,3,e,7,d,1,two +d,3,e,8,d,1,two +d,3,f,4,d,1,two +d,3,f,5,d,1,two +d,3,f,6,d,1,two +d,3,f,7,d,1,two +d,3,f,8,d,1,two +d,3,g,4,d,1,two +d,3,g,5,d,1,two +d,3,g,6,d,1,two +d,3,g,7,d,1,two +d,3,g,8,d,1,two +d,3,h,4,d,1,two +d,3,h,5,d,1,two +d,3,h,6,d,1,two +d,3,h,7,d,1,two +d,3,h,8,d,1,two +c,1,b,4,a,1,three +c,3,b,2,b,1,three +c,3,b,3,b,1,three +c,3,b,4,b,1,three +c,3,b,5,b,1,three +c,3,b,6,b,1,three +c,3,b,7,b,1,three +c,3,b,8,b,1,three +c,3,c,2,b,1,three +c,3,c,4,b,1,three +c,3,c,5,b,1,three +c,3,c,6,b,1,three +c,3,c,7,b,1,three +c,3,c,8,b,1,three +c,3,d,2,a,1,three +c,3,d,2,b,1,three +c,3,d,2,c,1,three +c,3,d,3,a,1,three +c,3,d,3,c,1,three +c,3,e,2,a,1,three +c,3,e,2,c,1,three +c,3,e,3,a,1,three +c,3,e,3,c,1,three +c,3,f,2,a,1,three +c,3,f,3,a,1,three +c,3,f,3,c,1,three +c,3,g,2,a,1,three +c,3,g,3,a,1,three +c,3,g,3,c,1,three +c,3,h,2,a,1,three +c,3,h,3,a,1,three +c,3,h,3,c,1,three +d,1,b,3,b,1,three +d,1,b,4,a,1,three +d,1,b,4,b,1,three +d,1,d,2,b,1,three +d,1,e,2,b,1,three +d,1,f,2,b,1,three +d,1,g,2,b,1,three +d,1,h,2,b,1,three +d,2,b,3,b,1,three +d,2,b,4,a,1,three +d,2,b,4,b,1,three +d,2,b,5,a,1,three +d,2,b,5,b,1,three +d,2,b,6,a,1,three +d,2,b,6,b,1,three +d,2,b,7,a,1,three +d,2,b,7,b,1,three +d,2,b,8,a,1,three +d,2,b,8,b,1,three +d,2,c,2,b,1,three +d,2,d,3,b,2,three +d,2,e,3,b,2,three +d,2,f,3,b,2,three +d,2,g,3,b,2,three +d,2,h,3,b,2,three +d,3,b,3,b,1,three +d,3,b,4,a,1,three +d,3,b,4,b,1,three +d,3,b,5,a,1,three +d,3,b,5,b,1,three +d,3,b,6,a,1,three +d,3,b,6,b,1,three +d,3,b,7,a,1,three +d,3,b,7,b,1,three +d,3,b,8,a,1,three +d,3,b,8,b,1,three +d,3,c,2,b,1,three +d,3,e,2,a,1,three +d,3,e,2,c,1,three +d,3,f,2,a,1,three +d,3,f,2,c,1,three +d,3,g,2,a,1,three +d,3,g,2,c,1,three +d,3,h,2,a,1,three +d,3,h,2,c,1,three +d,4,e,2,a,1,three +d,4,f,2,a,1,three +d,4,g,2,a,1,three +d,4,h,2,a,1,three +c,2,b,5,a,2,four +d,1,a,2,f,1,four +d,1,a,2,h,1,four +d,1,b,2,f,1,four +d,1,b,2,h,1,four +d,1,c,2,a,1,four +d,1,c,2,f,1,four +d,1,c,2,h,1,four +d,1,d,2,a,1,four +d,1,d,2,f,1,four +d,1,d,2,h,1,four +d,1,d,3,a,1,four +d,1,d,3,a,2,four +d,1,d,3,b,1,four +d,1,d,3,b,2,four +d,1,e,2,a,1,four +d,1,e,2,f,1,four +d,1,e,2,h,1,four +d,1,e,3,a,1,four +d,1,e,3,a,2,four +d,1,e,3,b,1,four +d,1,e,3,b,2,four +d,1,f,2,a,1,four +d,1,f,2,h,1,four +d,1,f,3,a,1,four +d,1,f,3,a,2,four +d,1,f,3,b,1,four +d,1,f,3,b,2,four +d,1,g,2,a,1,four +d,1,g,3,a,1,four +d,1,g,3,a,2,four +d,1,g,3,b,1,four +d,1,g,3,b,2,four +d,1,h,2,a,1,four +d,1,h,3,a,1,four +d,1,h,3,a,2,four +d,1,h,3,b,1,four +d,1,h,3,b,2,four +d,2,a,3,a,1,four +d,2,a,3,b,1,four +d,2,b,4,a,2,four +d,2,b,4,b,2,four +d,2,b,5,a,2,four +d,2,b,5,b,2,four +d,2,c,2,a,1,four +d,2,c,3,a,1,four +d,2,c,3,a,2,four +d,2,c,3,b,1,four +d,2,c,3,b,2,four +d,2,d,3,a,1,four +d,2,d,3,a,2,four +d,2,d,3,b,1,four +d,2,d,4,a,1,four +d,2,d,4,b,1,four +d,2,d,4,b,3,four +d,2,d,5,a,1,four +d,2,d,5,b,1,four +d,2,d,6,a,1,four +d,2,d,6,b,1,four +d,2,d,7,a,1,four +d,2,d,7,b,1,four +d,2,d,8,a,1,four +d,2,d,8,b,1,four +d,2,e,1,a,1,four +d,2,e,1,b,1,four +d,2,e,2,a,1,four +d,2,e,2,b,1,four +d,2,e,2,f,1,four +d,2,e,2,h,1,four +d,2,e,3,a,1,four +d,2,e,3,a,2,four +d,2,e,3,b,1,four +d,2,e,4,a,1,four +d,2,e,4,b,1,four +d,2,e,4,b,3,four +d,2,e,5,a,1,four +d,2,e,5,b,1,four +d,2,e,6,a,1,four +d,2,e,6,b,1,four +d,2,e,7,a,1,four +d,2,e,7,b,1,four +d,2,e,8,a,1,four +d,2,e,8,b,1,four +d,2,f,1,a,1,four +d,2,f,1,b,1,four +d,2,f,2,a,1,four +d,2,f,2,b,1,four +d,2,f,2,h,1,four +d,2,f,3,a,1,four +d,2,f,3,a,2,four +d,2,f,3,b,1,four +d,2,f,4,a,1,four +d,2,f,4,b,1,four +d,2,f,4,b,3,four +d,2,f,5,a,1,four +d,2,f,5,b,1,four +d,2,f,6,a,1,four +d,2,f,6,b,1,four +d,2,f,7,a,1,four +d,2,f,7,b,1,four +d,2,f,8,a,1,four +d,2,f,8,b,1,four +d,2,g,1,a,1,four +d,2,g,1,b,1,four +d,2,g,2,a,1,four +d,2,g,2,b,1,four +d,2,g,3,a,1,four +d,2,g,3,a,2,four +d,2,g,3,b,1,four +d,2,g,4,a,1,four +d,2,g,4,b,1,four +d,2,g,4,b,3,four +d,2,g,5,a,1,four +d,2,g,5,b,1,four +d,2,g,6,a,1,four +d,2,g,6,b,1,four +d,2,g,7,a,1,four +d,2,g,7,b,1,four +d,2,g,8,a,1,four +d,2,g,8,b,1,four +d,2,h,1,a,1,four +d,2,h,1,b,1,four +d,2,h,2,a,1,four +d,2,h,2,b,1,four +d,2,h,3,a,1,four +d,2,h,3,a,2,four +d,2,h,3,b,1,four +d,2,h,4,a,1,four +d,2,h,4,b,1,four +d,2,h,4,b,3,four +d,2,h,5,a,1,four +d,2,h,5,b,1,four +d,2,h,6,a,1,four +d,2,h,6,b,1,four +d,2,h,7,a,1,four +d,2,h,7,b,1,four +d,2,h,8,a,1,four +d,2,h,8,b,1,four +d,3,a,2,c,1,four +d,3,a,2,e,1,four +d,3,a,2,g,1,four +d,3,b,2,e,1,four +d,3,b,2,g,1,four +d,3,b,4,a,2,four +d,3,b,4,b,2,four +d,3,b,5,a,2,four +d,3,b,5,b,2,four +d,3,b,6,a,2,four +d,3,b,6,b,2,four +d,3,b,7,a,2,four +d,3,b,7,b,2,four +d,3,b,8,a,2,four +d,3,b,8,b,2,four +d,3,c,2,a,1,four +d,3,c,2,c,1,four +d,3,c,2,e,1,four +d,3,c,2,g,1,four +d,3,c,3,b,2,four +d,3,d,2,a,1,four +d,3,d,2,b,1,four +d,3,d,2,c,1,four +d,3,d,2,e,1,four +d,3,d,2,g,1,four +d,3,e,2,b,1,four +d,3,e,2,d,1,four +d,3,e,3,a,1,four +d,3,e,3,b,1,four +d,3,e,3,c,1,four +d,3,e,3,d,1,four +d,3,f,2,b,1,four +d,3,f,2,d,1,four +d,3,f,2,h,1,four +d,3,f,3,a,1,four +d,3,f,3,b,1,four +d,3,f,3,c,1,four +d,3,f,3,d,1,four +d,3,g,2,b,1,four +d,3,g,3,a,1,four +d,3,g,3,b,1,four +d,3,g,3,c,1,four +d,3,g,3,d,1,four +d,3,h,2,b,1,four +d,3,h,3,a,1,four +d,3,h,3,b,1,four +d,3,h,3,c,1,four +d,3,h,3,d,1,four +d,4,a,2,g,1,four +d,4,b,2,g,1,four +d,4,c,2,a,1,four +d,4,c,2,g,1,four +d,4,d,2,a,1,four +d,4,d,2,b,1,four +d,4,d,2,g,1,four +d,4,e,2,b,1,four +d,4,f,2,b,1,four +d,4,f,2,h,1,four +d,4,g,2,b,1,four +d,4,h,2,b,1,four +c,1,a,2,e,1,five +c,1,a,2,g,1,five +c,1,b,2,e,1,five +c,1,b,2,g,1,five +c,1,b,5,a,1,five +c,1,c,2,e,1,five +c,1,c,2,g,1,five +c,1,d,2,e,1,five +c,1,d,2,g,1,five +c,1,d,4,a,2,five +c,1,d,4,a,3,five +c,1,e,2,g,1,five +c,1,e,4,a,2,five +c,1,e,4,a,3,five +c,1,f,4,a,2,five +c,1,f,4,a,3,five +c,1,g,4,a,2,five +c,1,g,4,a,3,five +c,1,h,4,a,2,five +c,1,h,4,a,3,five +c,2,d,2,e,1,five +c,2,d,2,f,1,five +c,2,d,2,g,1,five +c,2,d,2,h,1,five +c,2,e,2,g,1,five +c,3,a,2,d,1,five +c,3,a,2,f,1,five +c,3,a,2,h,1,five +c,3,b,2,d,1,five +c,3,b,2,f,1,five +c,3,b,2,h,1,five +c,3,c,2,d,1,five +c,3,c,2,f,1,five +c,3,c,2,h,1,five +c,3,d,2,d,1,five +c,3,d,2,f,1,five +c,3,d,2,h,1,five +c,3,e,2,g,1,five +c,3,f,2,c,1,five +d,1,a,2,g,1,five +d,1,a,3,a,1,five +d,1,a,3,b,1,five +d,1,a,3,f,2,five +d,1,a,3,h,1,five +d,1,a,3,h,2,five +d,1,b,2,g,1,five +d,1,b,3,f,2,five +d,1,b,3,h,1,five +d,1,b,3,h,2,five +d,1,b,5,a,1,five +d,1,b,5,b,1,five +d,1,c,2,b,1,five +d,1,c,2,g,1,five +d,1,c,3,a,1,five +d,1,c,3,a,2,five +d,1,c,3,b,1,five +d,1,c,3,f,2,five +d,1,c,3,h,1,five +d,1,c,3,h,2,five +d,1,d,2,g,1,five +d,1,d,3,f,2,five +d,1,d,3,h,1,five +d,1,d,3,h,2,five +d,1,d,4,a,1,five +d,1,d,4,a,2,five +d,1,d,4,a,3,five +d,1,d,4,b,1,five +d,1,d,5,a,1,five +d,1,d,5,b,1,five +d,1,d,6,a,1,five +d,1,d,6,b,1,five +d,1,d,7,a,1,five +d,1,d,7,b,1,five +d,1,d,8,a,1,five +d,1,d,8,b,1,five +d,1,e,1,a,1,five +d,1,e,1,b,1,five +d,1,e,2,g,1,five +d,1,e,3,h,1,five +d,1,e,3,h,2,five +d,1,e,4,a,1,five +d,1,e,4,a,2,five +d,1,e,4,a,3,five +d,1,e,4,b,1,five +d,1,e,5,a,1,five +d,1,e,5,b,1,five +d,1,e,6,a,1,five +d,1,e,6,b,1,five +d,1,e,7,a,1,five +d,1,e,7,b,1,five +d,1,e,8,a,1,five +d,1,e,8,b,1,five +d,1,f,1,a,1,five +d,1,f,1,b,1,five +d,1,f,3,f,1,five +d,1,f,3,g,1,five +d,1,f,3,h,1,five +d,1,f,3,h,2,five +d,1,f,4,a,1,five +d,1,f,4,a,2,five +d,1,f,4,a,3,five +d,1,f,4,b,1,five +d,1,f,5,a,1,five +d,1,f,5,b,1,five +d,1,f,6,a,1,five +d,1,f,6,b,1,five +d,1,f,7,a,1,five +d,1,f,7,b,1,five +d,1,f,8,a,1,five +d,1,f,8,b,1,five +d,1,g,1,a,1,five +d,1,g,1,b,1,five +d,1,g,4,a,1,five +d,1,g,4,a,2,five +d,1,g,4,a,3,five +d,1,g,4,b,1,five +d,1,g,4,h,1,five +d,1,g,5,a,1,five +d,1,g,5,b,1,five +d,1,g,5,h,1,five +d,1,g,6,a,1,five +d,1,g,6,b,1,five +d,1,g,7,a,1,five +d,1,g,7,b,1,five +d,1,g,8,a,1,five +d,1,g,8,b,1,five +d,1,h,1,a,1,five +d,1,h,1,b,1,five +d,1,h,4,a,1,five +d,1,h,4,a,2,five +d,1,h,4,a,3,five +d,1,h,4,b,1,five +d,1,h,5,a,1,five +d,1,h,5,b,1,five +d,1,h,6,a,1,five +d,1,h,6,b,1,five +d,1,h,7,a,1,five +d,1,h,7,b,1,five +d,1,h,8,a,1,five +d,1,h,8,b,1,five +d,2,a,3,f,2,five +d,2,a,3,h,1,five +d,2,a,3,h,2,five +d,2,a,4,a,1,five +d,2,a,4,a,2,five +d,2,a,4,b,1,five +d,2,a,4,b,2,five +d,2,a,5,a,1,five +d,2,a,5,b,1,five +d,2,b,3,f,2,five +d,2,b,3,h,1,five +d,2,b,3,h,2,five +d,2,c,1,a,1,five +d,2,c,1,b,1,five +d,2,c,3,f,2,five +d,2,c,3,h,1,five +d,2,c,3,h,2,five +d,2,c,4,a,1,five +d,2,c,4,a,2,five +d,2,c,4,a,3,five +d,2,c,4,b,1,five +d,2,c,4,b,2,five +d,2,c,5,a,1,five +d,2,c,5,b,1,five +d,2,c,6,a,1,five +d,2,c,6,b,1,five +d,2,c,7,a,1,five +d,2,c,7,b,1,five +d,2,c,8,a,1,five +d,2,c,8,b,1,five +d,2,d,3,f,2,five +d,2,d,3,h,1,five +d,2,d,3,h,2,five +d,2,d,4,a,2,five +d,2,d,4,a,3,five +d,2,d,4,b,2,five +d,2,d,5,a,2,five +d,2,d,5,b,2,five +d,2,d,6,a,2,five +d,2,d,6,b,2,five +d,2,d,7,a,2,five +d,2,d,7,b,2,five +d,2,d,8,a,2,five +d,2,d,8,b,2,five +d,2,e,1,a,2,five +d,2,e,1,b,2,five +d,2,e,2,a,2,five +d,2,e,2,b,2,five +d,2,e,2,g,1,five +d,2,e,3,f,2,five +d,2,e,3,h,1,five +d,2,e,3,h,2,five +d,2,e,4,a,2,five +d,2,e,4,a,3,five +d,2,e,4,b,2,five +d,2,e,5,a,2,five +d,2,e,5,b,2,five +d,2,e,6,a,2,five +d,2,e,6,b,2,five +d,2,e,7,a,2,five +d,2,e,7,b,2,five +d,2,e,8,a,2,five +d,2,e,8,b,2,five +d,2,f,1,a,2,five +d,2,f,1,b,2,five +d,2,f,2,a,2,five +d,2,f,2,b,2,five +d,2,f,3,f,1,five +d,2,f,3,g,1,five +d,2,f,3,h,1,five +d,2,f,3,h,2,five +d,2,f,4,a,2,five +d,2,f,4,a,3,five +d,2,f,4,b,2,five +d,2,f,5,a,2,five +d,2,f,5,b,2,five +d,2,f,6,a,2,five +d,2,f,6,b,2,five +d,2,f,7,a,2,five +d,2,f,7,b,2,five +d,2,f,8,a,2,five +d,2,f,8,b,2,five +d,2,g,1,a,2,five +d,2,g,1,b,2,five +d,2,g,2,a,2,five +d,2,g,2,b,2,five +d,2,g,4,a,2,five +d,2,g,4,a,3,five +d,2,g,4,b,2,five +d,2,g,4,h,1,five +d,2,g,5,a,2,five +d,2,g,5,b,2,five +d,2,g,5,h,1,five +d,2,g,6,a,2,five +d,2,g,6,b,2,five +d,2,g,6,h,1,five +d,2,g,7,a,2,five +d,2,g,7,b,2,five +d,2,g,7,h,1,five +d,2,g,8,a,2,five +d,2,g,8,b,2,five +d,2,g,8,h,1,five +d,2,h,1,a,2,five +d,2,h,1,b,2,five +d,2,h,2,a,2,five +d,2,h,2,b,2,five +d,2,h,4,a,2,five +d,2,h,4,a,3,five +d,2,h,4,b,2,five +d,2,h,5,a,2,five +d,2,h,5,b,2,five +d,2,h,6,a,2,five +d,2,h,6,b,2,five +d,2,h,7,a,2,five +d,2,h,7,b,2,five +d,2,h,8,a,2,five +d,2,h,8,b,2,five +d,3,a,2,d,1,five +d,3,a,2,f,1,five +d,3,a,2,h,1,five +d,3,a,3,a,1,five +d,3,a,3,b,1,five +d,3,a,3,c,1,five +d,3,a,3,d,1,five +d,3,a,3,h,1,five +d,3,a,4,a,1,five +d,3,a,4,b,1,five +d,3,a,4,c,1,five +d,3,a,5,a,1,five +d,3,a,5,b,1,five +d,3,a,5,c,1,five +d,3,a,6,a,1,five +d,3,a,6,b,1,five +d,3,a,6,c,1,five +d,3,a,7,a,1,five +d,3,a,7,b,1,five +d,3,a,7,c,1,five +d,3,a,8,a,1,five +d,3,a,8,b,1,five +d,3,a,8,c,1,five +d,3,b,1,a,4,five +d,3,b,1,a,6,five +d,3,b,1,a,8,five +d,3,b,2,a,6,five +d,3,b,2,a,8,five +d,3,b,2,d,1,five +d,3,b,2,f,1,five +d,3,b,2,h,1,five +d,3,b,3,a,6,five +d,3,b,3,a,8,five +d,3,b,3,d,1,five +d,3,b,3,h,1,five +d,3,b,4,a,6,five +d,3,b,4,a,8,five +d,3,b,5,a,3,five +d,3,b,5,b,3,five +d,3,b,6,a,3,five +d,3,b,6,b,3,five +d,3,c,1,a,1,five +d,3,c,2,d,1,five +d,3,c,2,f,1,five +d,3,c,2,h,1,five +d,3,c,3,a,1,five +d,3,c,3,a,2,five +d,3,c,3,b,1,five +d,3,c,3,c,1,five +d,3,c,3,d,1,five +d,3,c,3,h,1,five +d,3,c,4,a,1,five +d,3,c,4,b,1,five +d,3,c,4,b,3,five +d,3,c,4,c,1,five +d,3,c,5,a,1,five +d,3,c,5,b,1,five +d,3,c,5,c,1,five +d,3,c,6,a,1,five +d,3,c,6,b,1,five +d,3,c,6,c,1,five +d,3,c,7,a,1,five +d,3,c,7,b,1,five +d,3,c,7,c,1,five +d,3,c,8,a,1,five +d,3,c,8,b,1,five +d,3,c,8,c,1,five +d,3,d,2,d,1,five +d,3,d,2,f,1,five +d,3,d,2,h,1,five +d,3,d,4,a,1,five +d,3,d,4,a,2,five +d,3,d,4,a,3,five +d,3,d,4,b,1,five +d,3,d,4,b,2,five +d,3,d,4,b,3,five +d,3,d,4,c,1,five +d,3,d,5,a,1,five +d,3,d,5,b,1,five +d,3,d,5,c,1,five +d,3,d,6,a,1,five +d,3,d,6,b,1,five +d,3,d,6,c,1,five +d,3,d,7,a,1,five +d,3,d,7,b,1,five +d,3,d,7,c,1,five +d,3,d,8,a,1,five +d,3,d,8,b,1,five +d,3,d,8,c,1,five +d,3,e,2,e,1,five +d,3,e,2,f,1,five +d,3,e,2,g,1,five +d,3,e,2,h,1,five +d,3,e,3,h,1,five +d,3,e,3,h,2,five +d,3,e,4,a,1,five +d,3,e,4,a,2,five +d,3,e,4,a,3,five +d,3,e,4,b,1,five +d,3,e,4,b,2,five +d,3,e,4,b,3,five +d,3,e,4,c,1,five +d,3,e,5,a,1,five +d,3,e,5,b,1,five +d,3,e,5,c,1,five +d,3,e,6,a,1,five +d,3,e,6,b,1,five +d,3,e,6,c,1,five +d,3,e,7,a,1,five +d,3,e,7,b,1,five +d,3,e,7,c,1,five +d,3,e,8,a,1,five +d,3,e,8,b,1,five +d,3,e,8,c,1,five +d,3,f,3,f,1,five +d,3,f,3,g,1,five +d,3,f,3,h,1,five +d,3,f,3,h,2,five +d,3,f,4,a,1,five +d,3,f,4,a,2,five +d,3,f,4,a,3,five +d,3,f,4,b,1,five +d,3,f,4,b,2,five +d,3,f,4,b,3,five +d,3,f,4,c,1,five +d,3,f,5,a,1,five +d,3,f,5,b,1,five +d,3,f,5,c,1,five +d,3,f,6,a,1,five +d,3,f,6,b,1,five +d,3,f,6,c,1,five +d,3,f,7,a,1,five +d,3,f,7,b,1,five +d,3,f,7,c,1,five +d,3,f,8,a,1,five +d,3,f,8,b,1,five +d,3,f,8,c,1,five +d,3,g,1,h,8,five +d,3,g,2,d,1,five +d,3,g,2,h,8,five +d,3,g,3,h,8,five +d,3,g,4,a,1,five +d,3,g,4,a,2,five +d,3,g,4,a,3,five +d,3,g,4,b,1,five +d,3,g,4,b,2,five +d,3,g,4,b,3,five +d,3,g,4,c,1,five +d,3,g,4,h,1,five +d,3,g,4,h,8,five +d,3,g,5,a,1,five +d,3,g,5,b,1,five +d,3,g,5,c,1,five +d,3,g,5,h,1,five +d,3,g,6,a,1,five +d,3,g,6,b,1,five +d,3,g,6,c,1,five +d,3,g,6,h,1,five +d,3,g,7,a,1,five +d,3,g,7,b,1,five +d,3,g,7,c,1,five +d,3,g,7,h,1,five +d,3,g,8,a,1,five +d,3,g,8,b,1,five +d,3,g,8,c,1,five +d,3,g,8,h,1,five +d,3,h,2,d,1,five +d,3,h,2,e,1,five +d,3,h,2,f,1,five +d,3,h,4,a,1,five +d,3,h,4,a,2,five +d,3,h,4,a,3,five +d,3,h,4,b,1,five +d,3,h,4,b,2,five +d,3,h,4,b,3,five +d,3,h,4,c,1,five +d,3,h,5,a,1,five +d,3,h,5,b,1,five +d,3,h,5,c,1,five +d,3,h,6,a,1,five +d,3,h,6,b,1,five +d,3,h,6,c,1,five +d,3,h,7,a,1,five +d,3,h,7,b,1,five +d,3,h,7,c,1,five +d,3,h,8,a,1,five +d,3,h,8,b,1,five +d,3,h,8,c,1,five +d,4,a,2,d,1,five +d,4,a,2,f,1,five +d,4,a,2,h,1,five +d,4,b,2,f,1,five +d,4,b,2,h,1,five +d,4,c,2,f,1,five +d,4,c,2,h,1,five +d,4,d,2,f,1,five +d,4,d,2,h,1,five +d,4,e,2,c,1,five +d,4,e,2,g,1,five +d,4,e,2,h,1,five +d,4,f,2,c,1,five +d,4,g,1,h,8,five +d,4,g,2,c,1,five +d,4,g,2,h,8,five +d,4,g,3,h,8,five +d,4,g,4,h,1,five +d,4,g,4,h,8,five +d,4,g,5,h,1,five +d,4,g,5,h,8,five +d,4,g,6,h,1,five +d,4,g,7,h,1,five +d,4,g,8,h,1,five +d,4,h,2,c,1,five +d,4,h,2,e,1,five +b,1,a,2,d,1,six +b,1,a,2,f,1,six +b,1,a,2,h,1,six +b,1,b,2,d,1,six +b,1,b,2,f,1,six +b,1,b,2,h,1,six +b,1,c,2,d,1,six +b,1,c,2,f,1,six +b,1,c,2,h,1,six +b,1,d,2,f,1,six +b,1,d,2,g,1,six +b,1,d,2,h,1,six +b,1,e,2,h,1,six +b,2,c,2,d,1,six +b,2,c,2,e,1,six +b,2,c,2,f,1,six +b,2,c,2,g,1,six +b,2,c,2,h,1,six +b,2,d,2,f,1,six +b,2,d,2,g,1,six +b,2,d,2,h,1,six +b,2,e,2,h,1,six +c,1,a,2,f,1,six +c,1,a,2,h,1,six +c,1,b,2,f,1,six +c,1,b,2,h,1,six +c,1,b,4,a,2,six +c,1,c,2,f,1,six +c,1,c,2,h,1,six +c,1,d,2,f,1,six +c,1,d,2,h,1,six +c,1,e,2,h,1,six +c,1,f,2,h,1,six +c,1,h,2,f,1,six +c,2,b,1,a,3,six +c,2,b,1,a,5,six +c,2,b,1,a,7,six +c,2,b,2,a,3,six +c,2,b,2,a,5,six +c,2,b,2,a,7,six +c,2,b,3,a,3,six +c,2,b,3,a,5,six +c,2,b,3,a,7,six +c,2,b,4,a,6,six +c,2,b,4,a,7,six +c,2,b,4,a,8,six +c,2,b,5,a,8,six +c,2,b,6,a,2,six +c,2,d,3,e,2,six +c,2,d,3,g,2,six +c,2,e,2,h,1,six +c,2,f,2,h,1,six +c,2,g,2,e,1,six +c,2,h,2,e,1,six +c,2,h,2,f,1,six +c,3,a,2,c,1,six +c,3,a,2,e,1,six +c,3,a,2,g,1,six +c,3,a,3,c,1,six +c,3,b,2,c,1,six +c,3,b,2,e,1,six +c,3,b,2,g,1,six +c,3,b,3,c,1,six +c,3,c,2,c,1,six +c,3,c,2,e,1,six +c,3,c,2,g,1,six +c,3,d,2,e,1,six +c,3,d,2,g,1,six +c,3,e,2,h,1,six +c,3,f,2,h,1,six +c,3,g,2,c,1,six +c,3,g,2,e,1,six +c,3,h,2,c,1,six +c,3,h,2,d,1,six +c,3,h,2,e,1,six +c,3,h,2,f,1,six +d,1,a,1,f,1,six +d,1,a,1,g,1,six +d,1,a,1,h,1,six +d,1,a,3,f,1,six +d,1,a,3,g,1,six +d,1,a,3,g,2,six +d,1,a,4,a,1,six +d,1,a,4,b,1,six +d,1,a,4,f,1,six +d,1,a,4,g,1,six +d,1,a,4,h,1,six +d,1,a,4,h,2,six +d,1,a,4,h,3,six +d,1,a,5,f,1,six +d,1,a,5,g,1,six +d,1,a,5,h,1,six +d,1,a,6,f,1,six +d,1,a,6,g,1,six +d,1,a,6,h,1,six +d,1,a,7,f,1,six +d,1,a,7,g,1,six +d,1,a,7,h,1,six +d,1,a,8,f,1,six +d,1,a,8,g,1,six +d,1,a,8,h,1,six +d,1,b,1,f,1,six +d,1,b,1,g,1,six +d,1,b,1,h,1,six +d,1,b,3,f,1,six +d,1,b,3,g,1,six +d,1,b,3,g,2,six +d,1,b,4,a,2,six +d,1,b,4,f,1,six +d,1,b,4,g,1,six +d,1,b,4,h,1,six +d,1,b,4,h,2,six +d,1,b,4,h,3,six +d,1,b,5,f,1,six +d,1,b,5,g,1,six +d,1,b,5,h,1,six +d,1,b,6,f,1,six +d,1,b,6,g,1,six +d,1,b,6,h,1,six +d,1,b,7,f,1,six +d,1,b,7,g,1,six +d,1,b,7,h,1,six +d,1,b,8,f,1,six +d,1,b,8,g,1,six +d,1,b,8,h,1,six +d,1,c,1,f,1,six +d,1,c,1,g,1,six +d,1,c,1,h,1,six +d,1,c,3,f,1,six +d,1,c,3,g,1,six +d,1,c,3,g,2,six +d,1,c,4,a,1,six +d,1,c,4,b,1,six +d,1,c,4,f,1,six +d,1,c,4,g,1,six +d,1,c,4,h,1,six +d,1,c,4,h,2,six +d,1,c,4,h,3,six +d,1,c,5,f,1,six +d,1,c,5,g,1,six +d,1,c,5,h,1,six +d,1,c,6,f,1,six +d,1,c,6,g,1,six +d,1,c,6,h,1,six +d,1,c,7,f,1,six +d,1,c,7,g,1,six +d,1,c,7,h,1,six +d,1,c,8,f,1,six +d,1,c,8,g,1,six +d,1,c,8,h,1,six +d,1,d,3,f,1,six +d,1,d,3,g,1,six +d,1,d,3,g,2,six +d,1,d,4,f,1,six +d,1,d,4,g,1,six +d,1,d,4,h,1,six +d,1,d,4,h,2,six +d,1,d,4,h,3,six +d,1,d,5,f,1,six +d,1,d,5,g,1,six +d,1,d,5,h,1,six +d,1,d,6,f,1,six +d,1,d,6,g,1,six +d,1,d,6,h,1,six +d,1,d,7,f,1,six +d,1,d,7,g,1,six +d,1,d,7,h,1,six +d,1,d,8,f,1,six +d,1,d,8,g,1,six +d,1,d,8,h,1,six +d,1,e,3,f,1,six +d,1,e,3,g,1,six +d,1,e,3,g,2,six +d,1,e,4,h,1,six +d,1,e,4,h,2,six +d,1,e,4,h,3,six +d,1,e,5,h,1,six +d,1,e,6,h,1,six +d,1,e,7,h,1,six +d,1,e,8,h,1,six +d,1,f,4,f,1,six +d,1,f,4,g,1,six +d,1,f,4,h,1,six +d,1,g,3,f,1,six +d,1,g,3,g,1,six +d,1,g,3,h,1,six +d,1,h,2,f,1,six +d,1,h,4,h,1,six +d,2,a,1,f,1,six +d,2,a,1,g,1,six +d,2,a,1,h,1,six +d,2,a,2,f,1,six +d,2,a,2,g,1,six +d,2,a,2,h,1,six +d,2,a,3,f,1,six +d,2,a,3,g,1,six +d,2,a,3,g,2,six +d,2,a,4,f,1,six +d,2,a,4,f,3,six +d,2,a,4,g,1,six +d,2,a,4,h,1,six +d,2,a,4,h,2,six +d,2,a,4,h,3,six +d,2,a,5,f,1,six +d,2,a,5,g,1,six +d,2,a,5,h,1,six +d,2,a,6,a,1,six +d,2,a,6,b,1,six +d,2,a,6,f,1,six +d,2,a,6,g,1,six +d,2,a,6,h,1,six +d,2,a,7,a,1,six +d,2,a,7,b,1,six +d,2,a,7,f,1,six +d,2,a,7,g,1,six +d,2,a,7,h,1,six +d,2,a,8,a,1,six +d,2,a,8,b,1,six +d,2,a,8,f,1,six +d,2,a,8,g,1,six +d,2,a,8,h,1,six +d,2,b,1,a,3,six +d,2,b,1,a,5,six +d,2,b,1,a,7,six +d,2,b,1,f,1,six +d,2,b,1,g,1,six +d,2,b,1,h,1,six +d,2,b,2,a,5,six +d,2,b,2,a,7,six +d,2,b,2,f,1,six +d,2,b,2,g,1,six +d,2,b,2,h,1,six +d,2,b,3,a,5,six +d,2,b,3,a,7,six +d,2,b,3,f,1,six +d,2,b,3,g,1,six +d,2,b,3,g,2,six +d,2,b,4,a,7,six +d,2,b,4,f,1,six +d,2,b,4,f,3,six +d,2,b,4,g,1,six +d,2,b,4,h,1,six +d,2,b,4,h,2,six +d,2,b,4,h,3,six +d,2,b,5,a,8,six +d,2,b,5,f,1,six +d,2,b,5,g,1,six +d,2,b,5,h,1,six +d,2,b,6,a,2,six +d,2,b,6,b,2,six +d,2,b,6,f,1,six +d,2,b,6,g,1,six +d,2,b,6,h,1,six +d,2,b,7,f,1,six +d,2,b,7,g,1,six +d,2,b,7,h,1,six +d,2,b,8,f,1,six +d,2,b,8,g,1,six +d,2,b,8,h,1,six +d,2,c,1,f,1,six +d,2,c,1,g,1,six +d,2,c,1,h,1,six +d,2,c,2,f,1,six +d,2,c,2,g,1,six +d,2,c,2,h,1,six +d,2,c,3,f,1,six +d,2,c,3,g,1,six +d,2,c,3,g,2,six +d,2,c,4,f,1,six +d,2,c,4,f,3,six +d,2,c,4,g,1,six +d,2,c,4,h,1,six +d,2,c,4,h,2,six +d,2,c,4,h,3,six +d,2,c,5,f,1,six +d,2,c,5,g,1,six +d,2,c,5,h,1,six +d,2,c,6,f,1,six +d,2,c,6,g,1,six +d,2,c,6,h,1,six +d,2,c,7,f,1,six +d,2,c,7,g,1,six +d,2,c,7,h,1,six +d,2,c,8,f,1,six +d,2,c,8,g,1,six +d,2,c,8,h,1,six +d,2,d,1,a,1,six +d,2,d,1,b,1,six +d,2,d,1,h,1,six +d,2,d,3,f,1,six +d,2,d,3,g,1,six +d,2,d,3,g,2,six +d,2,d,4,f,1,six +d,2,d,4,f,3,six +d,2,d,4,g,1,six +d,2,d,4,h,1,six +d,2,d,4,h,2,six +d,2,d,4,h,3,six +d,2,d,5,f,1,six +d,2,d,5,g,1,six +d,2,d,5,h,1,six +d,2,d,6,f,1,six +d,2,d,6,g,1,six +d,2,d,6,h,1,six +d,2,d,7,f,1,six +d,2,d,7,g,1,six +d,2,d,7,h,1,six +d,2,d,8,f,1,six +d,2,d,8,g,1,six +d,2,d,8,h,1,six +d,2,e,3,f,1,six +d,2,e,3,g,1,six +d,2,e,3,g,2,six +d,2,e,4,f,1,six +d,2,e,4,g,1,six +d,2,e,4,h,1,six +d,2,e,4,h,2,six +d,2,e,4,h,3,six +d,2,e,5,f,1,six +d,2,e,5,g,1,six +d,2,e,5,h,1,six +d,2,e,6,f,1,six +d,2,e,6,g,1,six +d,2,e,6,h,1,six +d,2,e,7,f,1,six +d,2,e,7,g,1,six +d,2,e,7,h,1,six +d,2,e,8,f,1,six +d,2,e,8,g,1,six +d,2,e,8,h,1,six +d,2,f,4,f,1,six +d,2,f,4,f,2,six +d,2,f,4,g,1,six +d,2,f,4,g,2,six +d,2,f,4,h,1,six +d,2,f,4,h,2,six +d,2,f,4,h,3,six +d,2,g,1,h,5,six +d,2,g,1,h,7,six +d,2,g,2,h,7,six +d,2,g,3,f,1,six +d,2,g,3,g,1,six +d,2,g,3,h,1,six +d,2,g,3,h,7,six +d,2,g,4,h,7,six +d,2,g,5,h,2,six +d,2,g,6,h,2,six +d,2,h,2,f,1,six +d,2,h,4,h,1,six +d,3,a,1,h,1,six +d,3,a,3,e,1,six +d,3,a,3,f,1,six +d,3,a,3,g,1,six +d,3,a,4,a,2,six +d,3,a,4,b,2,six +d,3,a,4,h,1,six +d,3,a,4,h,2,six +d,3,a,4,h,3,six +d,3,a,5,a,2,six +d,3,a,5,b,2,six +d,3,a,5,h,1,six +d,3,a,6,a,2,six +d,3,a,6,b,2,six +d,3,a,6,h,1,six +d,3,a,7,h,1,six +d,3,a,8,h,1,six +d,3,b,1,a,3,six +d,3,b,1,a,5,six +d,3,b,1,a,7,six +d,3,b,1,b,3,six +d,3,b,1,h,1,six +d,3,b,2,a,4,six +d,3,b,2,a,5,six +d,3,b,2,a,7,six +d,3,b,3,a,5,six +d,3,b,3,a,7,six +d,3,b,3,e,1,six +d,3,b,3,f,1,six +d,3,b,3,g,1,six +d,3,b,4,a,7,six +d,3,b,4,h,1,six +d,3,b,4,h,2,six +d,3,b,4,h,3,six +d,3,b,5,a,7,six +d,3,b,5,a,8,six +d,3,b,5,h,1,six +d,3,b,6,h,1,six +d,3,b,7,a,3,six +d,3,b,7,a,5,six +d,3,b,7,b,3,six +d,3,b,7,h,1,six +d,3,b,8,a,3,six +d,3,b,8,a,4,six +d,3,b,8,a,5,six +d,3,b,8,b,3,six +d,3,b,8,h,1,six +d,3,c,1,a,2,six +d,3,c,1,h,1,six +d,3,c,2,a,2,six +d,3,c,2,b,2,six +d,3,c,3,e,1,six +d,3,c,3,f,1,six +d,3,c,3,g,1,six +d,3,c,4,a,2,six +d,3,c,4,a,3,six +d,3,c,4,b,2,six +d,3,c,4,h,1,six +d,3,c,4,h,2,six +d,3,c,4,h,3,six +d,3,c,5,a,2,six +d,3,c,5,b,2,six +d,3,c,5,h,1,six +d,3,c,6,a,2,six +d,3,c,6,b,2,six +d,3,c,6,h,1,six +d,3,c,7,a,2,six +d,3,c,7,b,2,six +d,3,c,7,h,1,six +d,3,c,8,a,2,six +d,3,c,8,b,2,six +d,3,c,8,h,1,six +d,3,d,1,h,1,six +d,3,d,4,h,1,six +d,3,d,4,h,2,six +d,3,d,4,h,3,six +d,3,d,5,a,2,six +d,3,d,5,b,2,six +d,3,d,5,b,4,six +d,3,d,5,h,1,six +d,3,d,6,a,2,six +d,3,d,6,b,2,six +d,3,d,6,h,1,six +d,3,d,7,a,2,six +d,3,d,7,b,2,six +d,3,d,7,h,1,six +d,3,d,8,a,2,six +d,3,d,8,b,2,six +d,3,d,8,h,1,six +d,3,e,1,a,1,six +d,3,e,1,a,2,six +d,3,e,1,b,1,six +d,3,e,1,b,2,six +d,3,e,1,c,1,six +d,3,e,2,a,2,six +d,3,e,2,b,2,six +d,3,e,3,a,2,six +d,3,e,3,b,2,six +d,3,e,3,e,1,six +d,3,e,3,f,1,six +d,3,e,3,f,2,six +d,3,e,3,g,1,six +d,3,e,3,g,2,six +d,3,e,4,h,1,six +d,3,e,4,h,2,six +d,3,e,4,h,3,six +d,3,e,5,a,2,six +d,3,e,5,b,2,six +d,3,e,5,b,4,six +d,3,e,5,h,1,six +d,3,e,6,a,2,six +d,3,e,6,b,2,six +d,3,e,6,h,1,six +d,3,e,7,a,2,six +d,3,e,7,b,2,six +d,3,e,7,h,1,six +d,3,e,8,a,2,six +d,3,e,8,b,2,six +d,3,e,8,h,1,six +d,3,f,1,a,1,six +d,3,f,1,a,2,six +d,3,f,1,b,1,six +d,3,f,1,b,2,six +d,3,f,1,c,1,six +d,3,f,2,a,2,six +d,3,f,2,b,2,six +d,3,f,3,a,2,six +d,3,f,3,b,2,six +d,3,f,4,f,1,six +d,3,f,4,f,2,six +d,3,f,4,g,1,six +d,3,f,4,g,2,six +d,3,f,4,h,1,six +d,3,f,4,h,2,six +d,3,f,4,h,3,six +d,3,f,5,a,2,six +d,3,f,5,b,2,six +d,3,f,5,b,4,six +d,3,f,6,a,2,six +d,3,f,6,b,2,six +d,3,f,7,a,2,six +d,3,f,7,b,2,six +d,3,f,8,a,2,six +d,3,f,8,b,2,six +d,3,g,1,a,1,six +d,3,g,1,a,2,six +d,3,g,1,b,1,six +d,3,g,1,b,2,six +d,3,g,1,c,1,six +d,3,g,1,h,5,six +d,3,g,1,h,7,six +d,3,g,2,a,2,six +d,3,g,2,b,2,six +d,3,g,2,e,1,six +d,3,g,2,h,7,six +d,3,g,3,a,2,six +d,3,g,3,b,2,six +d,3,g,3,h,1,six +d,3,g,3,h,7,six +d,3,g,4,h,7,six +d,3,g,5,a,2,six +d,3,g,5,b,2,six +d,3,g,5,b,4,six +d,3,g,5,h,2,six +d,3,g,5,h,8,six +d,3,g,6,a,2,six +d,3,g,6,b,2,six +d,3,g,6,h,2,six +d,3,g,7,a,2,six +d,3,g,7,b,2,six +d,3,g,7,h,2,six +d,3,g,8,a,2,six +d,3,g,8,b,2,six +d,3,g,8,h,2,six +d,3,g,8,h,4,six +d,3,h,1,a,1,six +d,3,h,1,a,2,six +d,3,h,1,b,1,six +d,3,h,1,b,2,six +d,3,h,1,c,1,six +d,3,h,2,a,2,six +d,3,h,2,b,2,six +d,3,h,3,a,2,six +d,3,h,3,b,2,six +d,3,h,4,h,1,six +d,3,h,5,a,2,six +d,3,h,5,b,2,six +d,3,h,5,b,4,six +d,3,h,6,a,2,six +d,3,h,6,b,2,six +d,3,h,7,a,2,six +d,3,h,7,b,2,six +d,3,h,8,a,2,six +d,3,h,8,b,2,six +d,4,a,2,c,1,six +d,4,a,2,d,2,six +d,4,a,2,e,1,six +d,4,a,4,h,1,six +d,4,a,4,h,2,six +d,4,b,2,d,1,six +d,4,b,2,d,2,six +d,4,b,2,e,1,six +d,4,b,4,h,1,six +d,4,b,4,h,2,six +d,4,c,2,e,1,six +d,4,c,3,a,1,six +d,4,c,3,b,1,six +d,4,c,3,b,2,six +d,4,c,4,h,1,six +d,4,c,4,h,2,six +d,4,d,3,b,2,six +d,4,d,5,b,1,six +d,4,d,6,b,1,six +d,4,d,7,b,1,six +d,4,d,8,b,1,six +d,4,e,4,a,1,six +d,4,e,4,h,1,six +d,4,e,4,h,2,six +d,4,e,4,h,3,six +d,4,f,2,d,1,six +d,4,f,2,d,2,six +d,4,f,3,g,1,six +d,4,f,3,h,1,six +d,4,f,3,h,2,six +d,4,f,4,a,1,six +d,4,g,1,h,5,six +d,4,g,1,h,7,six +d,4,g,2,d,1,six +d,4,g,2,d,2,six +d,4,g,2,e,1,six +d,4,g,2,h,7,six +d,4,g,3,h,7,six +d,4,g,4,a,1,six +d,4,g,4,h,7,six +d,4,g,5,h,2,six +d,4,g,6,h,2,six +d,4,g,7,h,2,six +d,4,g,8,h,2,six +d,4,g,8,h,4,six +d,4,h,2,d,1,six +d,4,h,2,d,2,six +d,4,h,2,f,1,six +d,4,h,4,a,1,six +a,1,a,2,c,1,seven +a,1,a,2,e,1,seven +a,1,a,2,g,1,seven +a,1,b,2,c,1,seven +a,1,b,2,e,1,seven +a,1,b,2,g,1,seven +a,1,c,2,e,1,seven +a,1,c,2,f,1,seven +a,1,c,2,g,1,seven +a,1,c,2,h,1,seven +a,1,d,2,g,1,seven +a,1,d,2,h,1,seven +b,1,a,2,e,1,seven +b,1,a,2,g,1,seven +b,1,b,2,a,3,seven +b,1,b,2,a,4,seven +b,1,b,2,a,5,seven +b,1,b,2,a,6,seven +b,1,b,2,a,7,seven +b,1,b,2,a,8,seven +b,1,b,2,e,1,seven +b,1,b,2,g,1,seven +b,1,b,3,a,5,seven +b,1,b,3,a,6,seven +b,1,b,3,a,7,seven +b,1,b,3,a,8,seven +b,1,b,4,a,7,seven +b,1,b,4,a,8,seven +b,1,c,2,e,1,seven +b,1,c,2,g,1,seven +b,1,d,3,h,2,seven +b,1,e,2,g,1,seven +b,1,f,2,h,1,seven +b,1,g,2,d,1,seven +b,1,g,2,e,1,seven +b,1,h,2,d,1,seven +b,1,h,2,e,1,seven +b,1,h,2,f,1,seven +b,2,d,3,h,2,seven +b,2,e,2,g,1,seven +b,2,f,2,d,1,seven +b,2,f,2,h,1,seven +b,2,g,2,d,1,seven +b,2,g,2,e,1,seven +b,2,h,2,d,1,seven +b,2,h,2,e,1,seven +b,2,h,2,f,1,seven +c,1,a,3,e,2,seven +c,1,a,3,g,1,seven +c,1,a,3,g,2,seven +c,1,a,3,h,1,seven +c,1,a,3,h,2,seven +c,1,b,1,a,1,seven +c,1,b,1,a,2,seven +c,1,b,1,a,4,seven +c,1,b,1,a,6,seven +c,1,b,1,a,8,seven +c,1,b,2,a,2,seven +c,1,b,2,a,4,seven +c,1,b,2,a,6,seven +c,1,b,2,a,8,seven +c,1,b,3,a,5,seven +c,1,b,3,a,6,seven +c,1,b,3,a,7,seven +c,1,b,3,a,8,seven +c,1,b,3,e,2,seven +c,1,b,3,g,1,seven +c,1,b,3,g,2,seven +c,1,b,3,h,1,seven +c,1,b,3,h,2,seven +c,1,b,4,a,7,seven +c,1,b,4,a,8,seven +c,1,b,6,a,1,seven +c,1,b,7,a,1,seven +c,1,b,8,a,1,seven +c,1,c,3,e,2,seven +c,1,c,3,g,1,seven +c,1,c,3,g,2,seven +c,1,c,3,h,1,seven +c,1,c,3,h,2,seven +c,1,d,3,e,1,seven +c,1,d,3,f,1,seven +c,1,d,3,f,2,seven +c,1,d,3,g,1,seven +c,1,d,3,g,2,seven +c,1,d,3,h,1,seven +c,1,d,3,h,2,seven +c,1,e,3,e,1,seven +c,1,e,3,f,1,seven +c,1,e,3,g,1,seven +c,1,e,3,g,2,seven +c,1,e,3,h,1,seven +c,1,e,3,h,2,seven +c,1,f,4,g,1,seven +c,1,f,4,h,1,seven +c,1,g,1,h,6,seven +c,1,g,1,h,8,seven +c,1,g,2,e,1,seven +c,1,g,2,h,8,seven +c,1,g,3,h,8,seven +c,1,g,4,h,8,seven +c,1,g,5,h,1,seven +c,1,g,6,h,1,seven +c,1,h,2,e,1,seven +c,2,a,3,e,1,seven +c,2,a,3,e,2,seven +c,2,a,3,f,1,seven +c,2,a,3,f,2,seven +c,2,a,3,g,1,seven +c,2,a,3,g,2,seven +c,2,a,3,h,1,seven +c,2,a,3,h,2,seven +c,2,b,1,a,2,seven +c,2,b,1,a,4,seven +c,2,b,1,a,6,seven +c,2,b,1,a,8,seven +c,2,b,2,a,2,seven +c,2,b,2,a,4,seven +c,2,b,2,a,6,seven +c,2,b,2,a,8,seven +c,2,b,3,a,4,seven +c,2,b,3,a,6,seven +c,2,b,3,a,8,seven +c,2,b,3,e,1,seven +c,2,b,3,e,2,seven +c,2,b,3,f,1,seven +c,2,b,3,f,2,seven +c,2,b,3,g,1,seven +c,2,b,3,g,2,seven +c,2,b,3,h,1,seven +c,2,b,3,h,2,seven +c,2,b,5,a,7,seven +c,2,b,6,a,4,seven +c,2,b,6,a,8,seven +c,2,b,7,a,2,seven +c,2,b,7,a,4,seven +c,2,b,8,a,2,seven +c,2,b,8,a,3,seven +c,2,b,8,a,4,seven +c,2,b,8,a,5,seven +c,2,b,8,a,6,seven +c,2,c,1,a,2,seven +c,2,c,3,e,1,seven +c,2,c,3,e,2,seven +c,2,c,3,f,1,seven +c,2,c,3,f,2,seven +c,2,c,3,g,1,seven +c,2,c,3,g,2,seven +c,2,c,3,h,1,seven +c,2,c,3,h,2,seven +c,2,c,4,b,8,seven +c,2,d,3,g,1,seven +c,2,d,3,h,1,seven +c,2,d,3,h,2,seven +c,2,d,4,h,1,seven +c,2,d,5,a,3,seven +c,2,d,5,a,4,seven +c,2,e,3,e,1,seven +c,2,e,3,f,1,seven +c,2,e,3,g,1,seven +c,2,e,3,g,2,seven +c,2,e,3,h,1,seven +c,2,e,3,h,2,seven +c,2,e,5,a,3,seven +c,2,e,5,a,4,seven +c,2,f,3,e,1,seven +c,2,f,3,f,1,seven +c,2,f,3,g,1,seven +c,2,f,3,h,1,seven +c,2,f,3,h,2,seven +c,2,f,4,g,1,seven +c,2,f,4,h,1,seven +c,2,f,5,a,3,seven +c,2,f,5,a,4,seven +c,2,g,1,h,6,seven +c,2,g,1,h,8,seven +c,2,g,2,h,8,seven +c,2,g,3,h,8,seven +c,2,g,4,h,8,seven +c,2,g,5,a,3,seven +c,2,g,5,a,4,seven +c,2,g,5,h,1,seven +c,2,g,6,h,1,seven +c,2,g,7,h,1,seven +c,2,g,8,h,1,seven +c,2,g,8,h,3,seven +c,2,h,5,a,3,seven +c,2,h,5,a,4,seven +c,3,a,3,g,1,seven +c,3,a,3,h,1,seven +c,3,b,3,g,1,seven +c,3,b,3,h,1,seven +c,3,d,3,d,1,seven +c,3,d,3,e,1,seven +c,3,d,3,e,2,seven +c,3,d,3,f,1,seven +c,3,d,3,f,2,seven +c,3,d,3,g,1,seven +c,3,d,3,g,2,seven +c,3,d,3,h,1,seven +c,3,d,3,h,2,seven +c,3,e,3,e,1,seven +c,3,e,3,f,1,seven +c,3,e,3,g,1,seven +c,3,e,3,g,2,seven +c,3,e,3,h,1,seven +c,3,e,3,h,2,seven +c,3,f,2,d,1,seven +c,3,f,4,g,1,seven +c,3,f,4,h,1,seven +c,3,g,1,h,6,seven +c,3,g,1,h,8,seven +c,3,g,2,d,1,seven +c,3,g,2,h,8,seven +c,3,g,3,h,8,seven +c,3,g,4,h,8,seven +c,3,g,5,h,1,seven +c,3,g,6,h,1,seven +c,3,g,7,h,1,seven +c,3,g,8,h,1,seven +c,3,g,8,h,3,seven +d,1,a,4,g,2,seven +d,1,a,4,g,3,seven +d,1,b,1,a,4,seven +d,1,b,1,a,6,seven +d,1,b,1,a,8,seven +d,1,b,2,a,4,seven +d,1,b,2,a,6,seven +d,1,b,2,a,8,seven +d,1,b,3,a,6,seven +d,1,b,3,a,8,seven +d,1,b,4,a,7,seven +d,1,b,4,a,8,seven +d,1,b,4,g,2,seven +d,1,b,4,g,3,seven +d,1,b,6,a,1,seven +d,1,b,6,b,1,seven +d,1,b,7,a,1,seven +d,1,b,7,b,1,seven +d,1,b,8,a,1,seven +d,1,b,8,b,1,seven +d,1,c,4,g,2,seven +d,1,c,4,g,3,seven +d,1,d,4,g,2,seven +d,1,d,4,g,3,seven +d,1,e,1,h,1,seven +d,1,e,4,b,2,seven +d,1,e,4,b,3,seven +d,1,f,4,b,2,seven +d,1,f,4,b,3,seven +d,1,g,1,h,4,seven +d,1,g,1,h,6,seven +d,1,g,1,h,8,seven +d,1,g,2,h,6,seven +d,1,g,2,h,8,seven +d,1,g,3,h,6,seven +d,1,g,3,h,8,seven +d,1,g,4,b,2,seven +d,1,g,4,b,3,seven +d,1,g,4,h,2,seven +d,1,g,4,h,8,seven +d,1,g,6,h,1,seven +d,1,h,3,f,1,seven +d,1,h,3,f,2,seven +d,1,h,3,g,1,seven +d,1,h,3,h,1,seven +d,1,h,4,b,2,seven +d,1,h,4,b,3,seven +d,2,a,4,f,2,seven +d,2,a,4,g,2,seven +d,2,a,4,g,3,seven +d,2,b,1,a,4,seven +d,2,b,1,a,6,seven +d,2,b,1,a,8,seven +d,2,b,2,a,4,seven +d,2,b,2,a,6,seven +d,2,b,2,a,8,seven +d,2,b,3,a,6,seven +d,2,b,3,a,8,seven +d,2,b,4,a,6,seven +d,2,b,4,a,8,seven +d,2,b,4,f,2,seven +d,2,b,4,g,2,seven +d,2,b,4,g,3,seven +d,2,b,6,a,4,seven +d,2,b,6,a,8,seven +d,2,b,7,a,2,seven +d,2,b,7,a,4,seven +d,2,b,7,b,2,seven +d,2,b,8,a,2,seven +d,2,b,8,a,3,seven +d,2,b,8,a,4,seven +d,2,b,8,a,5,seven +d,2,b,8,a,6,seven +d,2,b,8,b,2,seven +d,2,c,4,f,2,seven +d,2,c,4,g,2,seven +d,2,c,4,g,3,seven +d,2,d,4,f,2,seven +d,2,d,4,g,2,seven +d,2,d,4,g,3,seven +d,2,d,5,a,3,seven +d,2,d,5,a,4,seven +d,2,e,1,f,1,seven +d,2,e,1,g,1,seven +d,2,e,1,h,1,seven +d,2,e,4,f,2,seven +d,2,e,4,g,2,seven +d,2,e,4,g,3,seven +d,2,e,5,a,3,seven +d,2,e,5,a,4,seven +d,2,f,1,h,1,seven +d,2,f,5,a,3,seven +d,2,f,5,a,4,seven +d,2,f,5,f,1,seven +d,2,f,5,g,1,seven +d,2,f,5,h,1,seven +d,2,f,6,f,1,seven +d,2,f,6,g,1,seven +d,2,f,6,h,1,seven +d,2,f,7,f,1,seven +d,2,f,7,g,1,seven +d,2,f,7,h,1,seven +d,2,f,8,f,1,seven +d,2,f,8,g,1,seven +d,2,f,8,h,1,seven +d,2,g,1,h,3,seven +d,2,g,1,h,4,seven +d,2,g,1,h,6,seven +d,2,g,1,h,8,seven +d,2,g,2,h,5,seven +d,2,g,2,h,6,seven +d,2,g,2,h,8,seven +d,2,g,3,h,6,seven +d,2,g,3,h,8,seven +d,2,g,4,f,1,seven +d,2,g,4,f,2,seven +d,2,g,4,g,1,seven +d,2,g,4,g,2,seven +d,2,g,4,h,2,seven +d,2,g,4,h,6,seven +d,2,g,4,h,8,seven +d,2,g,5,a,3,seven +d,2,g,5,a,4,seven +d,2,g,5,h,8,seven +d,2,g,6,h,4,seven +d,2,g,6,h,8,seven +d,2,g,7,h,2,seven +d,2,g,7,h,4,seven +d,2,g,8,h,2,seven +d,2,g,8,h,3,seven +d,2,g,8,h,4,seven +d,2,g,8,h,6,seven +d,2,h,3,f,1,seven +d,2,h,3,f,2,seven +d,2,h,3,g,1,seven +d,2,h,3,h,1,seven +d,2,h,4,f,1,seven +d,2,h,4,g,1,seven +d,2,h,5,a,3,seven +d,2,h,5,a,4,seven +d,2,h,5,h,1,seven +d,2,h,6,h,1,seven +d,3,a,1,c,1,seven +d,3,a,4,e,1,seven +d,3,a,4,f,1,seven +d,3,a,4,f,2,seven +d,3,a,4,f,3,seven +d,3,a,4,g,1,seven +d,3,a,4,g,2,seven +d,3,a,4,g,3,seven +d,3,a,5,a,3,seven +d,3,a,5,b,3,seven +d,3,a,7,a,2,seven +d,3,a,7,b,2,seven +d,3,a,7,f,8,seven +d,3,a,7,h,8,seven +d,3,a,8,a,2,seven +d,3,a,8,b,2,seven +d,3,b,4,e,1,seven +d,3,b,4,f,1,seven +d,3,b,4,f,2,seven +d,3,b,4,f,3,seven +d,3,b,4,g,1,seven +d,3,b,4,g,2,seven +d,3,b,4,g,3,seven +d,3,b,6,a,4,seven +d,3,b,6,a,8,seven +d,3,b,7,a,4,seven +d,3,b,7,h,8,seven +d,3,b,8,a,6,seven +d,3,c,4,e,1,seven +d,3,c,4,f,1,seven +d,3,c,4,f,2,seven +d,3,c,4,f,3,seven +d,3,c,4,g,1,seven +d,3,c,4,g,2,seven +d,3,c,4,g,3,seven +d,3,c,5,a,3,seven +d,3,c,5,a,4,seven +d,3,c,5,a,5,seven +d,3,c,5,a,6,seven +d,3,c,5,a,7,seven +d,3,c,5,a,8,seven +d,3,c,5,b,3,seven +d,3,c,5,b,7,seven +d,3,c,5,b,8,seven +d,3,c,7,h,8,seven +d,3,d,1,a,1,seven +d,3,d,1,a,2,seven +d,3,d,1,b,1,seven +d,3,d,1,b,2,seven +d,3,d,4,e,1,seven +d,3,d,4,f,1,seven +d,3,d,4,f,2,seven +d,3,d,4,f,3,seven +d,3,d,4,g,1,seven +d,3,d,4,g,2,seven +d,3,d,4,g,3,seven +d,3,d,5,a,3,seven +d,3,d,5,a,4,seven +d,3,d,5,b,3,seven +d,3,d,6,a,3,seven +d,3,d,6,a,7,seven +d,3,d,6,a,8,seven +d,3,d,6,b,3,seven +d,3,d,7,a,3,seven +d,3,d,7,b,3,seven +d,3,d,7,h,8,seven +d,3,d,8,a,3,seven +d,3,d,8,b,3,seven +d,3,e,1,a,3,seven +d,3,e,1,b,3,seven +d,3,e,1,g,1,seven +d,3,e,1,h,1,seven +d,3,e,2,a,3,seven +d,3,e,2,b,3,seven +d,3,e,3,a,3,seven +d,3,e,3,b,3,seven +d,3,e,4,e,1,seven +d,3,e,4,f,1,seven +d,3,e,4,f,3,seven +d,3,e,4,g,1,seven +d,3,e,5,a,3,seven +d,3,e,5,a,4,seven +d,3,e,5,b,3,seven +d,3,e,5,e,1,seven +d,3,e,5,f,1,seven +d,3,e,5,g,1,seven +d,3,e,6,a,3,seven +d,3,e,6,b,3,seven +d,3,e,6,e,1,seven +d,3,e,6,f,1,seven +d,3,e,6,g,1,seven +d,3,e,7,a,3,seven +d,3,e,7,a,8,seven +d,3,e,7,b,3,seven +d,3,e,7,e,1,seven +d,3,e,7,f,1,seven +d,3,e,7,g,1,seven +d,3,e,8,a,3,seven +d,3,e,8,b,3,seven +d,3,e,8,e,1,seven +d,3,e,8,f,1,seven +d,3,e,8,g,1,seven +d,3,f,1,a,3,seven +d,3,f,1,b,3,seven +d,3,f,1,h,1,seven +d,3,f,2,a,3,seven +d,3,f,2,b,3,seven +d,3,f,3,a,3,seven +d,3,f,3,b,3,seven +d,3,f,5,a,3,seven +d,3,f,5,a,4,seven +d,3,f,5,b,3,seven +d,3,f,5,f,1,seven +d,3,f,5,g,1,seven +d,3,f,5,h,1,seven +d,3,f,6,a,3,seven +d,3,f,6,b,3,seven +d,3,f,6,f,1,seven +d,3,f,6,g,1,seven +d,3,f,6,h,1,seven +d,3,f,7,a,3,seven +d,3,f,7,a,8,seven +d,3,f,7,b,3,seven +d,3,f,7,f,1,seven +d,3,f,7,g,1,seven +d,3,f,7,h,1,seven +d,3,f,8,a,3,seven +d,3,f,8,b,3,seven +d,3,f,8,f,1,seven +d,3,f,8,g,1,seven +d,3,f,8,h,1,seven +d,3,g,1,a,3,seven +d,3,g,1,b,3,seven +d,3,g,1,h,3,seven +d,3,g,1,h,4,seven +d,3,g,1,h,6,seven +d,3,g,2,a,3,seven +d,3,g,2,b,3,seven +d,3,g,2,h,5,seven +d,3,g,2,h,6,seven +d,3,g,3,a,3,seven +d,3,g,3,b,3,seven +d,3,g,3,e,1,seven +d,3,g,3,f,1,seven +d,3,g,3,g,1,seven +d,3,g,3,h,5,seven +d,3,g,3,h,6,seven +d,3,g,4,e,1,seven +d,3,g,4,f,1,seven +d,3,g,4,g,1,seven +d,3,g,4,h,2,seven +d,3,g,4,h,6,seven +d,3,g,5,a,3,seven +d,3,g,5,a,4,seven +d,3,g,5,b,3,seven +d,3,g,5,h,3,seven +d,3,g,6,a,3,seven +d,3,g,6,b,3,seven +d,3,g,6,h,3,seven +d,3,g,6,h,4,seven +d,3,g,6,h,8,seven +d,3,g,7,a,3,seven +d,3,g,7,a,8,seven +d,3,g,7,b,3,seven +d,3,g,7,h,3,seven +d,3,g,7,h,4,seven +d,3,g,8,a,3,seven +d,3,g,8,b,3,seven +d,3,g,8,h,3,seven +d,3,g,8,h,5,seven +d,3,g,8,h,6,seven +d,3,h,1,a,3,seven +d,3,h,1,b,3,seven +d,3,h,2,a,3,seven +d,3,h,2,b,3,seven +d,3,h,3,a,3,seven +d,3,h,3,b,3,seven +d,3,h,3,e,1,seven +d,3,h,3,f,1,seven +d,3,h,3,f,2,seven +d,3,h,3,g,1,seven +d,3,h,3,h,1,seven +d,3,h,4,e,1,seven +d,3,h,4,f,1,seven +d,3,h,4,g,1,seven +d,3,h,5,a,3,seven +d,3,h,5,a,4,seven +d,3,h,5,b,3,seven +d,3,h,5,h,1,seven +d,3,h,6,a,3,seven +d,3,h,6,b,3,seven +d,3,h,6,h,1,seven +d,3,h,7,a,3,seven +d,3,h,7,a,8,seven +d,3,h,7,b,3,seven +d,3,h,7,c,8,seven +d,3,h,8,a,3,seven +d,3,h,8,b,3,seven +d,4,a,1,h,1,seven +d,4,a,3,c,2,seven +d,4,a,3,h,1,seven +d,4,a,3,h,2,seven +d,4,a,5,h,1,seven +d,4,a,6,h,1,seven +d,4,a,7,h,1,seven +d,4,a,8,h,1,seven +d,4,b,1,h,1,seven +d,4,b,3,h,1,seven +d,4,b,3,h,2,seven +d,4,b,4,c,2,seven +d,4,b,5,c,2,seven +d,4,b,5,h,1,seven +d,4,b,6,c,2,seven +d,4,b,6,h,1,seven +d,4,b,7,c,2,seven +d,4,b,7,h,1,seven +d,4,b,8,c,2,seven +d,4,b,8,h,1,seven +d,4,c,1,a,1,seven +d,4,c,1,h,1,seven +d,4,c,3,h,1,seven +d,4,c,3,h,2,seven +d,4,c,4,b,1,seven +d,4,c,5,b,1,seven +d,4,c,5,h,1,seven +d,4,c,6,b,1,seven +d,4,c,6,h,1,seven +d,4,c,7,b,1,seven +d,4,c,7,h,1,seven +d,4,c,8,b,1,seven +d,4,c,8,h,1,seven +d,4,d,1,a,1,seven +d,4,d,1,h,1,seven +d,4,d,3,a,1,seven +d,4,d,3,b,1,seven +d,4,d,3,c,1,seven +d,4,d,3,c,2,seven +d,4,d,3,h,1,seven +d,4,d,3,h,2,seven +d,4,d,5,h,1,seven +d,4,d,6,h,1,seven +d,4,d,7,h,1,seven +d,4,d,8,h,1,seven +d,4,e,1,a,1,seven +d,4,e,3,a,1,seven +d,4,e,3,f,1,seven +d,4,e,3,f,2,seven +d,4,e,3,g,1,seven +d,4,e,3,g,2,seven +d,4,e,3,h,1,seven +d,4,e,3,h,2,seven +d,4,e,4,c,2,seven +d,4,e,5,a,1,seven +d,4,e,5,h,1,seven +d,4,e,6,h,1,seven +d,4,e,7,h,1,seven +d,4,e,8,h,1,seven +d,4,f,1,a,1,seven +d,4,f,3,a,1,seven +d,4,f,3,c,2,seven +d,4,f,4,c,2,seven +d,4,f,4,e,2,seven +d,4,f,4,g,1,seven +d,4,f,4,g,2,seven +d,4,f,4,h,1,seven +d,4,f,4,h,2,seven +d,4,f,4,h,3,seven +d,4,f,5,a,1,seven +d,4,f,5,e,2,seven +d,4,f,5,g,1,seven +d,4,f,5,h,1,seven +d,4,f,6,a,1,seven +d,4,f,6,e,2,seven +d,4,f,6,g,1,seven +d,4,f,6,h,1,seven +d,4,f,6,h,7,seven +d,4,f,6,h,8,seven +d,4,f,7,e,2,seven +d,4,f,7,g,1,seven +d,4,f,7,h,1,seven +d,4,f,8,e,2,seven +d,4,f,8,g,1,seven +d,4,f,8,h,1,seven +d,4,g,1,a,1,seven +d,4,g,1,h,3,seven +d,4,g,1,h,4,seven +d,4,g,1,h,6,seven +d,4,g,2,h,5,seven +d,4,g,2,h,6,seven +d,4,g,3,a,1,seven +d,4,g,3,c,2,seven +d,4,g,3,h,1,seven +d,4,g,3,h,5,seven +d,4,g,3,h,6,seven +d,4,g,4,c,2,seven +d,4,g,4,h,2,seven +d,4,g,4,h,6,seven +d,4,g,5,a,1,seven +d,4,g,5,h,3,seven +d,4,g,6,a,1,seven +d,4,g,6,h,3,seven +d,4,g,6,h,4,seven +d,4,g,6,h,8,seven +d,4,g,7,a,1,seven +d,4,g,7,h,3,seven +d,4,g,7,h,4,seven +d,4,g,8,h,3,seven +d,4,g,8,h,5,seven +d,4,g,8,h,6,seven +d,4,h,1,a,1,seven +d,4,h,3,a,1,seven +d,4,h,3,c,2,seven +d,4,h,4,c,2,seven +d,4,h,4,h,1,seven +d,4,h,5,a,1,seven +d,4,h,5,h,1,seven +d,4,h,6,a,1,seven +d,4,h,6,h,1,seven +d,4,h,7,a,1,seven +d,4,h,8,a,1,seven +a,1,a,2,d,1,eight +a,1,a,2,f,1,eight +a,1,a,2,h,1,eight +a,1,b,2,d,1,eight +a,1,b,2,f,1,eight +a,1,b,2,h,1,eight +a,1,d,2,f,1,eight +a,1,e,2,g,1,eight +a,1,e,2,h,1,eight +a,1,f,2,c,1,eight +a,1,f,2,d,1,eight +a,1,f,2,h,1,eight +a,1,g,2,c,1,eight +a,1,g,2,d,1,eight +a,1,g,2,e,1,eight +a,1,h,2,c,1,eight +a,1,h,2,d,1,eight +a,1,h,2,e,1,eight +a,1,h,2,f,1,eight +b,1,a,3,d,2,eight +b,1,a,3,f,1,eight +b,1,a,3,f,2,eight +b,1,a,3,g,1,eight +b,1,a,3,g,2,eight +b,1,a,3,h,1,eight +b,1,a,3,h,2,eight +b,1,b,3,d,2,eight +b,1,b,3,f,1,eight +b,1,b,3,f,2,eight +b,1,b,3,g,1,eight +b,1,b,3,g,2,eight +b,1,b,3,h,1,eight +b,1,b,3,h,2,eight +b,1,b,4,a,6,eight +b,1,b,5,a,3,eight +b,1,b,5,a,7,eight +b,1,b,5,a,8,eight +b,1,b,6,a,3,eight +b,1,b,6,a,4,eight +b,1,b,6,a,8,eight +b,1,b,7,a,3,eight +b,1,b,7,a,4,eight +b,1,b,7,a,5,eight +b,1,b,8,a,3,eight +b,1,b,8,a,4,eight +b,1,b,8,a,5,eight +b,1,b,8,a,6,eight +b,1,c,3,f,1,eight +b,1,c,3,f,2,eight +b,1,c,3,g,1,eight +b,1,c,3,g,2,eight +b,1,c,3,h,1,eight +b,1,c,3,h,2,eight +b,1,d,3,d,1,eight +b,1,d,3,e,1,eight +b,1,d,3,f,1,eight +b,1,d,3,f,2,eight +b,1,d,3,g,1,eight +b,1,d,3,g,2,eight +b,1,d,3,h,1,eight +b,1,e,3,h,1,eight +b,1,e,3,h,2,eight +b,1,f,2,d,1,eight +b,1,g,1,h,7,eight +b,1,g,3,h,1,eight +b,1,g,8,h,2,eight +b,2,a,3,f,1,eight +b,2,a,3,f,2,eight +b,2,a,3,g,1,eight +b,2,a,3,g,2,eight +b,2,a,3,h,1,eight +b,2,a,3,h,2,eight +b,2,b,3,f,1,eight +b,2,b,3,f,2,eight +b,2,b,3,g,1,eight +b,2,b,3,g,2,eight +b,2,b,3,h,1,eight +b,2,b,3,h,2,eight +b,2,c,3,d,2,eight +b,2,c,3,f,1,eight +b,2,c,3,f,2,eight +b,2,c,3,g,1,eight +b,2,c,3,g,2,eight +b,2,c,3,h,1,eight +b,2,c,3,h,2,eight +b,2,d,3,d,1,eight +b,2,d,3,e,1,eight +b,2,d,3,f,1,eight +b,2,d,3,f,2,eight +b,2,d,3,g,1,eight +b,2,d,3,g,2,eight +b,2,d,3,h,1,eight +b,2,e,3,h,1,eight +b,2,e,3,h,2,eight +b,2,g,1,h,7,eight +b,2,g,3,h,1,eight +b,2,g,8,h,2,eight +c,1,a,1,h,1,eight +c,1,a,3,e,1,eight +c,1,a,3,f,1,eight +c,1,a,3,f,2,eight +c,1,a,4,e,1,eight +c,1,a,4,f,1,eight +c,1,a,4,g,1,eight +c,1,a,4,g,2,eight +c,1,a,4,g,3,eight +c,1,a,4,h,1,eight +c,1,a,4,h,2,eight +c,1,a,4,h,3,eight +c,1,a,5,h,1,eight +c,1,a,6,h,1,eight +c,1,a,7,h,1,eight +c,1,a,8,h,1,eight +c,1,b,1,a,3,eight +c,1,b,1,a,5,eight +c,1,b,1,a,7,eight +c,1,b,1,h,1,eight +c,1,b,2,a,3,eight +c,1,b,2,a,5,eight +c,1,b,2,a,7,eight +c,1,b,3,e,1,eight +c,1,b,3,f,1,eight +c,1,b,3,f,2,eight +c,1,b,4,a,6,eight +c,1,b,4,e,1,eight +c,1,b,4,f,1,eight +c,1,b,4,g,1,eight +c,1,b,4,g,2,eight +c,1,b,4,g,3,eight +c,1,b,4,h,1,eight +c,1,b,4,h,2,eight +c,1,b,4,h,3,eight +c,1,b,5,a,3,eight +c,1,b,5,a,7,eight +c,1,b,5,a,8,eight +c,1,b,5,h,1,eight +c,1,b,6,a,3,eight +c,1,b,6,a,8,eight +c,1,b,6,h,1,eight +c,1,b,7,a,3,eight +c,1,b,7,a,5,eight +c,1,b,7,h,1,eight +c,1,b,8,a,2,eight +c,1,b,8,a,3,eight +c,1,b,8,a,4,eight +c,1,b,8,a,5,eight +c,1,b,8,a,6,eight +c,1,b,8,h,1,eight +c,1,c,3,e,1,eight +c,1,c,3,f,1,eight +c,1,c,3,f,2,eight +c,1,c,4,e,1,eight +c,1,c,4,f,1,eight +c,1,c,4,g,1,eight +c,1,c,4,g,2,eight +c,1,c,4,g,3,eight +c,1,c,4,h,1,eight +c,1,c,4,h,2,eight +c,1,c,4,h,3,eight +c,1,c,5,h,1,eight +c,1,c,6,h,1,eight +c,1,c,7,h,1,eight +c,1,c,8,h,1,eight +c,1,d,1,g,1,eight +c,1,d,1,h,1,eight +c,1,d,4,g,1,eight +c,1,d,4,g,2,eight +c,1,d,4,g,3,eight +c,1,d,4,h,1,eight +c,1,d,4,h,2,eight +c,1,d,4,h,3,eight +c,1,d,5,g,1,eight +c,1,d,5,h,1,eight +c,1,d,6,g,1,eight +c,1,d,6,h,1,eight +c,1,d,7,g,1,eight +c,1,d,7,h,1,eight +c,1,d,8,g,1,eight +c,1,d,8,h,1,eight +c,1,e,1,h,1,eight +c,1,e,4,e,1,eight +c,1,e,4,f,1,eight +c,1,e,4,g,1,eight +c,1,e,4,h,1,eight +c,1,e,4,h,2,eight +c,1,e,4,h,3,eight +c,1,e,5,h,1,eight +c,1,e,6,h,1,eight +c,1,e,7,h,1,eight +c,1,e,8,h,1,eight +c,1,f,3,e,1,eight +c,1,f,3,f,1,eight +c,1,f,3,g,1,eight +c,1,f,3,h,1,eight +c,1,f,3,h,2,eight +c,1,g,1,h,4,eight +c,1,g,1,h,5,eight +c,1,g,1,h,7,eight +c,1,g,2,h,6,eight +c,1,g,2,h,7,eight +c,1,g,3,e,1,eight +c,1,g,3,e,2,eight +c,1,g,3,f,1,eight +c,1,g,3,g,1,eight +c,1,g,3,h,1,eight +c,1,g,3,h,7,eight +c,1,g,4,g,1,eight +c,1,g,4,h,1,eight +c,1,g,4,h,7,eight +c,1,g,5,h,7,eight +c,1,g,6,h,3,eight +c,1,g,7,h,1,eight +c,1,g,7,h,3,eight +c,1,g,7,h,5,eight +c,1,g,8,h,1,eight +c,1,g,8,h,2,eight +c,1,g,8,h,3,eight +c,1,g,8,h,5,eight +c,1,h,3,e,1,eight +c,1,h,3,e,2,eight +c,1,h,3,f,1,eight +c,1,h,3,f,2,eight +c,1,h,3,g,1,eight +c,1,h,3,h,1,eight +c,2,a,1,e,1,eight +c,2,a,1,f,1,eight +c,2,a,1,g,1,eight +c,2,a,1,h,1,eight +c,2,a,2,e,1,eight +c,2,a,2,f,1,eight +c,2,a,2,g,1,eight +c,2,a,2,h,1,eight +c,2,a,4,e,1,eight +c,2,a,4,e,3,eight +c,2,a,4,f,1,eight +c,2,a,4,g,1,eight +c,2,a,4,g,2,eight +c,2,a,4,g,3,eight +c,2,a,4,h,1,eight +c,2,a,4,h,2,eight +c,2,a,4,h,3,eight +c,2,a,5,e,1,eight +c,2,a,5,f,1,eight +c,2,a,5,g,1,eight +c,2,a,5,h,1,eight +c,2,a,6,e,1,eight +c,2,a,6,f,1,eight +c,2,a,6,g,1,eight +c,2,a,6,h,1,eight +c,2,a,7,e,1,eight +c,2,a,7,f,1,eight +c,2,a,7,g,1,eight +c,2,a,7,g,8,eight +c,2,a,7,h,1,eight +c,2,a,8,e,1,eight +c,2,a,8,f,1,eight +c,2,a,8,g,1,eight +c,2,a,8,h,1,eight +c,2,b,1,e,1,eight +c,2,b,1,f,1,eight +c,2,b,1,g,1,eight +c,2,b,1,h,1,eight +c,2,b,2,e,1,eight +c,2,b,2,f,1,eight +c,2,b,2,g,1,eight +c,2,b,2,h,1,eight +c,2,b,4,e,1,eight +c,2,b,4,e,3,eight +c,2,b,4,f,1,eight +c,2,b,4,g,1,eight +c,2,b,4,g,2,eight +c,2,b,4,g,3,eight +c,2,b,4,h,1,eight +c,2,b,4,h,2,eight +c,2,b,4,h,3,eight +c,2,b,5,a,3,eight +c,2,b,5,e,1,eight +c,2,b,5,f,1,eight +c,2,b,5,g,1,eight +c,2,b,5,h,1,eight +c,2,b,6,a,3,eight +c,2,b,6,e,1,eight +c,2,b,6,f,1,eight +c,2,b,6,g,1,eight +c,2,b,6,h,1,eight +c,2,b,7,a,3,eight +c,2,b,7,a,5,eight +c,2,b,7,e,1,eight +c,2,b,7,f,1,eight +c,2,b,7,g,1,eight +c,2,b,7,h,1,eight +c,2,b,8,e,1,eight +c,2,b,8,f,1,eight +c,2,b,8,g,1,eight +c,2,b,8,h,1,eight +c,2,c,1,a,6,eight +c,2,c,1,a,7,eight +c,2,c,1,a,8,eight +c,2,c,3,a,6,eight +c,2,c,3,a,7,eight +c,2,c,3,a,8,eight +c,2,c,3,b,4,eight +c,2,c,3,b,6,eight +c,2,c,3,b,7,eight +c,2,c,3,b,8,eight +c,2,c,4,a,4,eight +c,2,c,4,a,5,eight +c,2,c,4,a,6,eight +c,2,c,4,a,7,eight +c,2,c,4,a,8,eight +c,2,c,4,b,6,eight +c,2,c,4,b,7,eight +c,2,c,4,e,1,eight +c,2,c,4,e,3,eight +c,2,c,4,f,1,eight +c,2,c,4,g,1,eight +c,2,c,4,g,2,eight +c,2,c,4,g,3,eight +c,2,c,4,h,1,eight +c,2,c,4,h,2,eight +c,2,c,4,h,3,eight +c,2,c,5,a,8,eight +c,2,c,5,b,8,eight +c,2,c,5,e,1,eight +c,2,c,5,f,1,eight +c,2,c,5,g,1,eight +c,2,c,5,h,1,eight +c,2,c,6,e,1,eight +c,2,c,6,f,1,eight +c,2,c,6,g,1,eight +c,2,c,6,h,1,eight +c,2,c,7,a,8,eight +c,2,c,7,e,1,eight +c,2,c,7,f,1,eight +c,2,c,7,g,1,eight +c,2,c,7,h,1,eight +c,2,c,8,e,1,eight +c,2,c,8,f,1,eight +c,2,c,8,g,1,eight +c,2,c,8,h,1,eight +c,2,d,1,h,1,eight +c,2,d,3,e,1,eight +c,2,d,3,f,1,eight +c,2,d,3,f,2,eight +c,2,d,4,e,1,eight +c,2,d,4,f,1,eight +c,2,d,4,g,1,eight +c,2,d,4,g,2,eight +c,2,d,4,g,3,eight +c,2,d,4,h,2,eight +c,2,d,4,h,3,eight +c,2,d,5,h,1,eight +c,2,d,6,h,1,eight +c,2,d,7,h,1,eight +c,2,d,8,h,1,eight +c,2,e,1,h,1,eight +c,2,e,4,e,1,eight +c,2,e,4,e,2,eight +c,2,e,4,f,1,eight +c,2,e,4,f,2,eight +c,2,e,4,g,1,eight +c,2,e,4,g,2,eight +c,2,e,4,g,3,eight +c,2,e,4,h,1,eight +c,2,e,4,h,2,eight +c,2,e,4,h,3,eight +c,2,e,5,h,1,eight +c,2,e,6,h,1,eight +c,2,e,7,h,1,eight +c,2,e,8,h,1,eight +c,2,g,1,h,4,eight +c,2,g,1,h,5,eight +c,2,g,1,h,7,eight +c,2,g,2,h,4,eight +c,2,g,2,h,6,eight +c,2,g,2,h,7,eight +c,2,g,3,e,1,eight +c,2,g,3,e,2,eight +c,2,g,3,f,1,eight +c,2,g,3,g,1,eight +c,2,g,3,h,1,eight +c,2,g,3,h,6,eight +c,2,g,3,h,7,eight +c,2,g,4,g,1,eight +c,2,g,4,h,1,eight +c,2,g,4,h,2,eight +c,2,g,4,h,7,eight +c,2,g,5,h,2,eight +c,2,g,5,h,7,eight +c,2,g,6,h,2,eight +c,2,g,6,h,3,eight +c,2,g,7,h,2,eight +c,2,g,7,h,3,eight +c,2,g,7,h,5,eight +c,2,g,8,h,2,eight +c,2,g,8,h,4,eight +c,2,g,8,h,5,eight +c,2,h,3,e,1,eight +c,2,h,3,e,2,eight +c,2,h,3,f,1,eight +c,2,h,3,f,2,eight +c,2,h,3,g,1,eight +c,2,h,3,h,1,eight +c,2,h,7,b,8,eight +c,3,a,3,d,1,eight +c,3,a,3,e,1,eight +c,3,a,3,f,1,eight +c,3,a,4,g,1,eight +c,3,a,4,g,2,eight +c,3,a,4,g,3,eight +c,3,a,4,h,1,eight +c,3,a,4,h,2,eight +c,3,a,4,h,3,eight +c,3,b,3,d,1,eight +c,3,b,3,e,1,eight +c,3,b,3,f,1,eight +c,3,b,4,g,1,eight +c,3,b,4,g,2,eight +c,3,b,4,g,3,eight +c,3,b,4,h,1,eight +c,3,b,4,h,2,eight +c,3,b,4,h,3,eight +c,3,c,4,g,1,eight +c,3,c,4,g,2,eight +c,3,c,4,g,3,eight +c,3,c,4,h,1,eight +c,3,c,4,h,2,eight +c,3,c,4,h,3,eight +c,3,d,1,f,1,eight +c,3,d,1,g,1,eight +c,3,d,1,h,1,eight +c,3,d,4,d,1,eight +c,3,d,4,e,1,eight +c,3,d,4,e,3,eight +c,3,d,4,f,1,eight +c,3,d,4,g,1,eight +c,3,d,4,g,2,eight +c,3,d,4,g,3,eight +c,3,d,4,h,1,eight +c,3,d,4,h,2,eight +c,3,d,4,h,3,eight +c,3,d,5,d,1,eight +c,3,d,5,e,1,eight +c,3,d,5,f,1,eight +c,3,d,5,g,1,eight +c,3,d,5,h,1,eight +c,3,d,6,d,1,eight +c,3,d,6,e,1,eight +c,3,d,6,f,1,eight +c,3,d,6,g,1,eight +c,3,d,6,h,1,eight +c,3,d,7,d,1,eight +c,3,d,7,e,1,eight +c,3,d,7,f,1,eight +c,3,d,7,g,1,eight +c,3,d,7,h,1,eight +c,3,d,8,d,1,eight +c,3,d,8,e,1,eight +c,3,d,8,f,1,eight +c,3,d,8,g,1,eight +c,3,d,8,h,1,eight +c,3,e,1,h,1,eight +c,3,e,4,e,1,eight +c,3,e,4,e,2,eight +c,3,e,4,f,1,eight +c,3,e,4,f,2,eight +c,3,e,4,g,1,eight +c,3,e,4,g,2,eight +c,3,e,4,g,3,eight +c,3,e,4,h,1,eight +c,3,e,4,h,2,eight +c,3,e,4,h,3,eight +c,3,e,5,h,1,eight +c,3,e,6,h,1,eight +c,3,e,7,h,1,eight +c,3,e,8,h,1,eight +c,3,f,3,d,1,eight +c,3,f,3,e,1,eight +c,3,f,3,f,1,eight +c,3,f,3,g,1,eight +c,3,f,3,h,1,eight +c,3,f,3,h,2,eight +c,3,f,4,d,1,eight +c,3,f,4,e,1,eight +c,3,f,4,f,1,eight +c,3,f,5,d,1,eight +c,3,f,5,e,1,eight +c,3,f,6,d,1,eight +c,3,f,6,e,1,eight +c,3,f,7,d,1,eight +c,3,f,7,e,1,eight +c,3,f,8,d,1,eight +c,3,f,8,e,1,eight +c,3,g,1,h,4,eight +c,3,g,1,h,5,eight +c,3,g,1,h,7,eight +c,3,g,2,h,4,eight +c,3,g,2,h,6,eight +c,3,g,2,h,7,eight +c,3,g,3,d,1,eight +c,3,g,3,e,1,eight +c,3,g,3,e,2,eight +c,3,g,3,f,1,eight +c,3,g,3,g,1,eight +c,3,g,3,h,1,eight +c,3,g,3,h,6,eight +c,3,g,3,h,7,eight +c,3,g,4,g,1,eight +c,3,g,4,h,1,eight +c,3,g,4,h,2,eight +c,3,g,4,h,7,eight +c,3,g,5,h,2,eight +c,3,g,5,h,7,eight +c,3,g,6,h,2,eight +c,3,g,6,h,3,eight +c,3,g,7,h,2,eight +c,3,g,7,h,3,eight +c,3,g,7,h,5,eight +c,3,g,8,h,2,eight +c,3,g,8,h,4,eight +c,3,g,8,h,5,eight +c,3,h,3,d,1,eight +c,3,h,3,e,1,eight +c,3,h,3,e,2,eight +c,3,h,3,f,1,eight +c,3,h,3,f,2,eight +c,3,h,3,g,1,eight +c,3,h,3,h,1,eight +d,1,a,1,h,2,eight +d,1,a,2,h,2,eight +d,1,a,4,a,2,eight +d,1,a,5,h,2,eight +d,1,a,6,h,2,eight +d,1,a,7,h,2,eight +d,1,a,8,h,2,eight +d,1,b,1,a,3,eight +d,1,b,1,a,5,eight +d,1,b,1,a,7,eight +d,1,b,1,h,2,eight +d,1,b,2,a,5,eight +d,1,b,2,a,7,eight +d,1,b,2,h,2,eight +d,1,b,3,a,5,eight +d,1,b,3,a,7,eight +d,1,b,5,a,3,eight +d,1,b,5,a,7,eight +d,1,b,5,a,8,eight +d,1,b,5,h,2,eight +d,1,b,6,a,3,eight +d,1,b,6,a,8,eight +d,1,b,6,h,2,eight +d,1,b,7,a,3,eight +d,1,b,7,a,5,eight +d,1,b,7,h,2,eight +d,1,b,8,a,2,eight +d,1,b,8,a,3,eight +d,1,b,8,a,4,eight +d,1,b,8,a,5,eight +d,1,b,8,a,6,eight +d,1,b,8,h,2,eight +d,1,c,1,h,2,eight +d,1,c,2,h,2,eight +d,1,c,4,a,2,eight +d,1,c,4,a,3,eight +d,1,c,4,b,2,eight +d,1,c,5,h,2,eight +d,1,c,6,h,2,eight +d,1,c,7,h,2,eight +d,1,c,8,h,2,eight +d,1,d,2,h,2,eight +d,1,d,5,h,2,eight +d,1,d,6,h,2,eight +d,1,d,7,h,2,eight +d,1,d,8,h,2,eight +d,1,e,1,a,2,eight +d,1,e,2,a,2,eight +d,1,e,4,f,1,eight +d,1,e,4,g,1,eight +d,1,e,5,a,2,eight +d,1,e,6,a,2,eight +d,1,e,7,a,2,eight +d,1,e,8,a,2,eight +d,1,f,1,a,2,eight +d,1,f,2,a,2,eight +d,1,f,4,g,2,eight +d,1,f,4,h,2,eight +d,1,f,4,h,3,eight +d,1,f,5,a,2,eight +d,1,f,6,a,2,eight +d,1,f,7,a,2,eight +d,1,f,8,a,2,eight +d,1,g,1,a,2,eight +d,1,g,1,h,3,eight +d,1,g,1,h,5,eight +d,1,g,1,h,7,eight +d,1,g,2,a,2,eight +d,1,g,2,h,5,eight +d,1,g,2,h,7,eight +d,1,g,3,h,5,eight +d,1,g,3,h,7,eight +d,1,g,4,f,1,eight +d,1,g,4,g,1,eight +d,1,g,4,h,7,eight +d,1,g,5,a,2,eight +d,1,g,5,h,3,eight +d,1,g,5,h,7,eight +d,1,g,6,a,2,eight +d,1,g,6,h,3,eight +d,1,g,7,a,2,eight +d,1,g,7,h,1,eight +d,1,g,7,h,3,eight +d,1,g,7,h,5,eight +d,1,g,8,a,2,eight +d,1,g,8,h,1,eight +d,1,g,8,h,2,eight +d,1,g,8,h,3,eight +d,1,g,8,h,4,eight +d,1,g,8,h,5,eight +d,1,h,1,a,2,eight +d,1,h,2,a,2,eight +d,1,h,4,f,1,eight +d,1,h,4,g,1,eight +d,1,h,4,h,2,eight +d,1,h,5,a,2,eight +d,1,h,6,a,2,eight +d,1,h,7,a,2,eight +d,1,h,8,a,2,eight +d,2,a,1,f,2,eight +d,2,a,1,g,2,eight +d,2,a,1,h,2,eight +d,2,a,2,f,2,eight +d,2,a,2,g,2,eight +d,2,a,2,h,2,eight +d,2,a,5,a,2,eight +d,2,a,5,b,2,eight +d,2,a,5,f,2,eight +d,2,a,5,g,2,eight +d,2,a,5,h,2,eight +d,2,a,5,h,3,eight +d,2,a,5,h,4,eight +d,2,a,6,f,2,eight +d,2,a,6,g,2,eight +d,2,a,6,h,2,eight +d,2,a,7,f,2,eight +d,2,a,7,g,2,eight +d,2,a,7,g,8,eight +d,2,a,7,h,2,eight +d,2,a,8,f,2,eight +d,2,a,8,g,2,eight +d,2,a,8,h,2,eight +d,2,b,1,f,2,eight +d,2,b,1,g,2,eight +d,2,b,1,h,2,eight +d,2,b,2,f,2,eight +d,2,b,2,g,2,eight +d,2,b,2,h,2,eight +d,2,b,5,a,3,eight +d,2,b,5,a,7,eight +d,2,b,5,f,2,eight +d,2,b,5,g,2,eight +d,2,b,5,h,2,eight +d,2,b,5,h,3,eight +d,2,b,5,h,4,eight +d,2,b,6,a,3,eight +d,2,b,6,f,2,eight +d,2,b,6,g,2,eight +d,2,b,6,h,2,eight +d,2,b,7,a,3,eight +d,2,b,7,a,5,eight +d,2,b,7,f,2,eight +d,2,b,7,g,2,eight +d,2,b,7,h,2,eight +d,2,b,8,f,2,eight +d,2,b,8,g,2,eight +d,2,b,8,h,2,eight +d,2,c,1,f,2,eight +d,2,c,1,g,2,eight +d,2,c,1,h,2,eight +d,2,c,2,f,2,eight +d,2,c,2,g,2,eight +d,2,c,2,h,2,eight +d,2,c,4,a,4,eight +d,2,c,4,a,5,eight +d,2,c,4,a,6,eight +d,2,c,4,a,7,eight +d,2,c,4,a,8,eight +d,2,c,4,b,6,eight +d,2,c,4,b,7,eight +d,2,c,4,b,8,eight +d,2,c,5,a,2,eight +d,2,c,5,a,8,eight +d,2,c,5,b,2,eight +d,2,c,5,b,8,eight +d,2,c,5,f,2,eight +d,2,c,5,g,2,eight +d,2,c,5,h,2,eight +d,2,c,5,h,3,eight +d,2,c,5,h,4,eight +d,2,c,6,f,2,eight +d,2,c,6,g,2,eight +d,2,c,6,h,2,eight +d,2,c,7,f,2,eight +d,2,c,7,g,2,eight +d,2,c,7,h,2,eight +d,2,c,8,f,2,eight +d,2,c,8,g,2,eight +d,2,c,8,h,2,eight +d,2,d,1,h,2,eight +d,2,d,5,f,2,eight +d,2,d,5,g,2,eight +d,2,d,5,h,2,eight +d,2,d,5,h,3,eight +d,2,d,5,h,4,eight +d,2,d,6,f,2,eight +d,2,d,6,g,2,eight +d,2,d,6,h,2,eight +d,2,d,7,f,2,eight +d,2,d,7,g,2,eight +d,2,d,7,h,2,eight +d,2,d,8,f,2,eight +d,2,d,8,g,2,eight +d,2,d,8,h,2,eight +d,2,e,1,h,2,eight +d,2,e,2,h,2,eight +d,2,e,5,h,2,eight +d,2,e,5,h,3,eight +d,2,e,5,h,4,eight +d,2,e,6,h,2,eight +d,2,e,7,h,2,eight +d,2,e,8,h,2,eight +d,2,f,5,f,2,eight +d,2,f,5,g,2,eight +d,2,f,5,g,8,eight +d,2,f,5,h,2,eight +d,2,f,5,h,8,eight +d,2,g,2,h,4,eight +d,2,g,3,h,5,eight +d,2,g,5,f,1,eight +d,2,g,5,g,1,eight +d,2,g,5,h,3,eight +d,2,g,5,h,7,eight +d,2,g,6,f,1,eight +d,2,g,6,g,1,eight +d,2,g,6,h,3,eight +d,2,g,7,f,1,eight +d,2,g,7,g,1,eight +d,2,g,7,h,3,eight +d,2,g,7,h,5,eight +d,2,g,8,f,1,eight +d,2,g,8,g,1,eight +d,2,g,8,h,5,eight +d,2,h,4,f,2,eight +d,2,h,4,f,3,eight +d,2,h,4,g,2,eight +d,2,h,4,h,2,eight +d,2,h,5,f,1,eight +d,2,h,5,g,1,eight +d,2,h,5,h,2,eight +d,2,h,6,f,1,eight +d,2,h,6,g,1,eight +d,2,h,7,b,8,eight +d,2,h,7,f,1,eight +d,2,h,7,g,1,eight +d,2,h,7,h,1,eight +d,2,h,8,f,1,eight +d,2,h,8,g,1,eight +d,2,h,8,h,1,eight +d,3,a,1,e,1,eight +d,3,a,1,f,1,eight +d,3,a,1,f,2,eight +d,3,a,1,g,1,eight +d,3,a,1,g,2,eight +d,3,a,1,h,2,eight +d,3,a,2,f,2,eight +d,3,a,2,g,2,eight +d,3,a,2,h,2,eight +d,3,a,3,f,2,eight +d,3,a,3,g,2,eight +d,3,a,3,h,2,eight +d,3,a,5,a,8,eight +d,3,a,5,e,1,eight +d,3,a,5,f,1,eight +d,3,a,5,f,2,eight +d,3,a,5,f,4,eight +d,3,a,5,g,1,eight +d,3,a,5,g,2,eight +d,3,a,5,h,2,eight +d,3,a,5,h,3,eight +d,3,a,5,h,4,eight +d,3,a,6,e,1,eight +d,3,a,6,f,1,eight +d,3,a,6,f,2,eight +d,3,a,6,g,1,eight +d,3,a,6,g,2,eight +d,3,a,6,h,2,eight +d,3,a,7,d,8,eight +d,3,a,7,e,1,eight +d,3,a,7,e,8,eight +d,3,a,7,f,1,eight +d,3,a,7,f,2,eight +d,3,a,7,g,1,eight +d,3,a,7,g,2,eight +d,3,a,7,g,8,eight +d,3,a,7,h,2,eight +d,3,a,8,e,1,eight +d,3,a,8,f,1,eight +d,3,a,8,f,2,eight +d,3,a,8,g,1,eight +d,3,a,8,g,2,eight +d,3,a,8,h,2,eight +d,3,b,1,e,1,eight +d,3,b,1,f,1,eight +d,3,b,1,f,2,eight +d,3,b,1,g,1,eight +d,3,b,1,g,2,eight +d,3,b,1,h,2,eight +d,3,b,2,f,2,eight +d,3,b,2,g,2,eight +d,3,b,2,h,2,eight +d,3,b,3,f,2,eight +d,3,b,3,g,2,eight +d,3,b,3,h,2,eight +d,3,b,5,e,1,eight +d,3,b,5,f,1,eight +d,3,b,5,f,2,eight +d,3,b,5,f,4,eight +d,3,b,5,g,1,eight +d,3,b,5,g,2,eight +d,3,b,5,h,2,eight +d,3,b,5,h,3,eight +d,3,b,5,h,4,eight +d,3,b,6,e,1,eight +d,3,b,6,f,1,eight +d,3,b,6,f,2,eight +d,3,b,6,g,1,eight +d,3,b,6,g,2,eight +d,3,b,6,h,2,eight +d,3,b,7,d,8,eight +d,3,b,7,e,1,eight +d,3,b,7,f,1,eight +d,3,b,7,f,2,eight +d,3,b,7,f,8,eight +d,3,b,7,g,1,eight +d,3,b,7,g,2,eight +d,3,b,7,g,8,eight +d,3,b,7,h,2,eight +d,3,b,8,e,1,eight +d,3,b,8,f,1,eight +d,3,b,8,f,2,eight +d,3,b,8,g,1,eight +d,3,b,8,g,2,eight +d,3,b,8,h,2,eight +d,3,c,1,a,8,eight +d,3,c,1,b,8,eight +d,3,c,1,e,1,eight +d,3,c,1,f,1,eight +d,3,c,1,f,2,eight +d,3,c,1,g,1,eight +d,3,c,1,g,2,eight +d,3,c,1,h,2,eight +d,3,c,2,a,8,eight +d,3,c,2,b,8,eight +d,3,c,2,f,2,eight +d,3,c,2,g,2,eight +d,3,c,2,h,2,eight +d,3,c,3,a,8,eight +d,3,c,3,b,8,eight +d,3,c,3,f,2,eight +d,3,c,3,g,2,eight +d,3,c,3,h,2,eight +d,3,c,4,a,4,eight +d,3,c,4,a,5,eight +d,3,c,4,a,6,eight +d,3,c,4,a,7,eight +d,3,c,4,a,8,eight +d,3,c,4,b,4,eight +d,3,c,4,b,5,eight +d,3,c,4,b,6,eight +d,3,c,4,b,7,eight +d,3,c,4,b,8,eight +d,3,c,5,e,1,eight +d,3,c,5,f,1,eight +d,3,c,5,f,2,eight +d,3,c,5,f,4,eight +d,3,c,5,g,1,eight +d,3,c,5,g,2,eight +d,3,c,5,h,2,eight +d,3,c,5,h,3,eight +d,3,c,5,h,4,eight +d,3,c,6,a,7,eight +d,3,c,6,a,8,eight +d,3,c,6,b,8,eight +d,3,c,6,e,1,eight +d,3,c,6,f,1,eight +d,3,c,6,f,2,eight +d,3,c,6,g,1,eight +d,3,c,6,g,2,eight +d,3,c,6,h,2,eight +d,3,c,7,a,8,eight +d,3,c,7,e,1,eight +d,3,c,7,f,1,eight +d,3,c,7,f,2,eight +d,3,c,7,f,8,eight +d,3,c,7,g,1,eight +d,3,c,7,g,2,eight +d,3,c,7,g,8,eight +d,3,c,7,h,2,eight +d,3,c,8,a,7,eight +d,3,c,8,a,8,eight +d,3,c,8,e,1,eight +d,3,c,8,f,1,eight +d,3,c,8,f,2,eight +d,3,c,8,g,1,eight +d,3,c,8,g,2,eight +d,3,c,8,h,2,eight +d,3,d,1,a,7,eight +d,3,d,1,a,8,eight +d,3,d,1,b,7,eight +d,3,d,1,b,8,eight +d,3,d,1,h,2,eight +d,3,d,2,a,2,eight +d,3,d,2,a,7,eight +d,3,d,2,a,8,eight +d,3,d,2,b,2,eight +d,3,d,2,b,7,eight +d,3,d,2,b,8,eight +d,3,d,2,h,2,eight +d,3,d,4,a,7,eight +d,3,d,4,a,8,eight +d,3,d,4,b,7,eight +d,3,d,4,b,8,eight +d,3,d,4,c,7,eight +d,3,d,4,c,8,eight +d,3,d,5,a,8,eight +d,3,d,5,e,1,eight +d,3,d,5,f,1,eight +d,3,d,5,f,2,eight +d,3,d,5,f,4,eight +d,3,d,5,g,1,eight +d,3,d,5,g,2,eight +d,3,d,5,h,2,eight +d,3,d,5,h,3,eight +d,3,d,5,h,4,eight +d,3,d,6,a,4,eight +d,3,d,6,a,5,eight +d,3,d,6,a,6,eight +d,3,d,6,e,1,eight +d,3,d,6,f,1,eight +d,3,d,6,f,2,eight +d,3,d,6,g,1,eight +d,3,d,6,g,2,eight +d,3,d,6,h,2,eight +d,3,d,7,a,8,eight +d,3,d,7,b,8,eight +d,3,d,7,e,1,eight +d,3,d,7,f,1,eight +d,3,d,7,f,2,eight +d,3,d,7,g,1,eight +d,3,d,7,g,2,eight +d,3,d,7,g,8,eight +d,3,d,7,h,2,eight +d,3,d,8,e,1,eight +d,3,d,8,f,1,eight +d,3,d,8,f,2,eight +d,3,d,8,g,1,eight +d,3,d,8,g,2,eight +d,3,d,8,h,2,eight +d,3,e,2,f,2,eight +d,3,e,2,g,2,eight +d,3,e,2,h,2,eight +d,3,e,4,f,2,eight +d,3,e,4,g,2,eight +d,3,e,4,g,3,eight +d,3,e,5,a,8,eight +d,3,e,5,f,2,eight +d,3,e,5,g,2,eight +d,3,e,5,h,2,eight +d,3,e,5,h,3,eight +d,3,e,5,h,4,eight +d,3,e,6,a,4,eight +d,3,e,6,a,5,eight +d,3,e,6,f,2,eight +d,3,e,6,g,2,eight +d,3,e,6,h,2,eight +d,3,e,6,h,7,eight +d,3,e,6,h,8,eight +d,3,e,7,b,8,eight +d,3,e,7,f,2,eight +d,3,e,7,g,2,eight +d,3,e,7,g,8,eight +d,3,e,7,h,2,eight +d,3,e,7,h,8,eight +d,3,e,8,f,2,eight +d,3,e,8,g,2,eight +d,3,e,8,h,2,eight +d,3,f,1,h,2,eight +d,3,f,5,a,8,eight +d,3,f,5,f,2,eight +d,3,f,5,g,2,eight +d,3,f,5,g,7,eight +d,3,f,5,g,8,eight +d,3,f,5,h,2,eight +d,3,f,5,h,6,eight +d,3,f,5,h,7,eight +d,3,f,5,h,8,eight +d,3,f,6,a,4,eight +d,3,f,6,a,5,eight +d,3,... [truncated message content] |
From: <sk...@us...> - 2008-03-26 13:41:27
|
Revision: 726 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=726&view=rev Author: sknappe Date: 2008-03-26 06:41:24 -0700 (Wed, 26 Mar 2008) Log Message: ----------- a sparql query is created, that gets all individuals to a given concept Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/owl/Description.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java Modified: trunk/src/dl-learner/org/dllearner/core/owl/Description.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/Description.java 2008-03-25 19:11:32 UTC (rev 725) +++ trunk/src/dl-learner/org/dllearner/core/owl/Description.java 2008-03-26 13:41:24 UTC (rev 726) @@ -33,6 +33,7 @@ protected Description parent = null; protected List<Description> children = new LinkedList<Description>(); + protected String sparqlVar = "subject"; public abstract int getArity(); @@ -200,4 +201,12 @@ public abstract String toManchesterSyntaxString(String baseURI, Map<String,String> prefixes); public abstract void accept(DescriptionVisitor visitor); + + public String getSparqlVar() { + return sparqlVar; + } + + public void setSparqlVar(String sparqlVar) { + this.sparqlVar = sparqlVar; + } } Added: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-03-26 13:41:24 UTC (rev 726) @@ -0,0 +1,213 @@ +package org.dllearner.kb.sparql; + + +import org.dllearner.algorithms.gp.ADC; +import org.dllearner.core.owl.DatatypeExactCardinalityRestriction; +import org.dllearner.core.owl.DatatypeMaxCardinalityRestriction; +import org.dllearner.core.owl.DatatypeMinCardinalityRestriction; +import org.dllearner.core.owl.DatatypeSomeRestriction; +import org.dllearner.core.owl.DatatypeValueRestriction; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.DescriptionVisitor; +import org.dllearner.core.owl.Intersection; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Negation; +import org.dllearner.core.owl.Nothing; +import org.dllearner.core.owl.ObjectAllRestriction; +import org.dllearner.core.owl.ObjectExactCardinalityRestriction; +import org.dllearner.core.owl.ObjectMaxCardinalityRestriction; +import org.dllearner.core.owl.ObjectMinCardinalityRestriction; +import org.dllearner.core.owl.ObjectSomeRestriction; +import org.dllearner.core.owl.ObjectValueRestriction; +import org.dllearner.core.owl.Thing; +import org.dllearner.core.owl.Union; +import org.dllearner.parser.KBParser; +import org.dllearner.parser.ParseException; + +/** + * Converter from DL-Learner descriptions to a corresponding SPARQL query + * to get all instances that are described by this description. + * @author Sebastian Knappe + * + */ +public class SparqlQueryDescriptionConvertVisitor implements DescriptionVisitor{ + + private String query=""; + + private int currentObject=0; + + public String getSparqlQuery() + { + query="SELECT ?subject\nWHERE {"+query; + query+="}\n"; + query+="LIMIT 5"; + return query; + } + + public static String getSparqlQuery(Description description) + { + SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); + description.accept(visitor); + return visitor.getSparqlQuery(); + } + + /** + * Used for testing the Sparql Query converter. + * + * @param args + */ + public static void main(String[] args) { + try { + Description d = KBParser.parseConcept("EXISTS \"http://dbpedia.org/property/disambiguates\".TOP"); + String query = SparqlQueryDescriptionConvertVisitor.getSparqlQuery(d); + System.out.println(d); + System.out.println(query); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Negation) + */ + public void visit(Negation description) { + System.out.println("Negation"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectAllRestriction) + */ + public void visit(ObjectAllRestriction description) { + System.out.println("ObjectAllRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectSomeRestriction) + */ + public void visit(ObjectSomeRestriction description) { + System.out.println("ObjectSomeRestriction"); + query+="?"+description.getSparqlVar()+" <"+description.getRole()+"> ?object"+currentObject+"."; + description.getChild(0).setSparqlVar("object"+currentObject); + currentObject++; + description.getChild(0).accept(this); + System.out.println(description.getRole()); + System.out.println(description.getChild(0)); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Nothing) + */ + public void visit(Nothing description) { + System.out.println("Nothing"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Thing) + */ + public void visit(Thing description) { + System.out.println("Thing"); + + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Intersection) + */ + public void visit(Intersection description) { + System.out.println("Intersection"); + description.getChild(0).accept(this); + query+="."; + description.getChild(1).accept(this); + query+="."; + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Union) + */ + public void visit(Union description) { + System.out.println("Union"); + query+="{"; + description.getChild(0).accept(this); + query+="} UNION {"; + description.getChild(1).accept(this); + query+="}"; + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMinCardinalityRestriction) + */ + public void visit(ObjectMinCardinalityRestriction description) { + System.out.println("ObjectMinCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectExactCardinalityRestriction) + */ + public void visit(ObjectExactCardinalityRestriction description) { + System.out.println("ObjectExactCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMaxCardinalityRestriction) + */ + public void visit(ObjectMaxCardinalityRestriction description) { + System.out.println("ObjectMaxCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectValueRestriction) + */ + public void visit(ObjectValueRestriction description) { + System.out.println("ObjectValueRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeValueRestriction) + */ + public void visit(DatatypeValueRestriction description) { + System.out.println("DatatypeValueRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.NamedClass) + */ + public void visit(NamedClass description) { + System.out.println("NamedClass"); + query+="?"+description.getSparqlVar()+" a <"+description.getName()+">"; + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.algorithms.gp.ADC) + */ + public void visit(ADC description) { + System.out.println("ADC"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMinCardinalityRestriction) + */ + public void visit(DatatypeMinCardinalityRestriction description) { + System.out.println("DatatypeMinCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeExactCardinalityRestriction) + */ + public void visit(DatatypeExactCardinalityRestriction description) { + System.out.println("DatatypeExactCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMaxCardinalityRestriction) + */ + public void visit(DatatypeMaxCardinalityRestriction description) { + System.out.println("DatatypeMaxCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeSomeRestriction) + */ + public void visit(DatatypeSomeRestriction description) { + System.out.println("DatatypeSomeRestriction"); + } +} Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-03-25 19:11:32 UTC (rev 725) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-03-26 13:41:24 UTC (rev 726) @@ -56,6 +56,7 @@ import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.kb.sparql.SparqlQueryException; import org.dllearner.kb.sparql.SparqlQueryThreaded; import org.dllearner.learningproblems.PosNegDefinitionLP; @@ -590,6 +591,13 @@ } @WebMethod + public String getSparqlForConcept(int id) throws ClientNotKnownException { + ClientState state = getState(id); + Description solution=state.getLearningAlgorithm().getBestSolution(); + return SparqlQueryDescriptionConvertVisitor.getSparqlQuery(solution); + } + + @WebMethod public void debug(String deb) { System.out.println(deb); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-03-25 19:09:25
|
Revision: 724 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=724&view=rev Author: kurzum Date: 2008-03-25 12:08:48 -0700 (Tue, 25 Mar 2008) Log Message: ----------- last commit failed, maybe Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/KRK.java Modified: trunk/src/dl-learner/org/dllearner/examples/KRK.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-03-25 19:05:07 UTC (rev 723) +++ trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-03-25 19:08:48 UTC (rev 724) @@ -471,7 +471,7 @@ collect1 = ""; collect2 = ""; } - + collect1 = ""; collect1 = ""; for (String key : classToInd.keySet()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-03-25 19:06:46
|
Revision: 723 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=723&view=rev Author: kurzum Date: 2008-03-25 12:05:07 -0700 (Tue, 25 Mar 2008) Log Message: ----------- krk source Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/KRK.java Modified: trunk/src/dl-learner/org/dllearner/examples/KRK.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-03-25 14:28:25 UTC (rev 722) +++ trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-03-25 19:05:07 UTC (rev 723) @@ -48,7 +48,7 @@ // FLAGS // static boolean useInverse = false; - //dependent, love and marriage, horse and carriage + // dependent, love and marriage, horse and carriage static boolean useTripleSubProps = useInverse && false; static URI ontologyURI = URI.create("http://www.test.de/test"); @@ -471,6 +471,31 @@ collect1 = ""; collect2 = ""; } + + collect1 = ""; + collect1 = ""; + for (String key : classToInd.keySet()) { + + SortedSet<String> tmpset = classToInd.get(key); + + if (key.equals("ZERO")) { + collect1 += "/**" + key + "**/\n"; + for (String individuals : tmpset) { + collect1 += "+\"" + individuals + "\"\n"; + } + + continue; + } else { + collect2 += "/**" + key + "**/\n"; + for (String individuals : tmpset) { + collect2 += "-\"" + individuals + "\"\n"; + } + } + + } + writeToFile("examples/krk/examples_for_ZERO_and_Rest.txt", collect1 + + "\n\n" + collect2 + "\n"); + } protected static void writeOWLFile(String filename) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-03-25 14:28:40
|
Revision: 722 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=722&view=rev Author: kurzum Date: 2008-03-25 07:28:25 -0700 (Tue, 25 Mar 2008) Log Message: ----------- some small fixes and changes Modified Paths: -------------- trunk/bin/quickstart.bat trunk/examples/krk/test_ZERO_ONE.owl trunk/examples/krk/test_ZERO_ONE_fastInstance.conf trunk/src/dl-learner/org/dllearner/examples/KRK.java Added Paths: ----------- trunk/examples/krk/test_ONE_ZERO_fastInstance.conf Modified: trunk/bin/quickstart.bat =================================================================== --- trunk/bin/quickstart.bat 2008-03-23 20:11:36 UTC (rev 721) +++ trunk/bin/quickstart.bat 2008-03-25 14:28:25 UTC (rev 722) @@ -1 +1 @@ -java -cp .;.\lib\dig1.1-xmlbeans.jar;.\lib\fact\FaCT++OWLAPI-v1.1.10+.jar;.\lib\jena\antlr-2.7.5.jar;.\lib\jena\arq.jar;.\lib\jena\commons-logging-1.1.jar;.\lib\jena\concurrent.jar;.\lib\jena\icu4j_3_4.jar;.\lib\jena\iri.jar;.\lib\jena\jena.jar;.\lib\jena\json.jar;.\lib\jena\xercesImpl.jar;.\lib\junit-4.4.jar;.\lib\log4j.jar;.\lib\owlapi\antlr-runtime-3.0.jar;.\lib\owlapi\commons-lang-2.2.jar;.\lib\owlapi\owlapi-api.jar;.\lib\owlapi\owlapi-apibinding.jar;.\lib\owlapi\owlapi-change.jar;.\lib\owlapi\owlapi-debugging.jar;.\lib\owlapi\owlapi-dig1_1.jar;.\lib\owlapi\owlapi-functionalparser.jar;.\lib\owlapi\owlapi-functionalrenderer.jar;.\lib\owlapi\owlapi-impl.jar;.\lib\owlapi\owlapi-krssparser.jar;.\lib\owlapi\owlapi-mansyntaxparser.jar;.\lib\owlapi\owlapi-mansyntaxrenderer.jar;.\lib\owlapi\owlapi-metrics.jar;.\lib\owlapi\owlapi-oboparser.jar;.\lib\owlapi\owlapi-owlxmlparser.jar;.\lib\owlapi\owlapi-owlxmlrenderer.jar;.\lib\owlapi\owlapi-rdfapi.jar;.\lib\owlapi\owlapi-rdfxmlparser.jar;.\lib\owlapi\owlapi-rdfxmlrenderer.jar;.\lib\owlapi\owlapi-util.jar;.\lib\pellet\aterm-java-1.6.jar;.\lib\pellet\pellet.jar;.\lib\pellet\relaxngDatatype.jar;.\lib\pellet\xsdlib.jar;.\lib\xbean.jar;.\lib\dllearner.jar org.dllearner.cli.QuickStart \ No newline at end of file +java -Xmx1024m -cp .;.\lib\dig1.1-xmlbeans.jar;.\lib\fact\FaCT++OWLAPI-v1.1.10+.jar;.\lib\jena\antlr-2.7.5.jar;.\lib\jena\arq.jar;.\lib\jena\commons-logging-1.1.jar;.\lib\jena\concurrent.jar;.\lib\jena\icu4j_3_4.jar;.\lib\jena\iri.jar;.\lib\jena\jena.jar;.\lib\jena\json.jar;.\lib\jena\xercesImpl.jar;.\lib\junit-4.4.jar;.\lib\log4j.jar;.\lib\owlapi\antlr-runtime-3.0.jar;.\lib\owlapi\commons-lang-2.2.jar;.\lib\owlapi\owlapi-api.jar;.\lib\owlapi\owlapi-apibinding.jar;.\lib\owlapi\owlapi-change.jar;.\lib\owlapi\owlapi-debugging.jar;.\lib\owlapi\owlapi-dig1_1.jar;.\lib\owlapi\owlapi-functionalparser.jar;.\lib\owlapi\owlapi-functionalrenderer.jar;.\lib\owlapi\owlapi-impl.jar;.\lib\owlapi\owlapi-krssparser.jar;.\lib\owlapi\owlapi-mansyntaxparser.jar;.\lib\owlapi\owlapi-mansyntaxrenderer.jar;.\lib\owlapi\owlapi-metrics.jar;.\lib\owlapi\owlapi-oboparser.jar;.\lib\owlapi\owlapi-owlxmlparser.jar;.\lib\owlapi\owlapi-owlxmlrenderer.jar;.\lib\owlapi\owlapi-rdfapi.jar;.\lib\owlapi\owlapi-rdfxmlparser.jar;.\lib\owlapi\owlapi-rdfxmlrenderer.jar;.\lib\owlapi\owlapi-util.jar;.\lib\pellet\aterm-java-1.6.jar;.\lib\pellet\pellet.jar;.\lib\pellet\relaxngDatatype.jar;.\lib\pellet\xsdlib.jar;.\lib\xbean.jar;.\lib\dllearner.jar org.dllearner.cli.QuickStart \ No newline at end of file Added: trunk/examples/krk/test_ONE_ZERO_fastInstance.conf =================================================================== --- trunk/examples/krk/test_ONE_ZERO_fastInstance.conf (rev 0) +++ trunk/examples/krk/test_ONE_ZERO_fastInstance.conf 2008-03-25 14:28:25 UTC (rev 722) @@ -0,0 +1,148 @@ +/* +DEBUG - --- loop 4290 started --- +INFO - best node EXISTS "hasPiece".EXISTS "hasLowerRankThan".("WRook" AND ALL "fileDistanceLessThan1"."WKing") [acc:100% h:0,853 q:0p-0n (REASONER), he:8 c:0] +INFO - +solutions: +INFO - EXISTS "http://www.test.de/test#hasPiece".EXISTS "http://www.test.de/test#hasLowerRankThan".("http://www.test.de/test#WRook" AND ALL "http://www.test.de/test#fileDistanceLessThan1"."http://www.test.de/test#WKing") (length 9, depth 5) +DEBUG - size of candidate set: 27319 +DEBUG - properness tests (reasoner/short concept/too weak list): 0/3/228 +DEBUG - concept tests (reasoner/too weak list/overly general list/redundant concepts): 14694/228/14149/3233 +INFO - Algorithm terminated succesfully. +number of retrievals: 16 +retrieval reasoning time: 0ms ( 0ms per retrieval) +number of instance checks: 1381888 (0 multiple) +instance check reasoning time: 12s 280ms ( 0ms per instance check) +subsumption hierarchy queries: 211 +(complex) subsumption checks: 22 (0 multiple) +subsumption reasoning time: 40ms ( 1ms per subsumption check) +overall reasoning time: 12s 320ms (41,847% of overall runtime) +overall algorithm runtime: 29s 442ms + + +EXISTS "hasPiece". + EXISTS "hasLowerRankThan". + ("WRook" AND ALL "fileDistanceLessThan1"."WKing") + +[acc:100% h:0,853 q:0p-0n (REASONER), he:8 c:0] + + +*/ + +import("test_ZERO_ONE.owl"); +refexamples.ignoredConcepts={ +"http://www.test.de/test#ONE", +"http://www.test.de/test#ZERO"}; + +//problem = posOnlyDefinition; + +algorithm = refexamples; +//algorithm = refinement; +//refinement.heuristic=flexible; +reasoner=fastInstanceChecker; ++"http://www.test.de/test#game100" ++"http://www.test.de/test#game101" ++"http://www.test.de/test#game102" ++"http://www.test.de/test#game103" ++"http://www.test.de/test#game104" ++"http://www.test.de/test#game105" ++"http://www.test.de/test#game28" ++"http://www.test.de/test#game29" ++"http://www.test.de/test#game30" ++"http://www.test.de/test#game31" ++"http://www.test.de/test#game32" ++"http://www.test.de/test#game33" ++"http://www.test.de/test#game34" ++"http://www.test.de/test#game35" ++"http://www.test.de/test#game36" ++"http://www.test.de/test#game37" ++"http://www.test.de/test#game38" ++"http://www.test.de/test#game39" ++"http://www.test.de/test#game40" ++"http://www.test.de/test#game41" ++"http://www.test.de/test#game42" ++"http://www.test.de/test#game43" ++"http://www.test.de/test#game44" ++"http://www.test.de/test#game45" ++"http://www.test.de/test#game46" ++"http://www.test.de/test#game47" ++"http://www.test.de/test#game48" ++"http://www.test.de/test#game49" ++"http://www.test.de/test#game50" ++"http://www.test.de/test#game51" ++"http://www.test.de/test#game52" ++"http://www.test.de/test#game53" ++"http://www.test.de/test#game54" ++"http://www.test.de/test#game55" ++"http://www.test.de/test#game56" ++"http://www.test.de/test#game57" ++"http://www.test.de/test#game58" ++"http://www.test.de/test#game59" ++"http://www.test.de/test#game60" ++"http://www.test.de/test#game61" ++"http://www.test.de/test#game62" ++"http://www.test.de/test#game63" ++"http://www.test.de/test#game64" ++"http://www.test.de/test#game65" ++"http://www.test.de/test#game66" ++"http://www.test.de/test#game67" ++"http://www.test.de/test#game68" ++"http://www.test.de/test#game69" ++"http://www.test.de/test#game70" ++"http://www.test.de/test#game71" ++"http://www.test.de/test#game72" ++"http://www.test.de/test#game73" ++"http://www.test.de/test#game74" ++"http://www.test.de/test#game75" ++"http://www.test.de/test#game76" ++"http://www.test.de/test#game77" ++"http://www.test.de/test#game78" ++"http://www.test.de/test#game79" ++"http://www.test.de/test#game80" ++"http://www.test.de/test#game81" ++"http://www.test.de/test#game82" ++"http://www.test.de/test#game83" ++"http://www.test.de/test#game84" ++"http://www.test.de/test#game85" ++"http://www.test.de/test#game86" ++"http://www.test.de/test#game87" ++"http://www.test.de/test#game88" ++"http://www.test.de/test#game89" ++"http://www.test.de/test#game90" ++"http://www.test.de/test#game91" ++"http://www.test.de/test#game92" ++"http://www.test.de/test#game93" ++"http://www.test.de/test#game94" ++"http://www.test.de/test#game95" ++"http://www.test.de/test#game96" ++"http://www.test.de/test#game97" ++"http://www.test.de/test#game98" ++"http://www.test.de/test#game99" + + +-"http://www.test.de/test#game1" +-"http://www.test.de/test#game10" +-"http://www.test.de/test#game11" +-"http://www.test.de/test#game12" +-"http://www.test.de/test#game13" +-"http://www.test.de/test#game14" +-"http://www.test.de/test#game15" +-"http://www.test.de/test#game16" +-"http://www.test.de/test#game17" +-"http://www.test.de/test#game18" +-"http://www.test.de/test#game19" +-"http://www.test.de/test#game2" +-"http://www.test.de/test#game20" +-"http://www.test.de/test#game21" +-"http://www.test.de/test#game22" +-"http://www.test.de/test#game23" +-"http://www.test.de/test#game24" +-"http://www.test.de/test#game25" +-"http://www.test.de/test#game26" +-"http://www.test.de/test#game27" +-"http://www.test.de/test#game3" +-"http://www.test.de/test#game4" +-"http://www.test.de/test#game5" +-"http://www.test.de/test#game6" +-"http://www.test.de/test#game7" +-"http://www.test.de/test#game8" +-"http://www.test.de/test#game9" \ No newline at end of file Modified: trunk/examples/krk/test_ZERO_ONE.owl =================================================================== --- trunk/examples/krk/test_ZERO_ONE.owl 2008-03-23 20:11:36 UTC (rev 721) +++ trunk/examples/krk/test_ZERO_ONE.owl 2008-03-25 14:28:25 UTC (rev 722) @@ -135,7 +135,9 @@ <!-- http://www.test.de/test#fileDistanceLessThan1 --> <owl:ObjectProperty rdf:about="#fileDistanceLessThan1"> + <rdfs:range rdf:resource="#Piece"/> <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan2"/> + <rdfs:domain rdf:resource="#Piece"/> </owl:ObjectProperty> @@ -144,6 +146,8 @@ <owl:ObjectProperty rdf:about="#fileDistanceLessThan2"> <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan3"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> </owl:ObjectProperty> @@ -152,6 +156,8 @@ <owl:ObjectProperty rdf:about="#fileDistanceLessThan3"> <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan4"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> </owl:ObjectProperty> @@ -159,7 +165,9 @@ <!-- http://www.test.de/test#fileDistanceLessThan4 --> <owl:ObjectProperty rdf:about="#fileDistanceLessThan4"> + <rdfs:range rdf:resource="#Piece"/> <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan5"/> + <rdfs:domain rdf:resource="#Piece"/> </owl:ObjectProperty> @@ -167,6 +175,8 @@ <!-- http://www.test.de/test#fileDistanceLessThan5 --> <owl:ObjectProperty rdf:about="#fileDistanceLessThan5"> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan6"/> </owl:ObjectProperty> @@ -175,6 +185,8 @@ <!-- http://www.test.de/test#fileDistanceLessThan6 --> <owl:ObjectProperty rdf:about="#fileDistanceLessThan6"> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan7"/> </owl:ObjectProperty> @@ -184,13 +196,18 @@ <owl:ObjectProperty rdf:about="#fileDistanceLessThan7"> <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan8"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> </owl:ObjectProperty> <!-- http://www.test.de/test#fileDistanceLessThan8 --> - <owl:ObjectProperty rdf:about="#fileDistanceLessThan8"/> + <owl:ObjectProperty rdf:about="#fileDistanceLessThan8"> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> + </owl:ObjectProperty> @@ -223,14 +240,6 @@ - <!-- http://www.test.de/test#hasPieceInv --> - - <owl:ObjectProperty rdf:about="#hasPieceInv"> - <owl:inverseOf rdf:resource="#hasPiece"/> - </owl:ObjectProperty> - - - <!-- http://www.test.de/test#rankDistance0 --> <owl:ObjectProperty rdf:about="#rankDistance0"> @@ -330,6 +339,8 @@ <!-- http://www.test.de/test#rankDistanceLessThan1 --> <owl:ObjectProperty rdf:about="#rankDistanceLessThan1"> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan2"/> </owl:ObjectProperty> @@ -339,6 +350,8 @@ <owl:ObjectProperty rdf:about="#rankDistanceLessThan2"> <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan3"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> </owl:ObjectProperty> @@ -347,6 +360,8 @@ <owl:ObjectProperty rdf:about="#rankDistanceLessThan3"> <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan4"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> </owl:ObjectProperty> @@ -354,7 +369,9 @@ <!-- http://www.test.de/test#rankDistanceLessThan4 --> <owl:ObjectProperty rdf:about="#rankDistanceLessThan4"> + <rdfs:range rdf:resource="#Piece"/> <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan5"/> + <rdfs:domain rdf:resource="#Piece"/> </owl:ObjectProperty> @@ -363,6 +380,8 @@ <owl:ObjectProperty rdf:about="#rankDistanceLessThan5"> <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan6"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> </owl:ObjectProperty> @@ -371,6 +390,8 @@ <owl:ObjectProperty rdf:about="#rankDistanceLessThan6"> <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan7"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> </owl:ObjectProperty> @@ -378,14 +399,19 @@ <!-- http://www.test.de/test#rankDistanceLessThan7 --> <owl:ObjectProperty rdf:about="#rankDistanceLessThan7"> + <rdfs:domain rdf:resource="#Piece"/> <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan8"/> + <rdfs:range rdf:resource="#Piece"/> </owl:ObjectProperty> <!-- http://www.test.de/test#rankDistanceLessThan8 --> - <owl:ObjectProperty rdf:about="#rankDistanceLessThan8"/> + <owl:ObjectProperty rdf:about="#rankDistanceLessThan8"> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> @@ -1915,8 +1941,8 @@ <ONE rdf:about="#game36"> <rdf:type rdf:resource="#Game"/> <hasPiece rdf:resource="#wrook_b5_36"/> + <hasPiece rdf:resource="#bking_a1_36"/> <hasPiece rdf:resource="#wking_c2_36"/> - <hasPiece rdf:resource="#bking_a1_36"/> </ONE> @@ -2791,8 +2817,8 @@ <hasLowerRankThan rdf:resource="#wrook_h3_33"/> <hasLowerRankThan rdf:resource="#bking_a2_33"/> <fileDistance2 rdf:resource="#bking_a2_33"/> + <fileDistance5 rdf:resource="#wrook_h3_33"/> <hasLowerFileThan rdf:resource="#wrook_h3_33"/> - <fileDistance5 rdf:resource="#wrook_h3_33"/> <rankDistance2 rdf:resource="#wrook_h3_33"/> <rankDistance1 rdf:resource="#bking_a2_33"/> </WKing> @@ -2924,8 +2950,8 @@ <WKing rdf:about="#wking_c2_17"> <fileDistance2 rdf:resource="#wrook_a8_17"/> <hasLowerRankThan rdf:resource="#wrook_a8_17"/> + <fileDistance2 rdf:resource="#bking_a2_17"/> <rankDistance6 rdf:resource="#wrook_a8_17"/> - <fileDistance2 rdf:resource="#bking_a2_17"/> <rankDistance0 rdf:resource="#bking_a2_17"/> </WKing> @@ -3237,8 +3263,8 @@ <WKing rdf:about="#wking_c2_58"> <hasLowerFileThan rdf:resource="#wrook_e6_58"/> + <rankDistance1 rdf:resource="#bking_a1_58"/> <fileDistance2 rdf:resource="#bking_a1_58"/> - <rankDistance1 rdf:resource="#bking_a1_58"/> <fileDistance2 rdf:resource="#wrook_e6_58"/> <hasLowerRankThan rdf:resource="#wrook_e6_58"/> <rankDistance4 rdf:resource="#wrook_e6_58"/> @@ -3791,8 +3817,8 @@ <rankDistance2 rdf:resource="#bking_d1_93"/> <fileDistance2 rdf:resource="#wrook_e8_93"/> <fileDistance1 rdf:resource="#bking_d1_93"/> + <hasLowerFileThan rdf:resource="#wrook_e8_93"/> <hasLowerRankThan rdf:resource="#wrook_e8_93"/> - <hasLowerFileThan rdf:resource="#wrook_e8_93"/> </WKing> @@ -4231,8 +4257,8 @@ <!-- http://www.test.de/test#wrook_a8_16 --> <WRook rdf:about="#wrook_a8_16"> + <fileDistance0 rdf:resource="#bking_a1_16"/> <rankDistance7 rdf:resource="#bking_a1_16"/> - <fileDistance0 rdf:resource="#bking_a1_16"/> <hasLowerFileThan rdf:resource="#wking_c2_16"/> </WRook> Modified: trunk/examples/krk/test_ZERO_ONE_fastInstance.conf =================================================================== --- trunk/examples/krk/test_ZERO_ONE_fastInstance.conf 2008-03-23 20:11:36 UTC (rev 721) +++ trunk/examples/krk/test_ZERO_ONE_fastInstance.conf 2008-03-25 14:28:25 UTC (rev 722) @@ -31,6 +31,41 @@ [acc:100% h:0,47 q:0p-0n (REASONER), he:21 c:0] + +NACH Ver\xE4nderung: + +DEBUG - --- loop 122500 started --- +INFO - best node ALL "hasPiece".(EXISTS "fileDistanceLessThan6".((NOT "WKing") AND ("WRook" OR EXISTS "fileDistanceLessThan2".TOP)) AND ALL "fileDistance1"."WRook") [acc:100% h:0,663 q:0p-0n (REASONER), he:15 c:0] +INFO - +solutions: +INFO - ALL "http://www.test.de/test#hasPiece".(EXISTS "http://www.test.de/test#fileDistanceLessThan6".((NOT "http://www.test.de/test#WKing") AND ("http://www.test.de/test#WRook" OR EXISTS "http://www.test.de/test#fileDistanceLessThan2".TOP)) AND ALL "http://www.test.de/test#fileDistance1"."http://www.test.de/test#WRook") (length 16, depth 7) +DEBUG - size of candidate set: 174499 +DEBUG - properness tests (reasoner/short concept/too weak list): 0/1468/6803 +DEBUG - concept tests (reasoner/too weak list/overly general list/redundant concepts): 358746/6803/14149/180000 +INFO - Algorithm terminated succesfully. +number of retrievals: 22 +retrieval reasoning time: 0ms ( 0ms per retrieval) +number of instance checks: 19728857 (0 multiple) +instance check reasoning time: 252s 200ms ( 0ms per instance check) +subsumption hierarchy queries: 75118 +(complex) subsumption checks: 22 (0 multiple) +subsumption reasoning time: 29ms ( 1ms per subsumption check) +overall reasoning time: 252s 230ms (42,747% of overall runtime) +overall algorithm runtime: 590s 49ms + + +ALL "hasPiece". + (EXISTS "fileDistanceLessThan6". + ( (NOT "WKing") AND + ("WRook" OR EXISTS "fileDistanceLessThan2".TOP) + ) + AND ALL "fileDistance1"."WRook") + + +[acc:100% h:0,663 q:0p-0n (REASONER), he:15 c:0] + + + */ import("test_ZERO_ONE.owl"); Modified: trunk/src/dl-learner/org/dllearner/examples/KRK.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-03-23 20:11:36 UTC (rev 721) +++ trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-03-25 14:28:25 UTC (rev 722) @@ -45,6 +45,12 @@ // FILES are letters // RANKS are numbers + // FLAGS + // + static boolean useInverse = false; + //dependent, love and marriage, horse and carriage + static boolean useTripleSubProps = useInverse && false; + static URI ontologyURI = URI.create("http://www.test.de/test"); // static SortedSet<String> fileSet = new TreeSet<String>(); // static SortedSet<String> rankSet = new TreeSet<String>(); @@ -64,11 +70,16 @@ static NamedClass Rank = getAtomicConcept("Rank"); static NamedClass Piece = getAtomicConcept("Piece"); - // static ObjectProperty hasRank = getRole("hasRank"); - // static ObjectProperty hasFile = getRole("hasFile"); static ObjectProperty hasPiece = getRole("hasPiece"); - static ObjectProperty hasPieceInv = getRole("hasPieceInv"); + static ObjectProperty hasWKing = getRole("hasWKing"); + static ObjectProperty hasWRook = getRole("hasWRook"); + static ObjectProperty hasBKing = getRole("hasBKing"); + static ObjectProperty hasPieceInv = getRole("hasGame"); + static ObjectProperty hasWKingInv = getRole("hasWKingInv"); + static ObjectProperty hasWRookInv = getRole("hasWRookInv"); + static ObjectProperty hasBKingInv = getRole("hasBKingInv"); + static ObjectProperty rankLessThan = getRole("hasLowerRankThan"); static ObjectProperty fileLessThan = getRole("hasLowerFileThan"); @@ -283,13 +294,38 @@ kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasPiece, Game)); kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasPiece, Piece)); - kb.addRBoxAxiom(new InverseObjectPropertyAxiom(hasPiece, hasPieceInv)); + if (useTripleSubProps) { + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasWKing, Game)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasWKing, WKing)); + + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasWRook, Game)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasWRook, WRook)); + + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasBKing, Game)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasBKing, BKing)); + } + + if (useInverse) { + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasPieceInv, Piece)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasPieceInv, Game)); + + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasWKingInv, WKing)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasWKingInv, Game)); + + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasWRookInv, WRook)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasWRookInv, Game)); + + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasBKingInv, BKing)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasBKingInv, Game)); + } + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(rankLessThan, Piece)); kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(rankLessThan, Piece)); kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(fileLessThan, Piece)); kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(fileLessThan, Piece)); + } static void finishBackgroundForRoles() { @@ -297,6 +333,25 @@ kb.addRBoxAxiom(new TransitiveObjectPropertyAxiom(rankLessThan)); kb.addRBoxAxiom(new TransitiveObjectPropertyAxiom(fileLessThan)); + if (useInverse) + // INVERSE + { + kb.addRBoxAxiom(new InverseObjectPropertyAxiom(hasPiece, + hasPieceInv)); + kb.addRBoxAxiom(new InverseObjectPropertyAxiom(hasWKing, + hasWKingInv)); + kb.addRBoxAxiom(new InverseObjectPropertyAxiom(hasWRook, + hasWRookInv)); + kb.addRBoxAxiom(new InverseObjectPropertyAxiom(hasBKing, + hasBKingInv)); + } + + if (useTripleSubProps) { + kb.addRBoxAxiom(new SubObjectPropertyAxiom(hasWKing, hasPiece)); + kb.addRBoxAxiom(new SubObjectPropertyAxiom(hasWRook, hasPiece)); + kb.addRBoxAxiom(new SubObjectPropertyAxiom(hasBKing, hasPiece)); + } + for (String oneRole : symmetricRoleSet) { kb.addRBoxAxiom(new SymmetricObjectPropertyAxiom(getRole(oneRole))); kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(getRole(oneRole), @@ -317,6 +372,16 @@ + (i - 1)), getRole("rankDistanceLessThan" + i))); kb.addRBoxAxiom(new SubObjectPropertyAxiom(getRole("fileDistance" + (i - 1)), getRole("fileDistanceLessThan" + i))); + + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom( + getRole("rankDistanceLessThan" + i), Piece)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom( + getRole("rankDistanceLessThan" + i), Piece)); + + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom( + getRole("fileDistanceLessThan" + i), Piece)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom( + getRole("fileDistanceLessThan" + i), Piece)); } // kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(rankLessThan, Piece)); @@ -340,42 +405,39 @@ * * kb.addRBoxAxiom(new InverseObjectPropertyAxiom(hasRank,hasRankInv)); * kb.addRBoxAxiom(new InverseObjectPropertyAxiom(hasFile,hasFileInv)); - * kb.addRBoxAxiom(new InverseObjectPropertyAxiom(lessThan,lessThanInv)); - * // assigning lessthan to file Iterator<String> it = fileSet.iterator(); + * kb.addRBoxAxiom(new InverseObjectPropertyAxiom(lessThan,lessThanInv)); // + * assigning lessthan to file Iterator<String> it = fileSet.iterator(); * Individual current = getIndividual(it.next()); Individual next; while * (it.hasNext()) { next = getIndividual(it.next()); kb .addABoxAxiom(new - * ObjectPropertyAssertion(lessThan, current, next)); current = next; - * } // assigning lessthan to rank it = rankSet.iterator(); current = + * ObjectPropertyAssertion(lessThan, current, next)); current = next; } // + * assigning lessthan to rank it = rankSet.iterator(); current = * getIndividual(it.next()); next = null; while (it.hasNext()) { next = * getIndividual(it.next()); kb .addABoxAxiom(new - * ObjectPropertyAssertion(lessThan, current, next)); current = next; - * } - * // new PropertyRangeAxiom(rank, (PropertyRange) nc[5]); + * ObjectPropertyAssertion(lessThan, current, next)); current = next; } // + * new PropertyRangeAxiom(rank, (PropertyRange) nc[5]); * * String str = "hasDistanceOf"; String str2 = "hasDistanceLessThan"; // * ObjectProperty tmp; String[] rankarray = new String[8]; String[] * filearray = new String[8]; rankSet.toArray(rankarray); - * fileSet.toArray(filearray); - * // assigning has DistanceOf to Rank and File for (int count = 0; count < - * filearray.length; count++) { for (int inner = count + 1, dist = 1; inner < - * filearray.length; inner++, dist++) { // ObjectProperty op = - * getRole(str+inner); kb.addABoxAxiom(getRoleAssertion(str + dist, - * rankarray[count], rankarray[inner])); - * kb.addABoxAxiom(getRoleAssertion(str + dist, filearray[count], - * filearray[inner])); - * } kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(getRole(str+(count+1)), - * new Union(Rank,File))); kb.addRBoxAxiom(new - * ObjectPropertyRangeAxiom(getRole(str+(count+1)), new Union(Rank,File))); - * kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(getRole(str2+(count+1)), - * new Union(Rank,File))); kb.addRBoxAxiom(new + * fileSet.toArray(filearray); // assigning has DistanceOf to Rank and File + * for (int count = 0; count < filearray.length; count++) { for (int inner = + * count + 1, dist = 1; inner < filearray.length; inner++, dist++) { // + * ObjectProperty op = getRole(str+inner); + * kb.addABoxAxiom(getRoleAssertion(str + dist, rankarray[count], + * rankarray[inner])); kb.addABoxAxiom(getRoleAssertion(str + dist, + * filearray[count], filearray[inner])); } kb.addRBoxAxiom(new + * ObjectPropertyDomainAxiom(getRole(str+(count+1)), new Union(Rank,File))); + * kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(getRole(str+(count+1)), new + * Union(Rank,File))); kb.addRBoxAxiom(new + * ObjectPropertyDomainAxiom(getRole(str2+(count+1)), new + * Union(Rank,File))); kb.addRBoxAxiom(new * ObjectPropertyRangeAxiom(getRole(str2+(count+1)), new Union(Rank,File))); } // * make it symmetric + subproperty of for (int count = 1; count < 8; * count++) { kb.addRBoxAxiom(new SymmetricObjectPropertyAxiom(getRole(str + * count))); kb.addRBoxAxiom(new SubObjectPropertyAxiom(getRole(str + * count), getRole(str2 + (count + 1)))); kb.addRBoxAxiom(new * SubObjectPropertyAxiom(getRole(str2 + count), getRole(str2 + (count + - * 1)))); } - * } + * 1)))); } } */ public static String[] tokenize(String s) { StringTokenizer st = new StringTokenizer(s, ","); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ton...@us...> - 2008-03-23 20:11:39
|
Revision: 721 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=721&view=rev Author: tonytacker Date: 2008-03-23 13:11:36 -0700 (Sun, 23 Mar 2008) Log Message: ----------- some changes for tree Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/RunPanel.java trunk/src/dl-learner/org/dllearner/gui/StartGUI.java trunk/src/dl-learner/org/dllearner/gui/ThreadStatistics.java trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java Modified: trunk/src/dl-learner/org/dllearner/gui/RunPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-03-20 20:16:04 UTC (rev 720) +++ trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-03-23 20:11:36 UTC (rev 721) @@ -266,7 +266,7 @@ * * @param a * @param b - * @return + * @return string that shows percent */ public String Percent(Long a, Long b) { if (a != null && b != null) { Modified: trunk/src/dl-learner/org/dllearner/gui/StartGUI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/StartGUI.java 2008-03-20 20:16:04 UTC (rev 720) +++ trunk/src/dl-learner/org/dllearner/gui/StartGUI.java 2008-03-23 20:11:36 UTC (rev 721) @@ -70,8 +70,9 @@ this.setSize(800, 600); // set icon - setIconImage(java.awt.Toolkit.getDefaultToolkit().getImage( - this.getClass().getResource("icon.gif"))); + if (this.getClass().getResource("icon.gif") != null) + setIconImage(java.awt.Toolkit.getDefaultToolkit().getImage( + this.getClass().getResource("icon.gif"))); tab0 = new KnowledgeSourcePanel(config, this); tab1 = new ReasonerPanel(config, this); Modified: trunk/src/dl-learner/org/dllearner/gui/ThreadStatistics.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/ThreadStatistics.java 2008-03-20 20:16:04 UTC (rev 720) +++ trunk/src/dl-learner/org/dllearner/gui/ThreadStatistics.java 2008-03-23 20:11:36 UTC (rev 721) @@ -40,7 +40,7 @@ */ @Override public void run() { - this.setPriority(4); + //this.setPriority(4); if (config.getThreadIsRunning()) { try { sleep(1000); // sleep 1 second Modified: trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-03-20 20:16:04 UTC (rev 720) +++ trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-03-23 20:11:36 UTC (rev 721) @@ -21,37 +21,56 @@ */ import javax.swing.*; +import javax.swing.event.TreeExpansionEvent; +import javax.swing.event.TreeExpansionListener; import org.dllearner.algorithms.refexamples.*; + /** * TreeWindow * * @author Tilo Hielscher */ -public class TreeWindow extends JFrame { +public class TreeWindow extends JFrame implements TreeExpansionListener { private static final long serialVersionUID = -5807192061389763835L; @SuppressWarnings("unused") private Config config; - + private EBNodeTreeModel ebNodeModel; + private ExampleBasedNode rootNode; + public TreeWindow(Config config) { this.config = config; this.setTitle("DL-Learner Tree"); this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); this.setLocationByPlatform(true); - this.setSize(300, 400); + this.setSize(640, 300); // set icon - setIconImage(java.awt.Toolkit.getDefaultToolkit().getImage( - this.getClass().getResource("icon.gif"))); + if (this.getClass().getResource("icon.gif") != null) + setIconImage(java.awt.Toolkit.getDefaultToolkit().getImage( + this.getClass().getResource("icon.gif"))); // tree model if (config.getLearningAlgorithm() instanceof ExampleBasedROLComponent) { ExampleBasedROLComponent ebrol = (ExampleBasedROLComponent) config .getLearningAlgorithm(); - ExampleBasedNode rootNode = ebrol.getStartNode(); - JTree tree = new JTree(new EBNodeTreeModel(rootNode)); + this.rootNode = ebrol.getStartNode(); + + System.out.println("childs1: " + rootNode.getChildren()); + + this.ebNodeModel = new EBNodeTreeModel(rootNode); + + // childrens to treeModel + Object first = ebNodeModel.getChild(rootNode, 0); + System.out.println("getIndexOfChild: " + ebNodeModel.getIndexOfChild(rootNode, first)); + + //System.out.println("childs2: " + ebNodeModel.getChildren((ExampleBasedNode) first)); + + + JTree tree = new JTree(ebNodeModel); + tree.addTreeExpansionListener(this); this.add(new JScrollPane(tree)); } @@ -60,4 +79,30 @@ this.setVisible(true); } + /* (non-Javadoc) + * @see javax.swing.event.TreeExpansionListener#treeCollapsed(javax.swing.event.TreeExpansionEvent) + */ + @Override + public void treeCollapsed(TreeExpansionEvent event) { + System.out.println("collapsed"); + } + + /* (non-Javadoc) + * @see javax.swing.event.TreeExpansionListener#treeExpanded(javax.swing.event.TreeExpansionEvent) + */ + @Override + public void treeExpanded(TreeExpansionEvent event) { + System.out.println("expanded: " + event.getPath()); + //Object path = event.getPath(); + + //System.out.println("childcount: " + ebNodeModel.getChildCount(path)); + + + //ebNodeModel.getChild(event.getSource(), 0); + System.out.println("getIndexOfChild: " + ebNodeModel.getIndexOfChild(rootNode, event.getPath())); + + + ebNodeModel.getChild(rootNode, 9); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-03-20 20:16:07
|
Revision: 720 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=720&view=rev Author: kurzum Date: 2008-03-20 13:16:04 -0700 (Thu, 20 Mar 2008) Log Message: ----------- working refexamples with fastInstanceChecker Modified Paths: -------------- trunk/examples/krk/krkopt.data trunk/src/dl-learner/org/dllearner/examples/KRK.java Added Paths: ----------- trunk/examples/krk/examples_for_ONE.txt trunk/examples/krk/examples_for_ZERO.txt trunk/examples/krk/test_ZERO_ONE.owl trunk/examples/krk/test_ZERO_ONE_fastInstance.conf trunk/examples/krk/test_ZERO_ONE_refinement.conf Property Changed: ---------------- trunk/examples/krk/ Property changes on: trunk/examples/krk ___________________________________________________________________ Name: svn:ignore + generic.conf Added: trunk/examples/krk/examples_for_ONE.txt =================================================================== --- trunk/examples/krk/examples_for_ONE.txt (rev 0) +++ trunk/examples/krk/examples_for_ONE.txt 2008-03-20 20:16:04 UTC (rev 720) @@ -0,0 +1,159 @@ ++"http://www.test.de/test#game100" ++"http://www.test.de/test#game101" ++"http://www.test.de/test#game102" ++"http://www.test.de/test#game103" ++"http://www.test.de/test#game104" ++"http://www.test.de/test#game105" ++"http://www.test.de/test#game28" ++"http://www.test.de/test#game29" ++"http://www.test.de/test#game30" ++"http://www.test.de/test#game31" ++"http://www.test.de/test#game32" ++"http://www.test.de/test#game33" ++"http://www.test.de/test#game34" ++"http://www.test.de/test#game35" ++"http://www.test.de/test#game36" ++"http://www.test.de/test#game37" ++"http://www.test.de/test#game38" ++"http://www.test.de/test#game39" ++"http://www.test.de/test#game40" ++"http://www.test.de/test#game41" ++"http://www.test.de/test#game42" ++"http://www.test.de/test#game43" ++"http://www.test.de/test#game44" ++"http://www.test.de/test#game45" ++"http://www.test.de/test#game46" ++"http://www.test.de/test#game47" ++"http://www.test.de/test#game48" ++"http://www.test.de/test#game49" ++"http://www.test.de/test#game50" ++"http://www.test.de/test#game51" ++"http://www.test.de/test#game52" ++"http://www.test.de/test#game53" ++"http://www.test.de/test#game54" ++"http://www.test.de/test#game55" ++"http://www.test.de/test#game56" ++"http://www.test.de/test#game57" ++"http://www.test.de/test#game58" ++"http://www.test.de/test#game59" ++"http://www.test.de/test#game60" ++"http://www.test.de/test#game61" ++"http://www.test.de/test#game62" ++"http://www.test.de/test#game63" ++"http://www.test.de/test#game64" ++"http://www.test.de/test#game65" ++"http://www.test.de/test#game66" ++"http://www.test.de/test#game67" ++"http://www.test.de/test#game68" ++"http://www.test.de/test#game69" ++"http://www.test.de/test#game70" ++"http://www.test.de/test#game71" ++"http://www.test.de/test#game72" ++"http://www.test.de/test#game73" ++"http://www.test.de/test#game74" ++"http://www.test.de/test#game75" ++"http://www.test.de/test#game76" ++"http://www.test.de/test#game77" ++"http://www.test.de/test#game78" ++"http://www.test.de/test#game79" ++"http://www.test.de/test#game80" ++"http://www.test.de/test#game81" ++"http://www.test.de/test#game82" ++"http://www.test.de/test#game83" ++"http://www.test.de/test#game84" ++"http://www.test.de/test#game85" ++"http://www.test.de/test#game86" ++"http://www.test.de/test#game87" ++"http://www.test.de/test#game88" ++"http://www.test.de/test#game89" ++"http://www.test.de/test#game90" ++"http://www.test.de/test#game91" ++"http://www.test.de/test#game92" ++"http://www.test.de/test#game93" ++"http://www.test.de/test#game94" ++"http://www.test.de/test#game95" ++"http://www.test.de/test#game96" ++"http://www.test.de/test#game97" ++"http://www.test.de/test#game98" ++"http://www.test.de/test#game99" + + +-"http://www.test.de/test#game100" +-"http://www.test.de/test#game101" +-"http://www.test.de/test#game102" +-"http://www.test.de/test#game103" +-"http://www.test.de/test#game104" +-"http://www.test.de/test#game105" +-"http://www.test.de/test#game28" +-"http://www.test.de/test#game29" +-"http://www.test.de/test#game30" +-"http://www.test.de/test#game31" +-"http://www.test.de/test#game32" +-"http://www.test.de/test#game33" +-"http://www.test.de/test#game34" +-"http://www.test.de/test#game35" +-"http://www.test.de/test#game36" +-"http://www.test.de/test#game37" +-"http://www.test.de/test#game38" +-"http://www.test.de/test#game39" +-"http://www.test.de/test#game40" +-"http://www.test.de/test#game41" +-"http://www.test.de/test#game42" +-"http://www.test.de/test#game43" +-"http://www.test.de/test#game44" +-"http://www.test.de/test#game45" +-"http://www.test.de/test#game46" +-"http://www.test.de/test#game47" +-"http://www.test.de/test#game48" +-"http://www.test.de/test#game49" +-"http://www.test.de/test#game50" +-"http://www.test.de/test#game51" +-"http://www.test.de/test#game52" +-"http://www.test.de/test#game53" +-"http://www.test.de/test#game54" +-"http://www.test.de/test#game55" +-"http://www.test.de/test#game56" +-"http://www.test.de/test#game57" +-"http://www.test.de/test#game58" +-"http://www.test.de/test#game59" +-"http://www.test.de/test#game60" +-"http://www.test.de/test#game61" +-"http://www.test.de/test#game62" +-"http://www.test.de/test#game63" +-"http://www.test.de/test#game64" +-"http://www.test.de/test#game65" +-"http://www.test.de/test#game66" +-"http://www.test.de/test#game67" +-"http://www.test.de/test#game68" +-"http://www.test.de/test#game69" +-"http://www.test.de/test#game70" +-"http://www.test.de/test#game71" +-"http://www.test.de/test#game72" +-"http://www.test.de/test#game73" +-"http://www.test.de/test#game74" +-"http://www.test.de/test#game75" +-"http://www.test.de/test#game76" +-"http://www.test.de/test#game77" +-"http://www.test.de/test#game78" +-"http://www.test.de/test#game79" +-"http://www.test.de/test#game80" +-"http://www.test.de/test#game81" +-"http://www.test.de/test#game82" +-"http://www.test.de/test#game83" +-"http://www.test.de/test#game84" +-"http://www.test.de/test#game85" +-"http://www.test.de/test#game86" +-"http://www.test.de/test#game87" +-"http://www.test.de/test#game88" +-"http://www.test.de/test#game89" +-"http://www.test.de/test#game90" +-"http://www.test.de/test#game91" +-"http://www.test.de/test#game92" +-"http://www.test.de/test#game93" +-"http://www.test.de/test#game94" +-"http://www.test.de/test#game95" +-"http://www.test.de/test#game96" +-"http://www.test.de/test#game97" +-"http://www.test.de/test#game98" +-"http://www.test.de/test#game99" + Added: trunk/examples/krk/examples_for_ZERO.txt =================================================================== --- trunk/examples/krk/examples_for_ZERO.txt (rev 0) +++ trunk/examples/krk/examples_for_ZERO.txt 2008-03-20 20:16:04 UTC (rev 720) @@ -0,0 +1,57 @@ ++"http://www.test.de/test#game1" ++"http://www.test.de/test#game10" ++"http://www.test.de/test#game11" ++"http://www.test.de/test#game12" ++"http://www.test.de/test#game13" ++"http://www.test.de/test#game14" ++"http://www.test.de/test#game15" ++"http://www.test.de/test#game16" ++"http://www.test.de/test#game17" ++"http://www.test.de/test#game18" ++"http://www.test.de/test#game19" ++"http://www.test.de/test#game2" ++"http://www.test.de/test#game20" ++"http://www.test.de/test#game21" ++"http://www.test.de/test#game22" ++"http://www.test.de/test#game23" ++"http://www.test.de/test#game24" ++"http://www.test.de/test#game25" ++"http://www.test.de/test#game26" ++"http://www.test.de/test#game27" ++"http://www.test.de/test#game3" ++"http://www.test.de/test#game4" ++"http://www.test.de/test#game5" ++"http://www.test.de/test#game6" ++"http://www.test.de/test#game7" ++"http://www.test.de/test#game8" ++"http://www.test.de/test#game9" + + +-"http://www.test.de/test#game1" +-"http://www.test.de/test#game10" +-"http://www.test.de/test#game11" +-"http://www.test.de/test#game12" +-"http://www.test.de/test#game13" +-"http://www.test.de/test#game14" +-"http://www.test.de/test#game15" +-"http://www.test.de/test#game16" +-"http://www.test.de/test#game17" +-"http://www.test.de/test#game18" +-"http://www.test.de/test#game19" +-"http://www.test.de/test#game2" +-"http://www.test.de/test#game20" +-"http://www.test.de/test#game21" +-"http://www.test.de/test#game22" +-"http://www.test.de/test#game23" +-"http://www.test.de/test#game24" +-"http://www.test.de/test#game25" +-"http://www.test.de/test#game26" +-"http://www.test.de/test#game27" +-"http://www.test.de/test#game3" +-"http://www.test.de/test#game4" +-"http://www.test.de/test#game5" +-"http://www.test.de/test#game6" +-"http://www.test.de/test#game7" +-"http://www.test.de/test#game8" +-"http://www.test.de/test#game9" + Modified: trunk/examples/krk/krkopt.data =================================================================== --- trunk/examples/krk/krkopt.data 2008-03-20 19:54:20 UTC (rev 719) +++ trunk/examples/krk/krkopt.data 2008-03-20 20:16:04 UTC (rev 720) @@ -1,3 +1,27 @@ +c,1,a,3,a,1,zero +c,1,a,4,a,1,zero +c,1,a,5,a,1,zero +c,1,a,6,a,1,zero +c,1,a,7,a,1,zero +c,1,a,8,a,1,zero +c,2,a,3,a,1,zero +c,2,a,4,a,1,zero +c,2,a,4,a,2,zero +c,2,a,5,a,1,zero +c,2,a,5,a,2,zero +c,2,a,6,a,1,zero +c,2,a,6,a,2,zero +c,2,a,7,a,1,zero +c,2,a,7,a,2,zero +c,2,a,8,a,1,zero +c,2,a,8,a,2,zero +c,3,a,1,c,1,zero +c,3,e,1,c,1,zero +c,3,f,1,c,1,zero +c,3,g,1,c,1,zero +c,3,h,1,c,1,zero +d,3,a,1,d,1,zero +d,3,b,1,d,1,zero d,3,f,1,d,1,zero d,3,g,1,d,1,zero d,3,h,1,d,1,zero @@ -3,3 +27,78 @@ c,1,c,3,a,2,one c,1,d,3,a,2,one -c,1,e,3,a,2,one \ No newline at end of file +c,1,e,3,a,2,one +c,1,f,3,a,2,one +c,1,g,3,a,2,one +c,1,h,3,a,2,one +c,2,b,3,a,2,one +c,2,b,4,a,1,one +c,2,b,5,a,1,one +c,2,b,6,a,1,one +c,2,b,7,a,1,one +c,2,b,8,a,1,one +c,2,c,3,a,2,one +c,2,c,4,a,1,one +c,2,c,4,a,3,one +c,2,c,5,a,1,one +c,2,c,6,a,1,one +c,2,c,7,a,1,one +c,2,c,8,a,1,one +c,2,d,3,a,2,one +c,2,d,4,a,1,one +c,2,d,4,a,3,one +c,2,d,5,a,1,one +c,2,d,6,a,1,one +c,2,d,7,a,1,one +c,2,d,8,a,1,one +c,2,e,3,a,2,one +c,2,e,4,a,1,one +c,2,e,4,a,3,one +c,2,e,5,a,1,one +c,2,e,6,a,1,one +c,2,e,7,a,1,one +c,2,e,8,a,1,one +c,2,f,3,a,2,one +c,2,f,4,a,1,one +c,2,f,4,a,3,one +c,2,f,5,a,1,one +c,2,f,6,a,1,one +c,2,f,7,a,1,one +c,2,f,8,a,1,one +c,2,g,3,a,2,one +c,2,g,4,a,1,one +c,2,g,4,a,3,one +c,2,g,5,a,1,one +c,2,g,6,a,1,one +c,2,g,7,a,1,one +c,2,g,8,a,1,one +c,2,h,3,a,2,one +c,2,h,4,a,1,one +c,2,h,4,a,3,one +c,2,h,5,a,1,one +c,2,h,6,a,1,one +c,2,h,7,a,1,one +c,2,h,8,a,1,one +c,3,a,3,b,1,one +c,3,a,4,b,1,one +c,3,a,5,b,1,one +c,3,a,6,b,1,one +c,3,a,7,b,1,one +c,3,a,8,b,1,one +c,3,e,3,d,1,one +c,3,e,4,d,1,one +c,3,e,5,d,1,one +c,3,e,6,d,1,one +c,3,e,7,d,1,one +c,3,e,8,d,1,one +d,3,b,3,c,1,one +d,3,b,4,c,1,one +d,3,b,5,c,1,one +d,3,b,6,c,1,one +d,3,b,7,c,1,one +d,3,b,8,c,1,one +d,3,f,3,e,1,one +d,3,f,4,e,1,one +d,3,f,5,e,1,one +d,3,f,6,e,1,one +d,3,f,7,e,1,one +d,3,f,8,e,1,one Added: trunk/examples/krk/test_ZERO_ONE.owl =================================================================== --- trunk/examples/krk/test_ZERO_ONE.owl (rev 0) +++ trunk/examples/krk/test_ZERO_ONE.owl 2008-03-20 20:16:04 UTC (rev 720) @@ -0,0 +1,5017 @@ +<?xml version="1.0"?> + + +<!DOCTYPE rdf:RDF [ + <!ENTITY test "http://www.test.de/test#" > + <!ENTITY owl "http://www.w3.org/2002/07/owl#" > + <!ENTITY owl11 "http://www.w3.org/2006/12/owl11#" > + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > + <!ENTITY owl11xml "http://www.w3.org/2006/12/owl11-xml#" > + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > +]> + + +<rdf:RDF xmlns="http://www.test.de/test#" + xml:base="http://www.test.de/test" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl11="http://www.w3.org/2006/12/owl11#" + xmlns:owl11xml="http://www.w3.org/2006/12/owl11-xml#" + xmlns:test="http://www.test.de/test#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <owl:Ontology rdf:about=""/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Object Properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://www.test.de/test#fileDistance0 --> + + <owl:ObjectProperty rdf:about="#fileDistance0"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan1"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistance1 --> + + <owl:ObjectProperty rdf:about="#fileDistance1"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan2"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistance2 --> + + <owl:ObjectProperty rdf:about="#fileDistance2"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan3"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistance3 --> + + <owl:ObjectProperty rdf:about="#fileDistance3"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan4"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistance4 --> + + <owl:ObjectProperty rdf:about="#fileDistance4"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan5"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistance5 --> + + <owl:ObjectProperty rdf:about="#fileDistance5"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan6"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistance6 --> + + <owl:ObjectProperty rdf:about="#fileDistance6"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan7"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistance7 --> + + <owl:ObjectProperty rdf:about="#fileDistance7"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan8"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistanceLessThan0 --> + + <owl:ObjectProperty rdf:about="#fileDistanceLessThan0"> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan1"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistanceLessThan1 --> + + <owl:ObjectProperty rdf:about="#fileDistanceLessThan1"> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan2"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistanceLessThan2 --> + + <owl:ObjectProperty rdf:about="#fileDistanceLessThan2"> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan3"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistanceLessThan3 --> + + <owl:ObjectProperty rdf:about="#fileDistanceLessThan3"> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan4"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistanceLessThan4 --> + + <owl:ObjectProperty rdf:about="#fileDistanceLessThan4"> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan5"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistanceLessThan5 --> + + <owl:ObjectProperty rdf:about="#fileDistanceLessThan5"> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan6"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistanceLessThan6 --> + + <owl:ObjectProperty rdf:about="#fileDistanceLessThan6"> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan7"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistanceLessThan7 --> + + <owl:ObjectProperty rdf:about="#fileDistanceLessThan7"> + <rdfs:subPropertyOf rdf:resource="#fileDistanceLessThan8"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#fileDistanceLessThan8 --> + + <owl:ObjectProperty rdf:about="#fileDistanceLessThan8"/> + + + + <!-- http://www.test.de/test#hasLowerFileThan --> + + <owl:ObjectProperty rdf:about="#hasLowerFileThan"> + <rdf:type rdf:resource="&owl;TransitiveProperty"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#hasLowerRankThan --> + + <owl:ObjectProperty rdf:about="#hasLowerRankThan"> + <rdf:type rdf:resource="&owl;TransitiveProperty"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#hasPiece --> + + <owl:ObjectProperty rdf:about="#hasPiece"> + <rdfs:domain rdf:resource="#Game"/> + <rdfs:range rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#hasPieceInv --> + + <owl:ObjectProperty rdf:about="#hasPieceInv"> + <owl:inverseOf rdf:resource="#hasPiece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistance0 --> + + <owl:ObjectProperty rdf:about="#rankDistance0"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan1"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistance1 --> + + <owl:ObjectProperty rdf:about="#rankDistance1"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan2"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistance2 --> + + <owl:ObjectProperty rdf:about="#rankDistance2"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan3"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistance3 --> + + <owl:ObjectProperty rdf:about="#rankDistance3"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan4"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistance4 --> + + <owl:ObjectProperty rdf:about="#rankDistance4"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan5"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistance5 --> + + <owl:ObjectProperty rdf:about="#rankDistance5"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan6"/> + <rdfs:range rdf:resource="#Piece"/> + <rdfs:domain rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistance6 --> + + <owl:ObjectProperty rdf:about="#rankDistance6"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan7"/> + <rdfs:range rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistance7 --> + + <owl:ObjectProperty rdf:about="#rankDistance7"> + <rdf:type rdf:resource="&owl;SymmetricProperty"/> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan8"/> + <rdfs:domain rdf:resource="#Piece"/> + <rdfs:range rdf:resource="#Piece"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistanceLessThan0 --> + + <owl:ObjectProperty rdf:about="#rankDistanceLessThan0"> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan1"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistanceLessThan1 --> + + <owl:ObjectProperty rdf:about="#rankDistanceLessThan1"> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan2"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistanceLessThan2 --> + + <owl:ObjectProperty rdf:about="#rankDistanceLessThan2"> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan3"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistanceLessThan3 --> + + <owl:ObjectProperty rdf:about="#rankDistanceLessThan3"> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan4"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistanceLessThan4 --> + + <owl:ObjectProperty rdf:about="#rankDistanceLessThan4"> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan5"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistanceLessThan5 --> + + <owl:ObjectProperty rdf:about="#rankDistanceLessThan5"> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan6"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistanceLessThan6 --> + + <owl:ObjectProperty rdf:about="#rankDistanceLessThan6"> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan7"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistanceLessThan7 --> + + <owl:ObjectProperty rdf:about="#rankDistanceLessThan7"> + <rdfs:subPropertyOf rdf:resource="#rankDistanceLessThan8"/> + </owl:ObjectProperty> + + + + <!-- http://www.test.de/test#rankDistanceLessThan8 --> + + <owl:ObjectProperty rdf:about="#rankDistanceLessThan8"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Classes + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://www.test.de/test#BKing --> + + <owl:Class rdf:about="#BKing"> + <rdfs:subClassOf rdf:resource="#Piece"/> + <owl:disjointWith rdf:resource="#WKing"/> + </owl:Class> + + + + <!-- http://www.test.de/test#Game --> + + <owl:Class rdf:about="#Game"/> + + + + <!-- http://www.test.de/test#ONE --> + + <owl:Class rdf:about="#ONE"/> + + + + <!-- http://www.test.de/test#Piece --> + + <owl:Class rdf:about="#Piece"> + <owl:disjointWith rdf:resource="#Game"/> + </owl:Class> + + + + <!-- http://www.test.de/test#WKing --> + + <owl:Class rdf:about="#WKing"> + <rdfs:subClassOf rdf:resource="#Piece"/> + </owl:Class> + + + + <!-- http://www.test.de/test#WRook --> + + <owl:Class rdf:about="#WRook"> + <rdfs:subClassOf rdf:resource="#Piece"/> + <owl:disjointWith rdf:resource="#BKing"/> + <owl:disjointWith rdf:resource="#WKing"/> + </owl:Class> + + + + <!-- http://www.test.de/test#ZERO --> + + <owl:Class rdf:about="#ZERO"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Individuals + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://www.test.de/test#bking_a1_1 --> + + <BKing rdf:about="#bking_a1_1"> + <hasLowerFileThan rdf:resource="#wking_c1_1"/> + <hasLowerRankThan rdf:resource="#wrook_a3_1"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_10 --> + + <BKing rdf:about="#bking_a1_10"> + <hasLowerRankThan rdf:resource="#wrook_a5_10"/> + <hasLowerRankThan rdf:resource="#wking_c2_10"/> + <hasLowerFileThan rdf:resource="#wking_c2_10"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_12 --> + + <BKing rdf:about="#bking_a1_12"> + <hasLowerRankThan rdf:resource="#wrook_a6_12"/> + <hasLowerRankThan rdf:resource="#wking_c2_12"/> + <hasLowerFileThan rdf:resource="#wking_c2_12"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_14 --> + + <BKing rdf:about="#bking_a1_14"> + <hasLowerRankThan rdf:resource="#wrook_a7_14"/> + <hasLowerFileThan rdf:resource="#wking_c2_14"/> + <hasLowerRankThan rdf:resource="#wking_c2_14"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_16 --> + + <BKing rdf:about="#bking_a1_16"> + <hasLowerRankThan rdf:resource="#wking_c2_16"/> + <hasLowerRankThan rdf:resource="#wrook_a8_16"/> + <hasLowerFileThan rdf:resource="#wking_c2_16"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_2 --> + + <BKing rdf:about="#bking_a1_2"> + <hasLowerRankThan rdf:resource="#wrook_a4_2"/> + <hasLowerFileThan rdf:resource="#wking_c1_2"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_3 --> + + <BKing rdf:about="#bking_a1_3"> + <hasLowerRankThan rdf:resource="#wrook_a5_3"/> + <hasLowerFileThan rdf:resource="#wking_c1_3"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_35 --> + + <BKing rdf:about="#bking_a1_35"> + <hasLowerFileThan rdf:resource="#wking_c2_35"/> + <hasLowerRankThan rdf:resource="#wking_c2_35"/> + <hasLowerFileThan rdf:resource="#wrook_b4_35"/> + <hasLowerRankThan rdf:resource="#wrook_b4_35"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_36 --> + + <BKing rdf:about="#bking_a1_36"> + <hasLowerFileThan rdf:resource="#wrook_b5_36"/> + <hasLowerRankThan rdf:resource="#wrook_b5_36"/> + <hasLowerRankThan rdf:resource="#wking_c2_36"/> + <hasLowerFileThan rdf:resource="#wking_c2_36"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_37 --> + + <BKing rdf:about="#bking_a1_37"> + <hasLowerFileThan rdf:resource="#wking_c2_37"/> + <hasLowerRankThan rdf:resource="#wking_c2_37"/> + <hasLowerFileThan rdf:resource="#wrook_b6_37"/> + <hasLowerRankThan rdf:resource="#wrook_b6_37"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_38 --> + + <BKing rdf:about="#bking_a1_38"> + <hasLowerFileThan rdf:resource="#wrook_b7_38"/> + <hasLowerRankThan rdf:resource="#wking_c2_38"/> + <hasLowerRankThan rdf:resource="#wrook_b7_38"/> + <hasLowerFileThan rdf:resource="#wking_c2_38"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_39 --> + + <BKing rdf:about="#bking_a1_39"> + <hasLowerRankThan rdf:resource="#wrook_b8_39"/> + <hasLowerFileThan rdf:resource="#wking_c2_39"/> + <hasLowerRankThan rdf:resource="#wking_c2_39"/> + <hasLowerFileThan rdf:resource="#wrook_b8_39"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_4 --> + + <BKing rdf:about="#bking_a1_4"> + <hasLowerFileThan rdf:resource="#wking_c1_4"/> + <hasLowerRankThan rdf:resource="#wrook_a6_4"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_41 --> + + <BKing rdf:about="#bking_a1_41"> + <hasLowerRankThan rdf:resource="#wking_c2_41"/> + <hasLowerFileThan rdf:resource="#wking_c2_41"/> + <hasLowerFileThan rdf:resource="#wrook_c4_41"/> + <hasLowerRankThan rdf:resource="#wrook_c4_41"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_43 --> + + <BKing rdf:about="#bking_a1_43"> + <hasLowerRankThan rdf:resource="#wking_c2_43"/> + <hasLowerFileThan rdf:resource="#wking_c2_43"/> + <hasLowerFileThan rdf:resource="#wrook_c5_43"/> + <hasLowerRankThan rdf:resource="#wrook_c5_43"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_44 --> + + <BKing rdf:about="#bking_a1_44"> + <hasLowerFileThan rdf:resource="#wking_c2_44"/> + <hasLowerFileThan rdf:resource="#wrook_c6_44"/> + <hasLowerRankThan rdf:resource="#wking_c2_44"/> + <hasLowerRankThan rdf:resource="#wrook_c6_44"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_45 --> + + <BKing rdf:about="#bking_a1_45"> + <hasLowerFileThan rdf:resource="#wking_c2_45"/> + <hasLowerRankThan rdf:resource="#wrook_c7_45"/> + <hasLowerRankThan rdf:resource="#wking_c2_45"/> + <hasLowerFileThan rdf:resource="#wrook_c7_45"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_46 --> + + <BKing rdf:about="#bking_a1_46"> + <hasLowerRankThan rdf:resource="#wrook_c8_46"/> + <hasLowerRankThan rdf:resource="#wking_c2_46"/> + <hasLowerFileThan rdf:resource="#wrook_c8_46"/> + <hasLowerFileThan rdf:resource="#wking_c2_46"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_48 --> + + <BKing rdf:about="#bking_a1_48"> + <hasLowerFileThan rdf:resource="#wrook_d4_48"/> + <hasLowerFileThan rdf:resource="#wking_c2_48"/> + <hasLowerRankThan rdf:resource="#wking_c2_48"/> + <hasLowerRankThan rdf:resource="#wrook_d4_48"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_5 --> + + <BKing rdf:about="#bking_a1_5"> + <hasLowerRankThan rdf:resource="#wrook_a7_5"/> + <hasLowerFileThan rdf:resource="#wking_c1_5"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_50 --> + + <BKing rdf:about="#bking_a1_50"> + <hasLowerRankThan rdf:resource="#wking_c2_50"/> + <hasLowerFileThan rdf:resource="#wking_c2_50"/> + <hasLowerRankThan rdf:resource="#wrook_d5_50"/> + <hasLowerFileThan rdf:resource="#wrook_d5_50"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_51 --> + + <BKing rdf:about="#bking_a1_51"> + <hasLowerRankThan rdf:resource="#wrook_d6_51"/> + <hasLowerFileThan rdf:resource="#wrook_d6_51"/> + <hasLowerRankThan rdf:resource="#wking_c2_51"/> + <hasLowerFileThan rdf:resource="#wking_c2_51"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_52 --> + + <BKing rdf:about="#bking_a1_52"> + <hasLowerFileThan rdf:resource="#wking_c2_52"/> + <hasLowerRankThan rdf:resource="#wking_c2_52"/> + <hasLowerFileThan rdf:resource="#wrook_d7_52"/> + <hasLowerRankThan rdf:resource="#wrook_d7_52"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_53 --> + + <BKing rdf:about="#bking_a1_53"> + <hasLowerFileThan rdf:resource="#wrook_d8_53"/> + <hasLowerFileThan rdf:resource="#wking_c2_53"/> + <hasLowerRankThan rdf:resource="#wrook_d8_53"/> + <hasLowerRankThan rdf:resource="#wking_c2_53"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_55 --> + + <BKing rdf:about="#bking_a1_55"> + <hasLowerRankThan rdf:resource="#wking_c2_55"/> + <hasLowerFileThan rdf:resource="#wrook_e4_55"/> + <hasLowerFileThan rdf:resource="#wking_c2_55"/> + <hasLowerRankThan rdf:resource="#wrook_e4_55"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_57 --> + + <BKing rdf:about="#bking_a1_57"> + <hasLowerRankThan rdf:resource="#wking_c2_57"/> + <hasLowerRankThan rdf:resource="#wrook_e5_57"/> + <hasLowerFileThan rdf:resource="#wking_c2_57"/> + <hasLowerFileThan rdf:resource="#wrook_e5_57"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_58 --> + + <BKing rdf:about="#bking_a1_58"> + <hasLowerFileThan rdf:resource="#wking_c2_58"/> + <hasLowerRankThan rdf:resource="#wrook_e6_58"/> + <hasLowerFileThan rdf:resource="#wrook_e6_58"/> + <hasLowerRankThan rdf:resource="#wking_c2_58"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_59 --> + + <BKing rdf:about="#bking_a1_59"> + <hasLowerRankThan rdf:resource="#wking_c2_59"/> + <hasLowerFileThan rdf:resource="#wrook_e7_59"/> + <hasLowerRankThan rdf:resource="#wrook_e7_59"/> + <hasLowerFileThan rdf:resource="#wking_c2_59"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_6 --> + + <BKing rdf:about="#bking_a1_6"> + <hasLowerFileThan rdf:resource="#wking_c1_6"/> + <hasLowerRankThan rdf:resource="#wrook_a8_6"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_60 --> + + <BKing rdf:about="#bking_a1_60"> + <hasLowerRankThan rdf:resource="#wking_c2_60"/> + <hasLowerRankThan rdf:resource="#wrook_e8_60"/> + <hasLowerFileThan rdf:resource="#wrook_e8_60"/> + <hasLowerFileThan rdf:resource="#wking_c2_60"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_62 --> + + <BKing rdf:about="#bking_a1_62"> + <hasLowerRankThan rdf:resource="#wking_c2_62"/> + <hasLowerRankThan rdf:resource="#wrook_f4_62"/> + <hasLowerFileThan rdf:resource="#wrook_f4_62"/> + <hasLowerFileThan rdf:resource="#wking_c2_62"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_64 --> + + <BKing rdf:about="#bking_a1_64"> + <hasLowerRankThan rdf:resource="#wrook_f5_64"/> + <hasLowerRankThan rdf:resource="#wking_c2_64"/> + <hasLowerFileThan rdf:resource="#wking_c2_64"/> + <hasLowerFileThan rdf:resource="#wrook_f5_64"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_65 --> + + <BKing rdf:about="#bking_a1_65"> + <hasLowerFileThan rdf:resource="#wrook_f6_65"/> + <hasLowerRankThan rdf:resource="#wrook_f6_65"/> + <hasLowerRankThan rdf:resource="#wking_c2_65"/> + <hasLowerFileThan rdf:resource="#wking_c2_65"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_66 --> + + <BKing rdf:about="#bking_a1_66"> + <hasLowerRankThan rdf:resource="#wrook_f7_66"/> + <hasLowerRankThan rdf:resource="#wking_c2_66"/> + <hasLowerFileThan rdf:resource="#wking_c2_66"/> + <hasLowerFileThan rdf:resource="#wrook_f7_66"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_67 --> + + <BKing rdf:about="#bking_a1_67"> + <hasLowerRankThan rdf:resource="#wking_c2_67"/> + <hasLowerFileThan rdf:resource="#wking_c2_67"/> + <hasLowerFileThan rdf:resource="#wrook_f8_67"/> + <hasLowerRankThan rdf:resource="#wrook_f8_67"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_69 --> + + <BKing rdf:about="#bking_a1_69"> + <hasLowerFileThan rdf:resource="#wrook_g4_69"/> + <hasLowerRankThan rdf:resource="#wking_c2_69"/> + <hasLowerFileThan rdf:resource="#wking_c2_69"/> + <hasLowerRankThan rdf:resource="#wrook_g4_69"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_7 --> + + <BKing rdf:about="#bking_a1_7"> + <hasLowerRankThan rdf:resource="#wrook_a3_7"/> + <hasLowerRankThan rdf:resource="#wking_c2_7"/> + <hasLowerFileThan rdf:resource="#wking_c2_7"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_71 --> + + <BKing rdf:about="#bking_a1_71"> + <hasLowerFileThan rdf:resource="#wking_c2_71"/> + <hasLowerRankThan rdf:resource="#wrook_g5_71"/> + <hasLowerRankThan rdf:resource="#wking_c2_71"/> + <hasLowerFileThan rdf:resource="#wrook_g5_71"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_72 --> + + <BKing rdf:about="#bking_a1_72"> + <hasLowerRankThan rdf:resource="#wrook_g6_72"/> + <hasLowerFileThan rdf:resource="#wking_c2_72"/> + <hasLowerRankThan rdf:resource="#wking_c2_72"/> + <hasLowerFileThan rdf:resource="#wrook_g6_72"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_73 --> + + <BKing rdf:about="#bking_a1_73"> + <hasLowerRankThan rdf:resource="#wking_c2_73"/> + <hasLowerRankThan rdf:resource="#wrook_g7_73"/> + <hasLowerFileThan rdf:resource="#wrook_g7_73"/> + <hasLowerFileThan rdf:resource="#wking_c2_73"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_74 --> + + <BKing rdf:about="#bking_a1_74"> + <hasLowerRankThan rdf:resource="#wrook_g8_74"/> + <hasLowerRankThan rdf:resource="#wking_c2_74"/> + <hasLowerFileThan rdf:resource="#wrook_g8_74"/> + <hasLowerFileThan rdf:resource="#wking_c2_74"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_76 --> + + <BKing rdf:about="#bking_a1_76"> + <hasLowerRankThan rdf:resource="#wrook_h4_76"/> + <hasLowerFileThan rdf:resource="#wking_c2_76"/> + <hasLowerFileThan rdf:resource="#wrook_h4_76"/> + <hasLowerRankThan rdf:resource="#wking_c2_76"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_78 --> + + <BKing rdf:about="#bking_a1_78"> + <hasLowerFileThan rdf:resource="#wrook_h5_78"/> + <hasLowerRankThan rdf:resource="#wrook_h5_78"/> + <hasLowerFileThan rdf:resource="#wking_c2_78"/> + <hasLowerRankThan rdf:resource="#wking_c2_78"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_79 --> + + <BKing rdf:about="#bking_a1_79"> + <hasLowerFileThan rdf:resource="#wking_c2_79"/> + <hasLowerRankThan rdf:resource="#wking_c2_79"/> + <hasLowerRankThan rdf:resource="#wrook_h6_79"/> + <hasLowerFileThan rdf:resource="#wrook_h6_79"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_8 --> + + <BKing rdf:about="#bking_a1_8"> + <hasLowerFileThan rdf:resource="#wking_c2_8"/> + <hasLowerRankThan rdf:resource="#wking_c2_8"/> + <hasLowerRankThan rdf:resource="#wrook_a4_8"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_80 --> + + <BKing rdf:about="#bking_a1_80"> + <hasLowerFileThan rdf:resource="#wrook_h7_80"/> + <hasLowerRankThan rdf:resource="#wking_c2_80"/> + <hasLowerFileThan rdf:resource="#wking_c2_80"/> + <hasLowerRankThan rdf:resource="#wrook_h7_80"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a1_81 --> + + <BKing rdf:about="#bking_a1_81"> + <hasLowerRankThan rdf:resource="#wking_c2_81"/> + <hasLowerRankThan rdf:resource="#wrook_h8_81"/> + <hasLowerFileThan rdf:resource="#wking_c2_81"/> + <hasLowerFileThan rdf:resource="#wrook_h8_81"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_11 --> + + <BKing rdf:about="#bking_a2_11"> + <hasLowerRankThan rdf:resource="#wrook_a5_11"/> + <hasLowerFileThan rdf:resource="#wking_c2_11"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_13 --> + + <BKing rdf:about="#bking_a2_13"> + <hasLowerFileThan rdf:resource="#wking_c2_13"/> + <hasLowerRankThan rdf:resource="#wrook_a6_13"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_15 --> + + <BKing rdf:about="#bking_a2_15"> + <hasLowerRankThan rdf:resource="#wrook_a7_15"/> + <hasLowerFileThan rdf:resource="#wking_c2_15"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_17 --> + + <BKing rdf:about="#bking_a2_17"> + <hasLowerRankThan rdf:resource="#wrook_a8_17"/> + <hasLowerFileThan rdf:resource="#wking_c2_17"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_28 --> + + <BKing rdf:about="#bking_a2_28"> + <hasLowerFileThan rdf:resource="#wking_c1_28"/> + <hasLowerFileThan rdf:resource="#wrook_c3_28"/> + <hasLowerRankThan rdf:resource="#wrook_c3_28"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_29 --> + + <BKing rdf:about="#bking_a2_29"> + <hasLowerFileThan rdf:resource="#wking_c1_29"/> + <hasLowerRankThan rdf:resource="#wrook_d3_29"/> + <hasLowerFileThan rdf:resource="#wrook_d3_29"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_30 --> + + <BKing rdf:about="#bking_a2_30"> + <hasLowerRankThan rdf:resource="#wrook_e3_30"/> + <hasLowerFileThan rdf:resource="#wrook_e3_30"/> + <hasLowerFileThan rdf:resource="#wking_c1_30"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_31 --> + + <BKing rdf:about="#bking_a2_31"> + <hasLowerFileThan rdf:resource="#wking_c1_31"/> + <hasLowerRankThan rdf:resource="#wrook_f3_31"/> + <hasLowerFileThan rdf:resource="#wrook_f3_31"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_32 --> + + <BKing rdf:about="#bking_a2_32"> + <hasLowerRankThan rdf:resource="#wrook_g3_32"/> + <hasLowerFileThan rdf:resource="#wking_c1_32"/> + <hasLowerFileThan rdf:resource="#wrook_g3_32"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_33 --> + + <BKing rdf:about="#bking_a2_33"> + <hasLowerFileThan rdf:resource="#wrook_h3_33"/> + <hasLowerRankThan rdf:resource="#wrook_h3_33"/> + <hasLowerFileThan rdf:resource="#wking_c1_33"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_34 --> + + <BKing rdf:about="#bking_a2_34"> + <hasLowerFileThan rdf:resource="#wking_c2_34"/> + <hasLowerFileThan rdf:resource="#wrook_b3_34"/> + <hasLowerRankThan rdf:resource="#wrook_b3_34"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_40 --> + + <BKing rdf:about="#bking_a2_40"> + <hasLowerFileThan rdf:resource="#wking_c2_40"/> + <hasLowerRankThan rdf:resource="#wrook_c3_40"/> + <hasLowerFileThan rdf:resource="#wrook_c3_40"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_47 --> + + <BKing rdf:about="#bking_a2_47"> + <hasLowerRankThan rdf:resource="#wrook_d3_47"/> + <hasLowerFileThan rdf:resource="#wrook_d3_47"/> + <hasLowerFileThan rdf:resource="#wking_c2_47"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_54 --> + + <BKing rdf:about="#bking_a2_54"> + <hasLowerFileThan rdf:resource="#wrook_e3_54"/> + <hasLowerFileThan rdf:resource="#wking_c2_54"/> + <hasLowerRankThan rdf:resource="#wrook_e3_54"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_61 --> + + <BKing rdf:about="#bking_a2_61"> + <hasLowerRankThan rdf:resource="#wrook_f3_61"/> + <hasLowerFileThan rdf:resource="#wrook_f3_61"/> + <hasLowerFileThan rdf:resource="#wking_c2_61"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_68 --> + + <BKing rdf:about="#bking_a2_68"> + <hasLowerFileThan rdf:resource="#wrook_g3_68"/> + <hasLowerRankThan rdf:resource="#wrook_g3_68"/> + <hasLowerFileThan rdf:resource="#wking_c2_68"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_75 --> + + <BKing rdf:about="#bking_a2_75"> + <hasLowerRankThan rdf:resource="#wrook_h3_75"/> + <hasLowerFileThan rdf:resource="#wking_c2_75"/> + <hasLowerFileThan rdf:resource="#wrook_h3_75"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a2_9 --> + + <BKing rdf:about="#bking_a2_9"> + <hasLowerFileThan rdf:resource="#wking_c2_9"/> + <hasLowerRankThan rdf:resource="#wrook_a4_9"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a3_42 --> + + <BKing rdf:about="#bking_a3_42"> + <hasLowerFileThan rdf:resource="#wking_c2_42"/> + <hasLowerRankThan rdf:resource="#wrook_c4_42"/> + <hasLowerFileThan rdf:resource="#wrook_c4_42"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a3_49 --> + + <BKing rdf:about="#bking_a3_49"> + <hasLowerFileThan rdf:resource="#wrook_d4_49"/> + <hasLowerRankThan rdf:resource="#wrook_d4_49"/> + <hasLowerFileThan rdf:resource="#wking_c2_49"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a3_56 --> + + <BKing rdf:about="#bking_a3_56"> + <hasLowerRankThan rdf:resource="#wrook_e4_56"/> + <hasLowerFileThan rdf:resource="#wking_c2_56"/> + <hasLowerFileThan rdf:resource="#wrook_e4_56"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a3_63 --> + + <BKing rdf:about="#bking_a3_63"> + <hasLowerFileThan rdf:resource="#wking_c2_63"/> + <hasLowerFileThan rdf:resource="#wrook_f4_63"/> + <hasLowerRankThan rdf:resource="#wrook_f4_63"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a3_70 --> + + <BKing rdf:about="#bking_a3_70"> + <hasLowerFileThan rdf:resource="#wrook_g4_70"/> + <hasLowerFileThan rdf:resource="#wking_c2_70"/> + <hasLowerRankThan rdf:resource="#wrook_g4_70"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_a3_77 --> + + <BKing rdf:about="#bking_a3_77"> + <hasLowerRankThan rdf:resource="#wrook_h4_77"/> + <hasLowerFileThan rdf:resource="#wrook_h4_77"/> + <hasLowerFileThan rdf:resource="#wking_c2_77"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_b1_82 --> + + <BKing rdf:about="#bking_b1_82"> + <hasLowerRankThan rdf:resource="#wking_c3_82"/> + <hasLowerFileThan rdf:resource="#wking_c3_82"/> + <hasLowerRankThan rdf:resource="#wrook_a3_82"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_b1_83 --> + + <BKing rdf:about="#bking_b1_83"> + <hasLowerRankThan rdf:resource="#wking_c3_83"/> + <hasLowerRankThan rdf:resource="#wrook_a4_83"/> + <hasLowerFileThan rdf:resource="#wking_c3_83"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_b1_84 --> + + <BKing rdf:about="#bking_b1_84"> + <hasLowerRankThan rdf:resource="#wrook_a5_84"/> + <hasLowerRankThan rdf:resource="#wking_c3_84"/> + <hasLowerFileThan rdf:resource="#wking_c3_84"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_b1_85 --> + + <BKing rdf:about="#bking_b1_85"> + <hasLowerRankThan rdf:resource="#wking_c3_85"/> + <hasLowerFileThan rdf:resource="#wking_c3_85"/> + <hasLowerRankThan rdf:resource="#wrook_a6_85"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_b1_86 --> + + <BKing rdf:about="#bking_b1_86"> + <hasLowerRankThan rdf:resource="#wking_c3_86"/> + <hasLowerRankThan rdf:resource="#wrook_a7_86"/> + <hasLowerFileThan rdf:resource="#wking_c3_86"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_b1_87 --> + + <BKing rdf:about="#bking_b1_87"> + <hasLowerRankThan rdf:resource="#wking_c3_87"/> + <hasLowerRankThan rdf:resource="#wrook_a8_87"/> + <hasLowerFileThan rdf:resource="#wking_c3_87"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_18 --> + + <BKing rdf:about="#bking_c1_18"> + <hasLowerRankThan rdf:resource="#wking_c3_18"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_19 --> + + <BKing rdf:about="#bking_c1_19"> + <hasLowerFileThan rdf:resource="#wrook_e1_19"/> + <hasLowerRankThan rdf:resource="#wking_c3_19"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_20 --> + + <BKing rdf:about="#bking_c1_20"> + <hasLowerRankThan rdf:resource="#wking_c3_20"/> + <hasLowerFileThan rdf:resource="#wrook_f1_20"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_21 --> + + <BKing rdf:about="#bking_c1_21"> + <hasLowerFileThan rdf:resource="#wrook_g1_21"/> + <hasLowerRankThan rdf:resource="#wking_c3_21"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_22 --> + + <BKing rdf:about="#bking_c1_22"> + <hasLowerFileThan rdf:resource="#wrook_h1_22"/> + <hasLowerRankThan rdf:resource="#wking_c3_22"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_94 --> + + <BKing rdf:about="#bking_c1_94"> + <hasLowerFileThan rdf:resource="#wking_d3_94"/> + <hasLowerRankThan rdf:resource="#wking_d3_94"/> + <hasLowerRankThan rdf:resource="#wrook_b3_94"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_95 --> + + <BKing rdf:about="#bking_c1_95"> + <hasLowerFileThan rdf:resource="#wking_d3_95"/> + <hasLowerRankThan rdf:resource="#wrook_b4_95"/> + <hasLowerRankThan rdf:resource="#wking_d3_95"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_96 --> + + <BKing rdf:about="#bking_c1_96"> + <hasLowerRankThan rdf:resource="#wking_d3_96"/> + <hasLowerFileThan rdf:resource="#wking_d3_96"/> + <hasLowerRankThan rdf:resource="#wrook_b5_96"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_97 --> + + <BKing rdf:about="#bking_c1_97"> + <hasLowerRankThan rdf:resource="#wrook_b6_97"/> + <hasLowerFileThan rdf:resource="#wking_d3_97"/> + <hasLowerRankThan rdf:resource="#wking_d3_97"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_98 --> + + <BKing rdf:about="#bking_c1_98"> + <hasLowerRankThan rdf:resource="#wrook_b7_98"/> + <hasLowerFileThan rdf:resource="#wking_d3_98"/> + <hasLowerRankThan rdf:resource="#wking_d3_98"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_c1_99 --> + + <BKing rdf:about="#bking_c1_99"> + <hasLowerRankThan rdf:resource="#wrook_b8_99"/> + <hasLowerRankThan rdf:resource="#wking_d3_99"/> + <hasLowerFileThan rdf:resource="#wking_d3_99"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_23 --> + + <BKing rdf:about="#bking_d1_23"> + <hasLowerRankThan rdf:resource="#wking_d3_23"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_24 --> + + <BKing rdf:about="#bking_d1_24"> + <hasLowerRankThan rdf:resource="#wking_d3_24"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_25 --> + + <BKing rdf:about="#bking_d1_25"> + <hasLowerFileThan rdf:resource="#wrook_f1_25"/> + <hasLowerRankThan rdf:resource="#wking_d3_25"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_26 --> + + <BKing rdf:about="#bking_d1_26"> + <hasLowerFileThan rdf:resource="#wrook_g1_26"/> + <hasLowerRankThan rdf:resource="#wking_d3_26"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_27 --> + + <BKing rdf:about="#bking_d1_27"> + <hasLowerFileThan rdf:resource="#wrook_h1_27"/> + <hasLowerRankThan rdf:resource="#wking_d3_27"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_88 --> + + <BKing rdf:about="#bking_d1_88"> + <hasLowerRankThan rdf:resource="#wrook_e3_88"/> + <hasLowerRankThan rdf:resource="#wking_c3_88"/> + <hasLowerFileThan rdf:resource="#wrook_e3_88"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_89 --> + + <BKing rdf:about="#bking_d1_89"> + <hasLowerRankThan rdf:resource="#wking_c3_89"/> + <hasLowerRankThan rdf:resource="#wrook_e4_89"/> + <hasLowerFileThan rdf:resource="#wrook_e4_89"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_90 --> + + <BKing rdf:about="#bking_d1_90"> + <hasLowerFileThan rdf:resource="#wrook_e5_90"/> + <hasLowerRankThan rdf:resource="#wking_c3_90"/> + <hasLowerRankThan rdf:resource="#wrook_e5_90"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_91 --> + + <BKing rdf:about="#bking_d1_91"> + <hasLowerRankThan rdf:resource="#wrook_e6_91"/> + <hasLowerRankThan rdf:resource="#wking_c3_91"/> + <hasLowerFileThan rdf:resource="#wrook_e6_91"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_92 --> + + <BKing rdf:about="#bking_d1_92"> + <hasLowerRankThan rdf:resource="#wrook_e7_92"/> + <hasLowerRankThan rdf:resource="#wking_c3_92"/> + <hasLowerFileThan rdf:resource="#wrook_e7_92"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_d1_93 --> + + <BKing rdf:about="#bking_d1_93"> + <hasLowerRankThan rdf:resource="#wking_c3_93"/> + <hasLowerRankThan rdf:resource="#wrook_e8_93"/> + <hasLowerFileThan rdf:resource="#wrook_e8_93"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_e1_100 --> + + <BKing rdf:about="#bking_e1_100"> + <hasLowerRankThan rdf:resource="#wking_d3_100"/> + <hasLowerRankThan rdf:resource="#wrook_f3_100"/> + <hasLowerFileThan rdf:resource="#wrook_f3_100"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_e1_101 --> + + <BKing rdf:about="#bking_e1_101"> + <hasLowerRankThan rdf:resource="#wking_d3_101"/> + <hasLowerFileThan rdf:resource="#wrook_f4_101"/> + <hasLowerRankThan rdf:resource="#wrook_f4_101"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_e1_102 --> + + <BKing rdf:about="#bking_e1_102"> + <hasLowerFileThan rdf:resource="#wrook_f5_102"/> + <hasLowerRankThan rdf:resource="#wking_d3_102"/> + <hasLowerRankThan rdf:resource="#wrook_f5_102"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_e1_103 --> + + <BKing rdf:about="#bking_e1_103"> + <hasLowerRankThan rdf:resource="#wking_d3_103"/> + <hasLowerFileThan rdf:resource="#wrook_f6_103"/> + <hasLowerRankThan rdf:resource="#wrook_f6_103"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_e1_104 --> + + <BKing rdf:about="#bking_e1_104"> + <hasLowerRankThan rdf:resource="#wrook_f7_104"/> + <hasLowerFileThan rdf:resource="#wrook_f7_104"/> + <hasLowerRankThan rdf:resource="#wking_d3_104"/> + </BKing> + + + + <!-- http://www.test.de/test#bking_e1_105 --> + + <BKing rdf:about="#bking_e1_105"> + <hasLowerRankThan rdf:resource="#wking_d3_105"/> + <hasLowerRankThan rdf:resource="#wrook_f8_105"/> + <hasLowerFileThan rdf:resource="#wrook_f8_105"/> + </BKing> + + + + <!-- http://www.test.de/test#game1 --> + + <ZERO rdf:about="#game1"> + <rdf:type rdf:resource="#Game"/> + <hasPiece rdf:resource="#wking_c1_1"/> + <hasPiece rdf:resource="#wrook_a3_1"/> + <hasPiece rdf:resource="#bking_a1_1"/> + </ZERO> + + + + <!-- http://www.test.de/test#game10 --> + + <ZERO rdf:about="#game10"> + <rdf:type rdf:resource="#Game"/> + <hasPiece rdf:resource="#wrook_a5_10"/> + <hasPiece rdf:resource="#bking_a1_10"/> + <hasPiece rdf:resource="#wking_c2_10"/> + </ZERO> + + + + <!-- http://www.test.de/test#game100 --> + + <Game rdf:about="#game100"> + <rdf:type rdf:resource="#ONE"/> + <hasPiece rdf:resource="#wking_d3_100"/> + <hasPiece rdf:resource="#wrook_f3_100"/> + <hasPiece rdf:resource="#bking_e1_100"/> + </Game> + + + + <!-- http://www.test.de/test#game101 --> + + <Game rdf:about="#game101"> + <rdf:type rdf:resource="#ONE"/> + <hasPiece rdf:resource="#wrook_f4_101"/> + <hasPiece rdf:resource="#bking_e1_101"/> + <hasPiece rdf:resource="#wking_d3_101"/> + </Game> + + + + <!-- http://www.test.de/test#game102 --> + + <Game rdf:about="#game102"> + <rdf:type rdf:resource="#ONE"/> + <hasPiece rdf:resource="#wking_d3_102"/> + <hasPiece rdf:resource="#bking_e1_102"/> + <hasPiece rdf:resource="#wrook_f5_102"/> + </Game> + + + + <!-- http://www.test.de/test#game103 --> + + <Game rdf:about="#game103"> + <rdf:type rdf:resource="#ONE"/> + <hasPiece rdf:resource="#bking_e1_103"/> + <hasPiece rdf:resource="#wking_d3_103"/> + <hasPiece rdf:resource="#wrook_f6_103"/> + </Game> + + + + <!-- http://www.test.de/test#game104 --> + + <ONE rdf:about="#game104"> + <rdf:type rdf:resource="#Game"/> + <hasPiece rdf:resource="#wrook_f7_104"/> + <hasPiece rdf:resource="#wking_d3_104"/> + <hasPiece rdf:resource="#bking_e1_104"/> + </ONE> + + + + <!-- http://www.test.de/test#game105 --> + + <Game rdf:about="#game105"> + <rdf:type rdf:resource="#ONE"/> + <hasPiece rdf:resource="#wking_d3_105"/> + <hasPiece rdf:resource="#bking_e1_105"/> + <hasPiece rdf:resource="#wrook_f8_105"/> + </Game> + + + + <!-- http://www.test.de/test#game11 --> + + <ZERO rdf:about="#game11"> + <rdf:type rdf:resource="#Game"/> + <hasPiece rdf:resource="#bking_a2_11"/> + <hasPiece rdf:resource="#wking_c2_11"/> + <hasPiece rdf:resource="#wrook_a5_11"/> + </ZERO> + + + + <!-- http://www.test.de/test#game12 --> + + <Game rdf:about="#game12"> + <rdf:type rdf:resource="#ZERO"/> + <hasPiece rdf:resource="#bking_a1_12"/> + <hasPiece rdf:resource="#wking_c2_12"/> + <hasPiece rdf:resource="#wrook_a6_12"/> + </Game> + + + + <!-- http://www.test.de/test#game13 --> + + <ZERO rdf:about="#game13"> + <rdf:type rdf:resource="#Game"/> + <hasPiece rdf:resource="#bking_a2_13"/> + <hasPiece rdf:resource="#wrook_a6_13"/> + <hasPiece rdf:resource="#wking_c2_13"/> + </ZERO> + + + + <!-- http://www.test.de/test#game14 --> + + <ZERO rdf:about="#game14"> + <rdf:type rdf:resource="#Game"/> + <hasPiece rdf:resource="#bking_a1_14"/> + <hasPiece rdf:resource="#wrook_a7_14"/> + <hasPiece rdf:resource="#wking_c2_14"/> + </ZERO> + + + + <!-- http://www.test.de/test#game15 --> + + <ZERO rdf:about="#game15"> + <rdf:type rdf:resource="#Game"/> + <hasPiece rdf:resource="#bking_a2_15"/> + <hasPiece rdf:resource="#wrook_a7_15"/> + <hasPiece rdf:resource="#wking_c2_15"/> + </ZERO> + + + + <!-- http://www.test.de/test#game16 --> + + <ZERO rdf:about="#game16"> + <rdf:type rdf:resource="#Game"/> + <hasPiece rdf:resource="#wking_c2_16"/> + <hasPiece rdf:resource="#bking_a1_16"/> + <hasPiece rdf:resource="#wrook_a8_16"/> + </ZERO> + + + + <!-- http://www.test.de/test#game17 --> + + <Game rdf:about="#game17"> + <rdf:type rdf:resource="#ZERO"/> + <hasPiece rdf:resource="#wking_c2_17"/> + <hasPiece rdf:resource="#bking_a2_17"/> + <hasPiece rdf:resource="#wrook_a8_17"/> + </Game> + + + + <!-- http://www.test.de/test#game18 --> + + <Game rdf:about="#game18"> + <rdf:type rdf:resource="#ZERO"/> + <hasPiece rdf:resource="#bking_c1_18"/> + <hasPiece rdf:resource="#wking_c3_18"/> + <hasPiece rdf:resource="#wrook_a1_18"/> + </Game> + + + + <!-- http://www.test.de/test#game19 --> + + <Game rdf:about="#game19"> + <rdf:type rdf:resource="#ZERO"/> + <hasPiece rdf:resource="#wking_c3_19"/> + <hasPiece rdf:resource="#bking_c1_19"/> + <hasPiece rdf:resource="#wrook_e1_19"/> + </Game> + + + + <!-- http://www.test.de/test#game2 --> + + <Game rdf:about="#game2"> + <rdf:type rdf:resource="#ZERO"/> + <hasPiece rdf:resource="#wking_c1_2"/> + <hasPiece rdf:resource="#bking_a1_2"/> + <hasPiece rdf:resource="#wrook_a4_2"/> + </Game> + + + + <!-- http://www.test.de/test#game20 --> + + <Game rdf:about="#game20"> + <rdf:type rdf:resource="#ZERO"/> + <hasPiece rdf:resource="#wrook_f1_20"/> + <hasPiece... [truncated message content] |
From: <jen...@us...> - 2008-03-20 11:35:48
|
Revision: 718 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=718&view=rev Author: jenslehmann Date: 2008-03-20 04:35:37 -0700 (Thu, 20 Mar 2008) Log Message: ----------- fixed path Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/test/ComponentTest.java Modified: trunk/src/dl-learner/org/dllearner/test/ComponentTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/ComponentTest.java 2008-03-19 16:15:18 UTC (rev 717) +++ trunk/src/dl-learner/org/dllearner/test/ComponentTest.java 2008-03-20 11:35:37 UTC (rev 718) @@ -55,7 +55,7 @@ // create knowledge source KnowledgeSource source = cm.knowledgeSource(OWLFile.class); - String example = "examples/father.owl"; + String example = "examples/family/father.owl"; cm.applyConfigEntry(source, "url", new File(example).toURI().toString()); source.init(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-03-19 16:15:56
|
Revision: 717 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=717&view=rev Author: jenslehmann Date: 2008-03-19 09:15:18 -0700 (Wed, 19 Mar 2008) Log Message: ----------- added template for DBpedia navigation link suggestor Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java Added: trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-03-19 16:15:18 UTC (rev 717) @@ -0,0 +1,85 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.algorithms; + +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.Score; +import org.dllearner.core.config.ConfigEntry; +import org.dllearner.core.config.InvalidConfigOptionValueException; +import org.dllearner.core.owl.Description; +import org.dllearner.learningproblems.PosNegLP; +import org.dllearner.learningproblems.PosOnlyDefinitionLP; + +/** + * The DBpedia Navigation suggestor takes a knowledge fragment extracted + * from DBpedia, performs some preprocessing steps, invokes a learning + * algorithm, and then performs postprocessing steps. It does not + * implement a completely new learning algorithm itself, but uses the + * example based refinement operator learning algorithm. + * + * @author Jens Lehmann + * + */ +public class DBpediaNavigationSuggestor extends LearningAlgorithm { + + public DBpediaNavigationSuggestor(PosNegLP learningProblem, ReasoningService rs) { + + } + + public DBpediaNavigationSuggestor(PosOnlyDefinitionLP learningProblem, ReasoningService rs) { + + } + + @Override + public <T> void applyConfigEntry(ConfigEntry<T> entry) throws InvalidConfigOptionValueException { + // TODO Auto-generated method stub + } + + @Override + public void init() throws ComponentInitException { + // TODO Auto-generated method stub + } + + @Override + public void start() { + // TODO Auto-generated method stub + } + + @Override + public void stop() { + // TODO Auto-generated method stub + + } + + @Override + public Description getBestSolution() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Score getSolutionScore() { + // TODO Auto-generated method stub + return null; + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-19 14:29:21 UTC (rev 716) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-19 16:15:18 UTC (rev 717) @@ -519,6 +519,7 @@ Thread laThread = new Thread() { + @Override public void run(){ la.start(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-03-19 14:30:20
|
Revision: 716 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=716&view=rev Author: jenslehmann Date: 2008-03-19 07:29:21 -0700 (Wed, 19 Mar 2008) Log Message: ----------- added carcinogenesis data Added Paths: ----------- trunk/examples/carcinogenesis/ trunk/examples/carcinogenesis/README.txt trunk/examples/carcinogenesis/carcinogenesis.owl trunk/examples/carcinogenesis/prolog/ trunk/examples/carcinogenesis/prolog/ames.pl trunk/examples/carcinogenesis/prolog/atoms.pl trunk/examples/carcinogenesis/prolog/bonds.pl trunk/examples/carcinogenesis/prolog/gentoxprops.pl trunk/examples/carcinogenesis/prolog/ind_nos.pl trunk/examples/carcinogenesis/prolog/ind_pos.pl trunk/examples/carcinogenesis/prolog/mutagenesis.pl trunk/examples/carcinogenesis/prolog/newgroups.pl trunk/examples/carcinogenesis/prolog/pte1.f trunk/examples/carcinogenesis/prolog/pte1.n trunk/examples/carcinogenesis/prolog/train.b trunk/examples/carcinogenesis/prolog/train.f trunk/examples/carcinogenesis/prolog/train.n trunk/examples/carcinogenesis/train.conf Added: trunk/examples/carcinogenesis/README.txt =================================================================== --- trunk/examples/carcinogenesis/README.txt (rev 0) +++ trunk/examples/carcinogenesis/README.txt 2008-03-19 14:29:21 UTC (rev 716) @@ -0,0 +1,9 @@ +The data for carcinogenesis prediction was contributed to the Machine +Learning community by the U.S. National Toxicology Program (NTP) [1]. +They were made available in Progol/Prolog format [2]. DL-Learner +contains a Prolog parser, which was used to read in the data. Using a +set of mapping rules, they were converted into an OWL ontology, which +is made available here. + +http://ntp-server.niehs.nih.gov/ +http://web2.comlab.ox.ac.uk/oucl/research/areas/machlearn/cancer.html Added: trunk/examples/carcinogenesis/carcinogenesis.owl =================================================================== --- trunk/examples/carcinogenesis/carcinogenesis.owl (rev 0) +++ trunk/examples/carcinogenesis/carcinogenesis.owl 2008-03-19 14:29:21 UTC (rev 716) @@ -0,0 +1,206306 @@ +<?xml version="1.0"?> + + +<!DOCTYPE rdf:RDF [ + <!ENTITY owl "http://www.w3.org/2002/07/owl#" > + <!ENTITY owl11 "http://www.w3.org/2006/12/owl11#" > + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > + <!ENTITY owl11xml "http://www.w3.org/2006/12/owl11-xml#" > + <!ENTITY carcinogenesis "http://dl-learner.org/carcinogenesis#" > + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > +]> + + +<rdf:RDF xmlns="http://dl-learner.org/carcinogenesis#" + xml:base="http://dl-learner.org/carcinogenesis" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl11="http://www.w3.org/2006/12/owl11#" + xmlns:carcinogenesis="http://dl-learner.org/carcinogenesis#" + xmlns:owl11xml="http://www.w3.org/2006/12/owl11-xml#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <owl:Ontology rdf:about=""/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Object Properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://dl-learner.org/carcinogenesis#hasAtom --> + + <owl:ObjectProperty rdf:about="#hasAtom"> + <rdfs:domain rdf:resource="#Compound"/> + <rdfs:range rdf:resource="#Atom"/> + </owl:ObjectProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#hasBond --> + + <owl:ObjectProperty rdf:about="#hasBond"> + <rdfs:domain rdf:resource="#Compound"/> + <rdfs:range rdf:resource="#Bond"/> + </owl:ObjectProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#hasStructure --> + + <owl:ObjectProperty rdf:about="#hasStructure"> + <rdfs:domain rdf:resource="#Compound"/> + <rdfs:range rdf:resource="#Structure"/> + </owl:ObjectProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#inBond --> + + <owl:ObjectProperty rdf:about="#inBond"> + <rdfs:range rdf:resource="#Atom"/> + <rdfs:domain rdf:resource="#Bond"/> + </owl:ObjectProperty> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Data properties + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://dl-learner.org/carcinogenesis#amesTestPositive --> + + <owl:DatatypeProperty rdf:about="#amesTestPositive"> + <rdfs:domain rdf:resource="#Compound"/> + <rdfs:range rdf:resource="&xsd;boolean"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#charge --> + + <owl:DatatypeProperty rdf:about="#charge"> + <rdfs:domain rdf:resource="#Atom"/> + <rdfs:range rdf:resource="&xsd;double"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#chromaberr --> + + <owl:DatatypeProperty rdf:about="#chromaberr"> + <rdfs:range rdf:resource="&xsd;boolean"/> + <rdfs:domain rdf:resource="#Compound"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#chromex --> + + <owl:DatatypeProperty rdf:about="#chromex"> + <rdfs:range rdf:resource="&xsd;boolean"/> + <rdfs:domain rdf:resource="#Compound"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#cytogen_ca --> + + <owl:DatatypeProperty rdf:about="#cytogen_ca"> + <rdfs:domain rdf:resource="#Compound"/> + <rdfs:range rdf:resource="&xsd;boolean"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#cytogen_sce --> + + <owl:DatatypeProperty rdf:about="#cytogen_sce"> + <rdfs:domain rdf:resource="#Compound"/> + <rdfs:range rdf:resource="&xsd;boolean"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#drosophila_rt --> + + <owl:DatatypeProperty rdf:about="#drosophila_rt"> + <rdfs:range rdf:resource="&xsd;boolean"/> + <rdfs:domain rdf:resource="#Compound"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#drosophila_slrl --> + + <owl:DatatypeProperty rdf:about="#drosophila_slrl"> + <rdfs:range rdf:resource="&xsd;boolean"/> + <rdfs:domain rdf:resource="#Compound"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#isMutagenic --> + + <owl:DatatypeProperty rdf:about="#isMutagenic"> + <rdfs:domain rdf:resource="#Compound"/> + <rdfs:range rdf:resource="&xsd;boolean"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#micronuc_f --> + + <owl:DatatypeProperty rdf:about="#micronuc_f"> + <rdfs:domain rdf:resource="#Compound"/> + <rdfs:range rdf:resource="&xsd;boolean"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#micronuc_m --> + + <owl:DatatypeProperty rdf:about="#micronuc_m"> + <rdfs:domain rdf:resource="#Compound"/> + <rdfs:range rdf:resource="&xsd;boolean"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#mouse_lymph --> + + <owl:DatatypeProperty rdf:about="#mouse_lymph"> + <rdfs:range rdf:resource="&xsd;boolean"/> + <rdfs:domain rdf:resource="#Compound"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#salmonella --> + + <owl:DatatypeProperty rdf:about="#salmonella"> + <rdfs:range rdf:resource="&xsd;boolean"/> + <rdfs:domain rdf:resource="#Compound"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#salmonella_n --> + + <owl:DatatypeProperty rdf:about="#salmonella_n"> + <rdfs:range rdf:resource="&xsd;boolean"/> + <rdfs:domain rdf:resource="#Compound"/> + </owl:DatatypeProperty> + + + + <!-- http://dl-learner.org/carcinogenesis#salmonella_reduc --> + + <owl:DatatypeProperty rdf:about="#salmonella_reduc"> + <rdfs:domain rdf:resource="#Compound"/> + <rdfs:range rdf:resource="&xsd;boolean"/> + </owl:DatatypeProperty> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Classes + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://dl-learner.org/carcinogenesis#Alcohol --> + + <owl:Class rdf:about="#Alcohol"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Alkyl_halide --> + + <owl:Class rdf:about="#Alkyl_halide"> + <rdfs:subClassOf rdf:resource="#Halide"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Amine --> + + <owl:Class rdf:about="#Amine"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Amino --> + + <owl:Class rdf:about="#Amino"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Ar_halide --> + + <owl:Class rdf:about="#Ar_halide"> + <rdfs:subClassOf rdf:resource="#Halide"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Arsenic --> + + <owl:Class rdf:about="#Arsenic"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Arsenic-101 --> + + <owl:Class rdf:about="#Arsenic-101"> + <rdfs:subClassOf rdf:resource="#Arsenic"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Atom --> + + <owl:Class rdf:about="#Atom"/> + + + + <!-- http://dl-learner.org/carcinogenesis#Barium --> + + <owl:Class rdf:about="#Barium"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Barium-115 --> + + <owl:Class rdf:about="#Barium-115"> + <rdfs:subClassOf rdf:resource="#Barium"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Bond --> + + <owl:Class rdf:about="#Bond"> + <owl:disjointWith rdf:resource="#Structure"/> + <owl:disjointWith rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Bond-1 --> + + <owl:Class rdf:about="#Bond-1"> + <rdfs:subClassOf rdf:resource="#Bond"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Bond-2 --> + + <owl:Class rdf:about="#Bond-2"> + <rdfs:subClassOf rdf:resource="#Bond"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Bond-3 --> + + <owl:Class rdf:about="#Bond-3"> + <rdfs:subClassOf rdf:resource="#Bond"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Bond-7 --> + + <owl:Class rdf:about="#Bond-7"> + <rdfs:subClassOf rdf:resource="#Bond"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Bromine --> + + <owl:Class rdf:about="#Bromine"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Bromine-94 --> + + <owl:Class rdf:about="#Bromine-94"> + <rdfs:subClassOf rdf:resource="#Bromine"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Calcium --> + + <owl:Class rdf:about="#Calcium"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Calcium-84 --> + + <owl:Class rdf:about="#Calcium-84"> + <rdfs:subClassOf rdf:resource="#Calcium"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon --> + + <owl:Class rdf:about="#Carbon"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-10 --> + + <owl:Class rdf:about="#Carbon-10"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-14 --> + + <owl:Class rdf:about="#Carbon-14"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-15 --> + + <owl:Class rdf:about="#Carbon-15"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-16 --> + + <owl:Class rdf:about="#Carbon-16"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-17 --> + + <owl:Class rdf:about="#Carbon-17"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-19 --> + + <owl:Class rdf:about="#Carbon-19"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-191 --> + + <owl:Class rdf:about="#Carbon-191"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-192 --> + + <owl:Class rdf:about="#Carbon-192"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-193 --> + + <owl:Class rdf:about="#Carbon-193"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-21 --> + + <owl:Class rdf:about="#Carbon-21"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-22 --> + + <owl:Class rdf:about="#Carbon-22"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-232 --> + + <owl:Class rdf:about="#Carbon-232"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-26 --> + + <owl:Class rdf:about="#Carbon-26"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-27 --> + + <owl:Class rdf:about="#Carbon-27"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Carbon-29 --> + + <owl:Class rdf:about="#Carbon-29"> + <rdfs:subClassOf rdf:resource="#Carbon"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Chlorine --> + + <owl:Class rdf:about="#Chlorine"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Chlorine-93 --> + + <owl:Class rdf:about="#Chlorine-93"> + <rdfs:subClassOf rdf:resource="#Chlorine"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Compound --> + + <owl:Class rdf:about="#Compound"> + <owl:disjointWith rdf:resource="#Structure"/> + <owl:disjointWith rdf:resource="#Atom"/> + <owl:disjointWith rdf:resource="#Bond"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Copper --> + + <owl:Class rdf:about="#Copper"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Copper-96 --> + + <owl:Class rdf:about="#Copper-96"> + <rdfs:subClassOf rdf:resource="#Copper"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Cyanate --> + + <owl:Class rdf:about="#Cyanate"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di --> + + <owl:Class rdf:about="#Di"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di10 --> + + <owl:Class rdf:about="#Di10"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di227 --> + + <owl:Class rdf:about="#Di227"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di23 --> + + <owl:Class rdf:about="#Di23"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di232 --> + + <owl:Class rdf:about="#Di232"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di260 --> + + <owl:Class rdf:about="#Di260"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di281 --> + + <owl:Class rdf:about="#Di281"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di48 --> + + <owl:Class rdf:about="#Di48"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di51 --> + + <owl:Class rdf:about="#Di51"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di64 --> + + <owl:Class rdf:about="#Di64"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di66 --> + + <owl:Class rdf:about="#Di66"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di67a --> + + <owl:Class rdf:about="#Di67a"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Di8 --> + + <owl:Class rdf:about="#Di8"> + <rdfs:subClassOf rdf:resource="#Di"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Ester --> + + <owl:Class rdf:about="#Ester"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Ether --> + + <owl:Class rdf:about="#Ether"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Ethoxy --> + + <owl:Class rdf:about="#Ethoxy"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Five_ring --> + + <owl:Class rdf:about="#Five_ring"> + <rdfs:subClassOf rdf:resource="#Ring"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Fluorine --> + + <owl:Class rdf:about="#Fluorine"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Fluorine-92 --> + + <owl:Class rdf:about="#Fluorine-92"> + <rdfs:subClassOf rdf:resource="#Fluorine"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Gallium --> + + <owl:Class rdf:about="#Gallium"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Halide --> + + <owl:Class rdf:about="#Halide"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Halide10 --> + + <owl:Class rdf:about="#Halide10"> + <rdfs:subClassOf rdf:resource="#Halide"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Hydrogen --> + + <owl:Class rdf:about="#Hydrogen"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Hydrogen-1 --> + + <owl:Class rdf:about="#Hydrogen-1"> + <rdfs:subClassOf rdf:resource="#Hydrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Hydrogen-2 --> + + <owl:Class rdf:about="#Hydrogen-2"> + <rdfs:subClassOf rdf:resource="#Hydrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Hydrogen-3 --> + + <owl:Class rdf:about="#Hydrogen-3"> + <rdfs:subClassOf rdf:resource="#Hydrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Hydrogen-8 --> + + <owl:Class rdf:about="#Hydrogen-8"> + <rdfs:subClassOf rdf:resource="#Hydrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Imine --> + + <owl:Class rdf:about="#Imine"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Iodine --> + + <owl:Class rdf:about="#Iodine"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Iodine-95 --> + + <owl:Class rdf:about="#Iodine-95"> + <rdfs:subClassOf rdf:resource="#Iodine"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Ketone --> + + <owl:Class rdf:about="#Ketone"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Krypton --> + + <owl:Class rdf:about="#Krypton"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Krypton-83 --> + + <owl:Class rdf:about="#Krypton-83"> + <rdfs:subClassOf rdf:resource="#Krypton"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Lead --> + + <owl:Class rdf:about="#Lead"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Lead-121 --> + + <owl:Class rdf:about="#Lead-121"> + <rdfs:subClassOf rdf:resource="#Lead"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Manganese --> + + <owl:Class rdf:about="#Manganese"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Manganese-85 --> + + <owl:Class rdf:about="#Manganese-85"> + <rdfs:subClassOf rdf:resource="#Manganese"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Mercury --> + + <owl:Class rdf:about="#Mercury"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Mercury-120 --> + + <owl:Class rdf:about="#Mercury-120"> + <rdfs:subClassOf rdf:resource="#Mercury"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Methanol --> + + <owl:Class rdf:about="#Methanol"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Methoxy --> + + <owl:Class rdf:about="#Methoxy"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Methyl --> + + <owl:Class rdf:about="#Methyl"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Molybdenum --> + + <owl:Class rdf:about="#Molybdenum"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitro --> + + <owl:Class rdf:about="#Nitro"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitrogen --> + + <owl:Class rdf:about="#Nitrogen"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitrogen-31 --> + + <owl:Class rdf:about="#Nitrogen-31"> + <rdfs:subClassOf rdf:resource="#Nitrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitrogen-32 --> + + <owl:Class rdf:about="#Nitrogen-32"> + <rdfs:subClassOf rdf:resource="#Nitrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitrogen-33 --> + + <owl:Class rdf:about="#Nitrogen-33"> + <rdfs:subClassOf rdf:resource="#Nitrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitrogen-34 --> + + <owl:Class rdf:about="#Nitrogen-34"> + <rdfs:subClassOf rdf:resource="#Nitrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitrogen-35 --> + + <owl:Class rdf:about="#Nitrogen-35"> + <rdfs:subClassOf rdf:resource="#Nitrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitrogen-36 --> + + <owl:Class rdf:about="#Nitrogen-36"> + <rdfs:subClassOf rdf:resource="#Nitrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitrogen-37 --> + + <owl:Class rdf:about="#Nitrogen-37"> + <rdfs:subClassOf rdf:resource="#Nitrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitrogen-38 --> + + <owl:Class rdf:about="#Nitrogen-38"> + <rdfs:subClassOf rdf:resource="#Nitrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Nitrogen-499 --> + + <owl:Class rdf:about="#Nitrogen-499"> + <rdfs:subClassOf rdf:resource="#Nitrogen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Non_ar_5c_ring --> + + <owl:Class rdf:about="#Non_ar_5c_ring"> + <rdfs:subClassOf rdf:resource="#Ring"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Non_ar_6c_ring --> + + <owl:Class rdf:about="#Non_ar_6c_ring"> + <rdfs:subClassOf rdf:resource="#Ring"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Non_ar_hetero_5_ring --> + + <owl:Class rdf:about="#Non_ar_hetero_5_ring"> + <rdfs:subClassOf rdf:resource="#Ring"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Non_ar_hetero_6_ring --> + + <owl:Class rdf:about="#Non_ar_hetero_6_ring"> + <rdfs:subClassOf rdf:resource="#Ring"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Oxygen --> + + <owl:Class rdf:about="#Oxygen"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Oxygen-40 --> + + <owl:Class rdf:about="#Oxygen-40"> + <rdfs:subClassOf rdf:resource="#Oxygen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Oxygen-41 --> + + <owl:Class rdf:about="#Oxygen-41"> + <rdfs:subClassOf rdf:resource="#Oxygen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Oxygen-42 --> + + <owl:Class rdf:about="#Oxygen-42"> + <rdfs:subClassOf rdf:resource="#Oxygen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Oxygen-45 --> + + <owl:Class rdf:about="#Oxygen-45"> + <rdfs:subClassOf rdf:resource="#Oxygen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Oxygen-49 --> + + <owl:Class rdf:about="#Oxygen-49"> + <rdfs:subClassOf rdf:resource="#Oxygen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Oxygen-50 --> + + <owl:Class rdf:about="#Oxygen-50"> + <rdfs:subClassOf rdf:resource="#Oxygen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Oxygen-51 --> + + <owl:Class rdf:about="#Oxygen-51"> + <rdfs:subClassOf rdf:resource="#Oxygen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Oxygen-52 --> + + <owl:Class rdf:about="#Oxygen-52"> + <rdfs:subClassOf rdf:resource="#Oxygen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Oxygen-53 --> + + <owl:Class rdf:about="#Oxygen-53"> + <rdfs:subClassOf rdf:resource="#Oxygen"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Phenol --> + + <owl:Class rdf:about="#Phenol"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Phosphorus --> + + <owl:Class rdf:about="#Phosphorus"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Phosphorus-60 --> + + <owl:Class rdf:about="#Phosphorus-60"> + <rdfs:subClassOf rdf:resource="#Phosphorus"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Phosphorus-61 --> + + <owl:Class rdf:about="#Phosphorus-61"> + <rdfs:subClassOf rdf:resource="#Phosphorus"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Phosphorus-62 --> + + <owl:Class rdf:about="#Phosphorus-62"> + <rdfs:subClassOf rdf:resource="#Phosphorus"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Ring --> + + <owl:Class rdf:about="#Ring"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Ring_size_4 --> + + <owl:Class rdf:about="#Ring_size_4"> + <rdfs:subClassOf rdf:resource="#Ring"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Selenium --> + + <owl:Class rdf:about="#Selenium"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Selenium-102 --> + + <owl:Class rdf:about="#Selenium-102"> + <rdfs:subClassOf rdf:resource="#Selenium"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Six_ring --> + + <owl:Class rdf:about="#Six_ring"> + <rdfs:subClassOf rdf:resource="#Ring"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sodium --> + + <owl:Class rdf:about="#Sodium"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sodium-81 --> + + <owl:Class rdf:about="#Sodium-81"> + <rdfs:subClassOf rdf:resource="#Sodium"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Structure --> + + <owl:Class rdf:about="#Structure"> + <owl:disjointWith rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfide --> + + <owl:Class rdf:about="#Sulfide"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfo --> + + <owl:Class rdf:about="#Sulfo"> + <rdfs:subClassOf rdf:resource="#Structure"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfur --> + + <owl:Class rdf:about="#Sulfur"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfur-70 --> + + <owl:Class rdf:about="#Sulfur-70"> + <rdfs:subClassOf rdf:resource="#Sulfur"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfur-72 --> + + <owl:Class rdf:about="#Sulfur-72"> + <rdfs:subClassOf rdf:resource="#Sulfur"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfur-74 --> + + <owl:Class rdf:about="#Sulfur-74"> + <rdfs:subClassOf rdf:resource="#Sulfur"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfur-75 --> + + <owl:Class rdf:about="#Sulfur-75"> + <rdfs:subClassOf rdf:resource="#Sulfur"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfur-76 --> + + <owl:Class rdf:about="#Sulfur-76"> + <rdfs:subClassOf rdf:resource="#Sulfur"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfur-77 --> + + <owl:Class rdf:about="#Sulfur-77"> + <rdfs:subClassOf rdf:resource="#Sulfur"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfur-78 --> + + <owl:Class rdf:about="#Sulfur-78"> + <rdfs:subClassOf rdf:resource="#Sulfur"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Sulfur-79 --> + + <owl:Class rdf:about="#Sulfur-79"> + <rdfs:subClassOf rdf:resource="#Sulfur"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Tellurium --> + + <owl:Class rdf:about="#Tellurium"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Tellurium-129 --> + + <owl:Class rdf:about="#Tellurium-129"> + <rdfs:subClassOf rdf:resource="#Tellurium"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Tin --> + + <owl:Class rdf:about="#Tin"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Tin-113 --> + + <owl:Class rdf:about="#Tin-113"> + <rdfs:subClassOf rdf:resource="#Tin"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Titanium --> + + <owl:Class rdf:about="#Titanium"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Titanium-134 --> + + <owl:Class rdf:about="#Titanium-134"> + <rdfs:subClassOf rdf:resource="#Titanium"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Vanadium --> + + <owl:Class rdf:about="#Vanadium"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Zinc --> + + <owl:Class rdf:about="#Zinc"> + <rdfs:subClassOf rdf:resource="#Atom"/> + </owl:Class> + + + + <!-- http://dl-learner.org/carcinogenesis#Zinc-87 --> + + <owl:Class rdf:about="#Zinc-87"> + <rdfs:subClassOf rdf:resource="#Zinc"/> + </owl:Class> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Individuals + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1029 --> + + <Alcohol rdf:about="#alcohol-1029"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1030 --> + + <Alcohol rdf:about="#alcohol-1030"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1031 --> + + <Alcohol rdf:about="#alcohol-1031"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1032 --> + + <Alcohol rdf:about="#alcohol-1032"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1069 --> + + <Alcohol rdf:about="#alcohol-1069"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1070 --> + + <Alcohol rdf:about="#alcohol-1070"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1071 --> + + <Alcohol rdf:about="#alcohol-1071"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1072 --> + + <Alcohol rdf:about="#alcohol-1072"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1073 --> + + <Alcohol rdf:about="#alcohol-1073"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1074 --> + + <Alcohol rdf:about="#alcohol-1074"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-11 --> + + <Alcohol rdf:about="#alcohol-11"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1107 --> + + <Alcohol rdf:about="#alcohol-1107"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1128 --> + + <Alcohol rdf:about="#alcohol-1128"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1322 --> + + <Alcohol rdf:about="#alcohol-1322"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-158 --> + + <Alcohol rdf:about="#alcohol-158"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1581 --> + + <Alcohol rdf:about="#alcohol-1581"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1585 --> + + <Alcohol rdf:about="#alcohol-1585"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1586 --> + + <Alcohol rdf:about="#alcohol-1586"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-165 --> + + <Alcohol rdf:about="#alcohol-165"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1787 --> + + <Alcohol rdf:about="#alcohol-1787"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1833 --> + + <Alcohol rdf:about="#alcohol-1833"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1834 --> + + <Alcohol rdf:about="#alcohol-1834"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1835 --> + + <Alcohol rdf:about="#alcohol-1835"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1836 --> + + <Alcohol rdf:about="#alcohol-1836"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1950 --> + + <Alcohol rdf:about="#alcohol-1950"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-1957 --> + + <Alcohol rdf:about="#alcohol-1957"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2019 --> + + <Alcohol rdf:about="#alcohol-2019"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2045 --> + + <Alcohol rdf:about="#alcohol-2045"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2046 --> + + <Alcohol rdf:about="#alcohol-2046"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2047 --> + + <Alcohol rdf:about="#alcohol-2047"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2110 --> + + <Alcohol rdf:about="#alcohol-2110"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2120 --> + + <Alcohol rdf:about="#alcohol-2120"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2131 --> + + <Alcohol rdf:about="#alcohol-2131"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2132 --> + + <Alcohol rdf:about="#alcohol-2132"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2133 --> + + <Alcohol rdf:about="#alcohol-2133"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2134 --> + + <Alcohol rdf:about="#alcohol-2134"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2155 --> + + <Alcohol rdf:about="#alcohol-2155"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2156 --> + + <Alcohol rdf:about="#alcohol-2156"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2158 --> + + <Alcohol rdf:about="#alcohol-2158"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2172 --> + + <Alcohol rdf:about="#alcohol-2172"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2173 --> + + <Alcohol rdf:about="#alcohol-2173"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2258 --> + + <Alcohol rdf:about="#alcohol-2258"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2259 --> + + <Alcohol rdf:about="#alcohol-2259"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2280 --> + + <Alcohol rdf:about="#alcohol-2280"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2304 --> + + <Alcohol rdf:about="#alcohol-2304"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2305 --> + + <Alcohol rdf:about="#alcohol-2305"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2306 --> + + <Alcohol rdf:about="#alcohol-2306"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2307 --> + + <Alcohol rdf:about="#alcohol-2307"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2370 --> + + <Alcohol rdf:about="#alcohol-2370"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2391 --> + + <Alcohol rdf:about="#alcohol-2391"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2392 --> + + <Alcohol rdf:about="#alcohol-2392"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-240 --> + + <Alcohol rdf:about="#alcohol-240"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2422 --> + + <Alcohol rdf:about="#alcohol-2422"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2423 --> + + <Alcohol rdf:about="#alcohol-2423"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2424 --> + + <Alcohol rdf:about="#alcohol-2424"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2425 --> + + <Alcohol rdf:about="#alcohol-2425"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2459 --> + + <Alcohol rdf:about="#alcohol-2459"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2471 --> + + <Alcohol rdf:about="#alcohol-2471"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2472 --> + + <Alcohol rdf:about="#alcohol-2472"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2509 --> + + <Alcohol rdf:about="#alcohol-2509"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2626 --> + + <Alcohol rdf:about="#alcohol-2626"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2627 --> + + <Alcohol rdf:about="#alcohol-2627"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2639 --> + + <Alcohol rdf:about="#alcohol-2639"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2711 --> + + <Alcohol rdf:about="#alcohol-2711"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2726 --> + + <Alcohol rdf:about="#alcohol-2726"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2727 --> + + <Alcohol rdf:about="#alcohol-2727"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2796 --> + + <Alcohol rdf:about="#alcohol-2796"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2851 --> + + <Alcohol rdf:about="#alcohol-2851"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2852 --> + + <Alcohol rdf:about="#alcohol-2852"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-2853 --> + + <Alcohol rdf:about="#alcohol-2853"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-3019 --> + + <Alcohol rdf:about="#alcohol-3019"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-3020 --> + + <Alcohol rdf:about="#alcohol-3020"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-3106 --> + + <Alcohol rdf:about="#alcohol-3106"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-434 --> + + <Alcohol rdf:about="#alcohol-434"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-435 --> + + <Alcohol rdf:about="#alcohol-435"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-487 --> + + <Alcohol rdf:about="#alcohol-487"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-488 --> + + <Alcohol rdf:about="#alcohol-488"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-489 --> + + <Alcohol rdf:about="#alcohol-489"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-537 --> + + <Alcohol rdf:about="#alcohol-537"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-574 --> + + <Alcohol rdf:about="#alcohol-574"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-623 --> + + <Alcohol rdf:about="#alcohol-623"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-677 --> + + <Alcohol rdf:about="#alcohol-677"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-699 --> + + <Alcohol rdf:about="#alcohol-699"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-719 --> + + <Alcohol rdf:about="#alcohol-719"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-720 --> + + <Alcohol rdf:about="#alcohol-720"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-721 --> + + <Alcohol rdf:about="#alcohol-721"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-722 --> + + <Alcohol rdf:about="#alcohol-722"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-790 --> + + <Alcohol rdf:about="#alcohol-790"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-791 --> + + <Alcohol rdf:about="#alcohol-791"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-792 --> + + <Alcohol rdf:about="#alcohol-792"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-793 --> + + <Alcohol rdf:about="#alcohol-793"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-838 --> + + <Alcohol rdf:about="#alcohol-838"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-839 --> + + <Alcohol rdf:about="#alcohol-839"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-840 --> + + <Alcohol rdf:about="#alcohol-840"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-841 --> + + <Alcohol rdf:about="#alcohol-841"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-842 --> + + <Alcohol rdf:about="#alcohol-842"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-855 --> + + <Alcohol rdf:about="#alcohol-855"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-862 --> + + <Alcohol rdf:about="#alcohol-862"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-869 --> + + <Alcohol rdf:about="#alcohol-869"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-903 --> + + <Alcohol rdf:about="#alcohol-903"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-916 --> + + <Alcohol rdf:about="#alcohol-916"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-917 --> + + <Alcohol rdf:about="#alcohol-917"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-924 --> + + <Alcohol rdf:about="#alcohol-924"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-925 --> + + <Alcohol rdf:about="#alcohol-925"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-926 --> + + <Alcohol rdf:about="#alcohol-926"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-927 --> + + <Alcohol rdf:about="#alcohol-927"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-928 --> + + <Alcohol rdf:about="#alcohol-928"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-929 --> + + <Alcohol rdf:about="#alcohol-929"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-980 --> + + <Alcohol rdf:about="#alcohol-980"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alcohol-986 --> + + <Alcohol rdf:about="#alcohol-986"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-116 --> + + <Alkyl_halide rdf:about="#alkyl_halide-116"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-117 --> + + <Alkyl_halide rdf:about="#alkyl_halide-117"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-118 --> + + <Alkyl_halide rdf:about="#alkyl_halide-118"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-119 --> + + <Alkyl_halide rdf:about="#alkyl_halide-119"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-120 --> + + <Alkyl_halide rdf:about="#alkyl_halide-120"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-121 --> + + <Alkyl_halide rdf:about="#alkyl_halide-121"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-122 --> + + <Alkyl_halide rdf:about="#alkyl_halide-122"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-123 --> + + <Alkyl_halide rdf:about="#alkyl_halide-123"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-124 --> + + <Alkyl_halide rdf:about="#alkyl_halide-124"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-125 --> + + <Alkyl_halide rdf:about="#alkyl_halide-125"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-126 --> + + <Alkyl_halide rdf:about="#alkyl_halide-126"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-127 --> + + <Alkyl_halide rdf:about="#alkyl_halide-127"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-128 --> + + <Alkyl_halide rdf:about="#alkyl_halide-128"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-129 --> + + <Alkyl_halide rdf:about="#alkyl_halide-129"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-130 --> + + <Alkyl_halide rdf:about="#alkyl_halide-130"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-131 --> + + <Alkyl_halide rdf:about="#alkyl_halide-131"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-132 --> + + <Alkyl_halide rdf:about="#alkyl_halide-132"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-133 --> + + <Alkyl_halide rdf:about="#alkyl_halide-133"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-134 --> + + <Alkyl_halide rdf:about="#alkyl_halide-134"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-135 --> + + <Alkyl_halide rdf:about="#alkyl_halide-135"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1439 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1439"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1440 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1440"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1441 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1441"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1444 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1444"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1445 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1445"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1448 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1448"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1449 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1449"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1452 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1452"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1465 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1465"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1466 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1466"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1512 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1512"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1513 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1513"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1514 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1514"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1515 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1515"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1516 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1516"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1517 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1517"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1522 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1522"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-155 --> + + <Alkyl_halide rdf:about="#alkyl_halide-155"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1552 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1552"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-156 --> + + <Alkyl_halide rdf:about="#alkyl_halide-156"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-157 --> + + <Alkyl_halide rdf:about="#alkyl_halide-157"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1584 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1584"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1607 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1607"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1608 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1608"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1643 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1643"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1644 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1644"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1645 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1645"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1646 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1646"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1683 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1683"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1693 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1693"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1694 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1694"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1699 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1699"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1700 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1700"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1701 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1701"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1723 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1723"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1748 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1748"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1766 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1766"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1783 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1783"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1786 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1786"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1794 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1794"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-1979 --> + + <Alkyl_halide rdf:about="#alkyl_halide-1979"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2003 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2003"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2004 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2004"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2005 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2005"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2116 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2116"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2153 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2153"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2154 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2154"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-218 --> + + <Alkyl_halide rdf:about="#alkyl_halide-218"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-219 --> + + <Alkyl_halide rdf:about="#alkyl_halide-219"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-220 --> + + <Alkyl_halide rdf:about="#alkyl_halide-220"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-221 --> + + <Alkyl_halide rdf:about="#alkyl_halide-221"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-222 --> + + <Alkyl_halide rdf:about="#alkyl_halide-222"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-223 --> + + <Alkyl_halide rdf:about="#alkyl_halide-223"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-231 --> + + <Alkyl_halide rdf:about="#alkyl_halide-231"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-232 --> + + <Alkyl_halide rdf:about="#alkyl_halide-232"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2457 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2457"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2458 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2458"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2489 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2489"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2490 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2490"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2491 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2491"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-252 --> + + <Alkyl_halide rdf:about="#alkyl_halide-252"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-253 --> + + <Alkyl_halide rdf:about="#alkyl_halide-253"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-259 --> + + <Alkyl_halide rdf:about="#alkyl_halide-259"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-274 --> + + <Alkyl_halide rdf:about="#alkyl_halide-274"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2751 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2751"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2913 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2913"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2914 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2914"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2915 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2915"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2916 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2916"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2917 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2917"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2918 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2918"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2919 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2919"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2920 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2920"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2921 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2921"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2922 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2922"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2923 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2923"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2924 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2924"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alkyl_halide-2925 --> + + <Alkyl_halide rdf:about="#alkyl_halide-2925"/> + + + + <!-- http://dl-learner.org/carcinogenesis#alk... [truncated message content] |
From: <jen...@us...> - 2008-03-19 08:11:25
|
Revision: 715 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=715&view=rev Author: jenslehmann Date: 2008-03-19 01:11:19 -0700 (Wed, 19 Mar 2008) Log Message: ----------- redundancy check bug fixes changes in heuristic Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-03-17 10:21:51 UTC (rev 714) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-03-19 08:11:19 UTC (rev 715) @@ -115,7 +115,7 @@ // the divide&conquer approach in many ILP programs using a // clause by clause search; after a period of time the candidate // set is reduced to focus CPU time on the most promising concepts - private boolean useCandidateReduction = false; + private boolean useCandidateReduction = true; private int candidatePostReductionSize = 30; // setting to true gracefully stops the algorithm @@ -244,24 +244,36 @@ } public void start() { + + // TODO: write a JUnit test for this problem (long-lasting or infinite loops because + // redundant children of a node are called recursively after when the node is extended + // twice) /* // String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 2 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Ar_halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND >= 5 \"http://dl-learner.org/carcinogenesis#hasBond\". TOP)))"; - String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND (\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE)))"; +// String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND (\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE)))"; + String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 3 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND ALL \"http://dl-learner.org/carcinogenesis#hasAtom\".TOP)))"; + String conceptStr2 = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 4 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND ALL \"http://dl-learner.org/carcinogenesis#hasAtom\".TOP)))"; try { NamedClass struc = new NamedClass("http://dl-learner.org/carcinogenesis#Compound"); Description d = KBParser.parseConcept(conceptStr); + Description d2 = KBParser.parseConcept(conceptStr2); // SortedSet<Description> ds = (SortedSet<Description>) operator.refine(d,15,null,struc); // System.out.println(ds); - System.out.println(RhoDRDown.checkIntersection((Intersection)d)); +// System.out.println(RhoDRDown.checkIntersection((Intersection)d)); Set<Individual> coveredNegatives = rs.instanceCheck(d, learningProblem.getNegativeExamples()); Set<Individual> coveredPositives = rs.instanceCheck(d, learningProblem.getPositiveExamples()); ExampleBasedNode ebn = new ExampleBasedNode(d); ebn.setCoveredExamples(coveredPositives, coveredNegatives); - extendNodeProper(ebn,15); + properRefinements.add(d2); + extendNodeProper(ebn,13); + extendNodeProper(ebn,14); + for(Description refinement: ebn.getChildConcepts()) + System.out.println("refinement: " + refinement); + // Individual i = new Individual("http://dl-learner.org/carcinogenesis#d101"); // for(Individual i : learningProblem.getPositiveExamples()) // rs.instanceCheck(ds.last(), i); @@ -308,7 +320,7 @@ // print statistics at most once a second currentTime = System.nanoTime(); - if(currentTime - lastPrintTime > 1000000000) { + if(currentTime - lastPrintTime > 3000000000l) { printStatistics(false); lastPrintTime = currentTime; logger.debug("--- loop " + loop + " started ---"); @@ -327,7 +339,7 @@ // Logger.getRootLogger().setLevel(Level.TRACE); } - System.out.println("next expanded: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); +// System.out.println("next expanded: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); // chose best node according to heuristics bestNode = candidates.last(); // extend best node @@ -434,8 +446,11 @@ childConceptsDeletionTimeNs += System.nanoTime() - childConceptsDeletionTimeNsStart; -// if(refinements.size()<30) -// System.out.println("refinements: " + refinements); +// if(refinements.size()<30) { +//// System.out.println("refinements: " + refinements); +// for(Description refinement: refinements) +// System.out.println("refinement: " + refinement); +// } long evaluateSetCreationTimeNsStart = System.nanoTime(); @@ -463,7 +478,7 @@ propernessTestsAvoidedByShortConceptConstruction++; propernessDetected = true; - System.out.println("refinement " + refinement + " can be shortened"); +// System.out.println("refinement " + refinement + " can be shortened"); // System.exit(0); } } @@ -517,7 +532,7 @@ } evaluateSetCreationTimeNs += System.nanoTime() - evaluateSetCreationTimeNsStart; -// System.out.println("intermediate 1"); +// System.out.println("intermediate 1 " + node.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); // System.out.println(toEvaluateConcepts.size()); @@ -678,8 +693,17 @@ for(Description refinement : refinements) { // for(int i=0; i<=recDepth; i++) // System.out.print(" "); -// System.out.println("call: " + refinement + " [maxLength " + maxLength + "]"); - extendNodeProper(node, refinement, maxLength, recDepth+1); +// System.out.println("call: " + refinement + " [maxLength " + maxLength + ", rec depth " + recDepth + "]"); + + // check for redundancy (otherwise we may run into very time-intensive loops, + // see planned JUnit test case $x) + + long redundancyCheckTimeNsStart = System.nanoTime(); + boolean redundant = properRefinements.contains(refinement); + redundancyCheckTimeNs += System.nanoTime() - redundancyCheckTimeNsStart; + + if(!redundant) + extendNodeProper(node, refinement, maxLength, recDepth+1); // for(int i=0; i<=recDepth; i++) // System.out.print(" "); // System.out.println("finished: " + refinement + " [maxLength " + maxLength + "]"); Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java 2008-03-17 10:21:51 UTC (rev 714) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java 2008-03-19 08:11:19 UTC (rev 715) @@ -79,6 +79,9 @@ private double gainBonusFactor; private double nodeChildPenalty = 0.0001; private double startNodeBonus = 1.0; + // penalise errors on positive examples harder than on negative examples + // (positive weight = 1) + private double negativeWeight = 0.8; // examples private int nrOfNegativeExamples; @@ -113,11 +116,11 @@ } public double getNodeScore(ExampleBasedNode node) { - double accuracy = getAccuracy(node.getCoveredPositives().size(),node.getCoveredNegatives().size()); + double accuracy = getWeightedAccuracy(node.getCoveredPositives().size(),node.getCoveredNegatives().size()); ExampleBasedNode parent = node.getParent(); double gain = 0; if(parent != null) { - double parentAccuracy = getAccuracy(parent.getCoveredPositives().size(),parent.getCoveredNegatives().size()); + double parentAccuracy = getWeightedAccuracy(parent.getCoveredPositives().size(),parent.getCoveredNegatives().size()); gain = accuracy - parentAccuracy; } else { accuracy += startNodeBonus; @@ -126,9 +129,8 @@ return accuracy + gainBonusFactor * gain - expansionPenaltyFactor * he - nodeChildPenalty * node.getChildren().size(); } - private double getAccuracy(int coveredPositives, int coveredNegatives) { - return (coveredPositives + nrOfNegativeExamples - coveredNegatives)/(double)nrOfExamples; - + private double getWeightedAccuracy(int coveredPositives, int coveredNegatives) { + return (coveredPositives + negativeWeight * (nrOfNegativeExamples - coveredNegatives))/(double)nrOfExamples; } public static double getNodeScore(ExampleBasedNode node, int nrOfPositiveExamples, int nrOfNegativeExamples) { Modified: trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-03-17 10:21:51 UTC (rev 714) +++ trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-03-19 08:11:19 UTC (rev 715) @@ -123,6 +123,9 @@ private static boolean learnCarcinogenic = true; private static boolean useNewGroups = true; + private static boolean createPTE1Conf = false; + private static boolean createPTE2Conf = false; + /** * @param args * No arguments supported. @@ -133,14 +136,13 @@ public static void main(String[] args) throws FileNotFoundException, IOException, ParseException { - // TODO: newgroups are not mapped currently String[] files = new String[] { "newgroups.pl", "ames.pl", "atoms.pl", "bonds.pl", "gentoxprops.pl", "ind_nos.pl", "ind_pos.pl"}; // "pte2/canc_nos.pl", "pte2/pte2ames.pl", "pte2/pte2atoms.pl", // "pte2/pte2bonds.pl", "pte2/pte2gentox.pl", "pte2/pte2ind_nos.pl", "pte2/pte2newgroups.pl" // "train.b" => not a pure Prolog file but Progol/Aleph specific // }; - File owlFile = new File("examples/carcinogenesis/pte.owl"); + File owlFile = new File("examples/carcinogenesis/carcinogenesis.owl"); Program program = null; long startTime, duration; @@ -281,7 +283,6 @@ // generating test examples for PTE-1 // => put all in one file, because they were used as training for PTE-2 File confPTE1File = new File("examples/carcinogenesis/testpte1.conf"); - Files.clearFile(confPTE1File); File testPTE1Positives = new File(prologDirectory + "pte1.f"); File testPTE1Negatives = new File(prologDirectory + "pte1.n"); @@ -289,16 +290,20 @@ List<Individual> negPTE1Examples = getExamples(testPTE1Negatives); appendPosExamples(confTrainFile, posPTE1Examples); appendNegExamples(confTrainFile, negPTE1Examples); - Files.clearFile(confPTE1File); - Files.appendFile(confPTE1File, "import(\"pte.owl\");\nreasoner=fastInstanceChecker;\n\n"); - appendPosExamples(confPTE1File, posPTE1Examples); - appendNegExamples(confPTE1File, negPTE1Examples); + if(createPTE1Conf) { + Files.clearFile(confPTE1File); + Files.appendFile(confPTE1File, "import(\"pte.owl\");\nreasoner=fastInstanceChecker;\n\n"); + appendPosExamples(confPTE1File, posPTE1Examples); + appendNegExamples(confPTE1File, negPTE1Examples); + } // create a PTE-2 test file - File confPTE2File = new File("examples/carcinogenesis/testpte2.conf"); - Files.clearFile(confPTE2File); - Files.appendFile(confPTE2File, "import(\"pte.owl\");\nreasoner=fastInstanceChecker;\n\n"); - Files.appendFile(confPTE2File, getPTE2Examples()); + if(createPTE2Conf) { + File confPTE2File = new File("examples/carcinogenesis/testpte2.conf"); + Files.clearFile(confPTE2File); + Files.appendFile(confPTE2File, "import(\"pte.owl\");\nreasoner=fastInstanceChecker;\n\n"); + Files.appendFile(confPTE2File, getPTE2Examples()); + } } Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-03-17 10:21:51 UTC (rev 714) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-03-19 08:11:19 UTC (rev 715) @@ -325,10 +325,10 @@ return true; // earyl abort: e.g. >= 10 hasStructure.Methyl; // if there are 11 fillers and 2 are not Methyl, the result is false - } /* else { + } else { if(roleFillers.size() - index < number) return false; - }*/ + } } return false; } else if (description instanceof ObjectMaxCardinalityRestriction) { @@ -363,10 +363,10 @@ return false; // earyl abort: e.g. <= 5 hasStructure.Methyl; // if there are 6 fillers and 2 are not Methyl, the result is true - } /* else { + } else { if(roleFillers.size() - index <= number) return true; - } */ + } } return true; } else if (description instanceof BooleanValueRestriction) { Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2008-03-17 10:21:51 UTC (rev 714) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2008-03-19 08:11:19 UTC (rev 715) @@ -92,6 +92,10 @@ // maximum number of fillers for eeach role private Map<ObjectProperty,Integer> maxNrOfFillers = new TreeMap<ObjectProperty,Integer>(); + // limit for cardinality restrictions (this makes sense if we e.g. have compounds with up to + // more than 200 atoms but we are only interested in atoms with certain characteristics and do + // not want something like e.g. >= 204 hasAtom.NOT Carbon-87; which blows up the search space + private int cardinalityLimit = 5; // start concept (can be used to start from an arbitrary concept, needs // to be Thing or NamedClass), note that when you use e.g. Compound as @@ -105,7 +109,7 @@ private int topRefinementsLength = 0; private Map<NamedClass, Integer> topARefinementsLength = new TreeMap<NamedClass, Integer>(); // M is finite and this value is the maximum length of any value in M - private static int mMaxLength = 3; + private static int mMaxLength = 4; // the sets M_\top and M_A private Map<Integer,SortedSet<Description>> m = new TreeMap<Integer,SortedSet<Description>>(); @@ -194,15 +198,22 @@ } // determine the maximum number of fillers for each role + // (up to a specified cardinality maximum) + if(useCardinalityRestrictions) { for(ObjectProperty op : rs.getAtomicRoles()) { int maxFillers = 0; Map<Individual,SortedSet<Individual>> opMembers = rs.getRoleMembers(op); for(SortedSet<Individual> inds : opMembers.values()) { if(inds.size()>maxFillers) maxFillers = inds.size(); + if(maxFillers >= cardinalityLimit) { + maxFillers = cardinalityLimit; + break; + } } maxNrOfFillers.put(op, maxFillers); } + } /* String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 2 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Ar_halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND >= 5 \"http://dl-learner.org/carcinogenesis#hasBond\". TOP)))"; @@ -412,23 +423,41 @@ // rule 4: ALL r.D => <= (maxFillers-1) r.D // (length increases by 1 so we have to check whether max length is sufficient) - if(useCardinalityRestrictions) { - if(maxLength > description.getLength() && maxNrOfFillers.get(ar)>1) { - ObjectMaxCardinalityRestriction max = new ObjectMaxCardinalityRestriction(maxNrOfFillers.get(ar)-1,role,description.getChild(0)); - refinements.add(max); - } - } + // => commented out because this is acutally not a downward refinement +// if(useCardinalityRestrictions) { +// if(maxLength > description.getLength() && maxNrOfFillers.get(ar)>1) { +// ObjectMaxCardinalityRestriction max = new ObjectMaxCardinalityRestriction(maxNrOfFillers.get(ar)-1,role,description.getChild(0)); +// refinements.add(max); +// } +// } } else if (description instanceof ObjectCardinalityRestriction) { + ObjectPropertyExpression role = ((ObjectCardinalityRestriction)description).getRole(); + Description range = opRanges.get(role); + int number = ((ObjectCardinalityRestriction)description).getCardinality(); if(description instanceof ObjectMaxCardinalityRestriction) { - // <= x r.C => <= (x-1) r.C + // rule 1: <= x r.C => <= x r.D + tmp = refine(description.getChild(0), maxLength-3, null, range); + + for(Description d : tmp) { + refinements.add(new ObjectMaxCardinalityRestriction(number,role,d)); + } + + // rule 2: <= x r.C => <= (x-1) r.C ObjectMaxCardinalityRestriction max = (ObjectMaxCardinalityRestriction) description; - int number = max.getNumber(); - if(number > 0) +// int number = max.getNumber(); + if(number > 1) refinements.add(new ObjectMaxCardinalityRestriction(number-1,max.getRole(),max.getChild(0))); + } else if(description instanceof ObjectMinCardinalityRestriction) { + tmp = refine(description.getChild(0), maxLength-3, null, range); + + for(Description d : tmp) { + refinements.add(new ObjectMinCardinalityRestriction(number,role,d)); + } + // >= x r.C => >= (x+1) r.C ObjectMinCardinalityRestriction min = (ObjectMinCardinalityRestriction) description; - int number = min.getNumber(); +// int number = min.getNumber(); if(number < maxNrOfFillers.get(min.getRole())) refinements.add(new ObjectMinCardinalityRestriction(number+1,min.getRole(),min.getChild(0))); } @@ -723,7 +752,7 @@ long mComputationTimeStartNs = System.nanoTime(); // initialise all possible lengths (1 to 3) - for(int i=1; i<=3; i++) { + for(int i=1; i<=mMaxLength; i++) { m.put(i, new TreeSet<Description>(conceptComparator)); } @@ -777,6 +806,15 @@ m.put(3,m3); + SortedSet<Description> m4 = new TreeSet<Description>(conceptComparator); + if(useCardinalityRestrictions) { + for(ObjectProperty r : rs.getMostGeneralRoles()) { + int maxFillers = maxNrOfFillers.get(r); + m4.add(new ObjectMaxCardinalityRestriction(maxFillers-1, r, new Thing())); + } + } + m.put(4,m4); + mComputationTimeNs += System.nanoTime() - mComputationTimeStartNs; } @@ -866,6 +904,15 @@ mA.get(nc).put(3,m3); + SortedSet<Description> m4 = new TreeSet<Description>(conceptComparator); + if(useCardinalityRestrictions) { + for(ObjectProperty r : mgr.get(nc)) { + int maxFillers = maxNrOfFillers.get(r); + m4.add(new ObjectMaxCardinalityRestriction(maxFillers-1, r, new Thing())); + } + } + mA.get(nc).put(4,m4); + mComputationTimeNs += System.nanoTime() - mComputationTimeStartNs; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-03-17 10:22:07
|
Revision: 714 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=714&view=rev Author: lorenz_b Date: 2008-03-17 03:21:51 -0700 (Mon, 17 Mar 2008) Log Message: ----------- First Steps Select KnowledgeSource Select Concept Auto-Select pos/neg-Examples Start Learning-Algorithm Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java 2008-03-17 10:21:51 UTC (rev 714) @@ -0,0 +1,5 @@ +package org.dllearner.tools.ore; + +public class Enrichment { + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-16 19:03:46 UTC (rev 713) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-17 10:21:51 UTC (rev 714) @@ -19,12 +19,591 @@ */ package org.dllearner.tools.ore; +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.algorithms.BruteForceLearner; +import org.dllearner.algorithms.RandomGuesser; +import org.dllearner.algorithms.gp.GP; +import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; +import org.dllearner.algorithms.refinement.ROLearner; +import org.dllearner.cli.ConfFileOption; +import org.dllearner.core.Component; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.config.BooleanConfigOption; +import org.dllearner.core.config.ConfigEntry; +import org.dllearner.core.config.ConfigOption; +import org.dllearner.core.config.DoubleConfigOption; +import org.dllearner.core.config.IntegerConfigOption; +import org.dllearner.core.config.InvalidConfigOptionValueException; +import org.dllearner.core.config.StringConfigOption; +import org.dllearner.core.config.StringSetConfigOption; +import org.dllearner.core.config.StringTupleListConfigOption; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.kb.KBFile; +import org.dllearner.kb.OWLFile; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.parser.ConfParser; +import org.dllearner.parser.KBParser; +import org.dllearner.parser.ParseException; +import org.dllearner.parser.TokenMgrError; +import org.dllearner.reasoning.DIGReasoner; +import org.dllearner.reasoning.FastInstanceChecker; +import org.dllearner.reasoning.FastRetrievalReasoner; +import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.utilities.ConceptComparator; +import org.dllearner.utilities.Datastructures; +import org.dllearner.utilities.Helper; +import org.dllearner.utilities.StringTuple; + /** * Start class for the ontology repair and enrichment tool. * - * @author Lorenz Bühmann. + * @author Lorenz Buehmann. * */ public class ORE { + private static Logger logger = Logger.getRootLogger(); + + private static LearningAlgorithm la; + private ReasoningService rs; + + /** + * Entry point for CLI interface. + * + * @param args + */ + public static void main(String[] args) throws ComponentInitException { + + File file = new File(args[args.length - 1]); + + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.DEBUG); + + ORE ore = null; + ore = new ORE(file); + ore.start(); + } + + /** + * Initialise all components based on conf file. + * + * @param file + * Conf file to read. + * @throws ComponentInitException + */ + public ORE(File file) throws ComponentInitException { + String baseDir = file.getParentFile().getPath(); + + // create component manager instance + String message = "starting component manager ... "; + long cmStartTime = System.nanoTime(); + ComponentManager cm = ComponentManager.getInstance(); + long cmTime = System.nanoTime() - cmStartTime; + message += "OK (" + Helper.prettyPrintNanoSeconds(cmTime) + ")"; + logger.info(message); + + // create a mapping between components and prefixes in the conf file + Map<Class<? extends Component>, String> componentPrefixMapping = createComponentPrefixMapping(); + + // parse conf file + ConfParser parser = ConfParser.parseFile(file); + + // step 1: detect knowledge sources + Set<KnowledgeSource> sources = new HashSet<KnowledgeSource>(); + Map<URL, Class<? extends KnowledgeSource>> importedFiles = getImportedFiles( + parser, baseDir); + for (Map.Entry<URL, Class<? extends KnowledgeSource>> entry : importedFiles + .entrySet()) { + KnowledgeSource ks = cm.knowledgeSource(entry.getValue()); + // apply URL entry (this assumes that every knowledge source has a + // configuration option "url"), so this may need to be changed in + // the + // future + cm.applyConfigEntry(ks, "url", entry.getKey().toString()); + + sources.add(ks); + configureComponent(cm, ks, componentPrefixMapping, parser); + initComponent(cm, ks); + } + + // step 2: detect used reasoner + ConfFileOption reasonerOption = parser.getConfOptionsByName("reasoner"); + ReasonerComponent reasoner = cm.reasoner( + getReasonerClass(reasonerOption), sources); + configureComponent(cm, reasoner, componentPrefixMapping, parser); + initComponent(cm, reasoner); + rs = cm.reasoningService(reasoner); + + } + + public void start() { + processOREMode(rs); + + } + + /** + * creates a mapping from components to option prefix strings + */ + public static Map<Class<? extends Component>, String> createComponentPrefixMapping() { + Map<Class<? extends Component>, String> componentPrefixMapping = new HashMap<Class<? extends Component>, String>(); + // knowledge sources + componentPrefixMapping.put(SparqlKnowledgeSource.class, "sparql"); + // reasoners + componentPrefixMapping.put(DIGReasoner.class, "digReasoner"); + componentPrefixMapping.put(OWLAPIReasoner.class, "owlAPIReasoner"); + // learning problems - configured via + and - flags for examples + componentPrefixMapping.put(PosNegDefinitionLP.class, + "posNegDefinitionLP"); + // learning algorithms + componentPrefixMapping.put(ROLearner.class, "refinement"); + componentPrefixMapping.put(ExampleBasedROLComponent.class, + "refexamples"); + componentPrefixMapping.put(GP.class, "gp"); + return componentPrefixMapping; + } + + /** + * convenience method basically every prefix (e.g. "refinement" in + * "refinement.horizontalExpFactor) corresponds to a specific component - + * this way the CLI will automatically support any configuration options + * supported by the component + */ + public static void configureComponent(ComponentManager cm, + Component component, + Map<Class<? extends Component>, String> componentPrefixMapping, + ConfParser parser) { + String prefix = componentPrefixMapping.get(component.getClass()); + if (prefix != null) + configureComponent(cm, component, parser + .getConfOptionsByPrefix(prefix)); + } + + // convenience method - see above method + private static void configureComponent(ComponentManager cm, + Component component, List<ConfFileOption> options) { + if (options != null) + for (ConfFileOption option : options) + applyConfFileOption(cm, component, option); + } + + // applies an option to a component - checks whether the option and its + // value is valid + private static void applyConfFileOption(ComponentManager cm, + Component component, ConfFileOption option) { + // the name of the option is suboption-part (the first part refers + // to its component) + String optionName = option.getSubOption(); + + ConfigOption<?> configOption = cm.getConfigOption(component.getClass(), + optionName); + // check whether such an option exists + if (configOption != null) { + + // catch all invalid config options + try { + + // perform compatibility checks + if (configOption instanceof StringConfigOption + && option.isStringOption()) { + + ConfigEntry<String> entry = new ConfigEntry<String>( + (StringConfigOption) configOption, option + .getStringValue()); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof IntegerConfigOption + && option.isIntegerOption()) { + + ConfigEntry<Integer> entry = new ConfigEntry<Integer>( + (IntegerConfigOption) configOption, option + .getIntValue()); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof DoubleConfigOption + && (option.isIntegerOption() || option.isDoubleOption())) { + + double value; + if (option.isIntegerOption()) + value = option.getIntValue(); + else + value = option.getDoubleValue(); + + ConfigEntry<Double> entry = new ConfigEntry<Double>( + (DoubleConfigOption) configOption, value); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof BooleanConfigOption + && option.isStringOption()) { + + ConfigEntry<Boolean> entry = new ConfigEntry<Boolean>( + (BooleanConfigOption) configOption, Datastructures + .strToBool(option.getStringValue())); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof StringSetConfigOption + && option.isSetOption()) { + + ConfigEntry<Set<String>> entry = new ConfigEntry<Set<String>>( + (StringSetConfigOption) configOption, option + .getSetValues()); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof StringTupleListConfigOption + && option.isListOption()) { + + ConfigEntry<List<StringTuple>> entry = new ConfigEntry<List<StringTuple>>( + (StringTupleListConfigOption) configOption, option + .getListTuples()); + cm.applyConfigEntry(component, entry); + + } else { + handleError("The type of conf file entry \"" + + option.getFullName() + + "\" is not correct: value \"" + option.getValue() + + "\" not valid for option type \"" + + configOption.getClass().getName() + "\"."); + } + + } catch (InvalidConfigOptionValueException e) { + e.printStackTrace(); + System.exit(0); + } + + } else + handleError("Unknow option " + option + "."); + } + + /** + * detects all imported files and their format + */ + public static Map<URL, Class<? extends KnowledgeSource>> getImportedFiles( + ConfParser parser, String baseDir) { + List<List<String>> imports = parser.getFunctionCalls().get("import"); + Map<URL, Class<? extends KnowledgeSource>> importedFiles = new HashMap<URL, Class<? extends KnowledgeSource>>(); + + if (imports != null) { + for (List<String> arguments : imports) { + // step 1: detect URL + URL url = null; + try { + String fileString = arguments.get(0); + if (fileString.startsWith("http:")) { + url = new URL(fileString); + } else { + File f = new File(baseDir, arguments.get(0)); + url = f.toURI().toURL(); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } + + // step 2: detect format + Class<? extends KnowledgeSource> ksClass; + if (arguments.size() == 1) { + String filename = url.getPath(); + String ending = filename.substring(filename + .lastIndexOf(".") + 1); + + if (ending.equals("rdf") || ending.equals("owl")) + ksClass = OWLFile.class; + else if (ending.equals("nt")) + ksClass = OWLFile.class; + else if (ending.equals("kb")) + ksClass = KBFile.class; + else { + System.err.println("Warning: no format given for " + + arguments.get(0) + + " and could not detect it. Chosing RDF/XML."); + ksClass = OWLFile.class; + } + + importedFiles.put(url, ksClass); + } else { + String formatString = arguments.get(1); + + if (formatString.equals("RDF/XML")) + ksClass = OWLFile.class; + else if (formatString.equals("KB")) + ksClass = KBFile.class; + else if (formatString.equals("SPARQL")) + ksClass = SparqlKnowledgeSource.class; + else if (formatString.equals("NT")) + ksClass = OWLFile.class; + else { + throw new RuntimeException( + "Unsupported knowledge source format " + + formatString + ". Exiting."); + } + + importedFiles.put(url, ksClass); + } + } + } + + return importedFiles; + } + + private static void initComponent(ComponentManager cm, Component component) + throws ComponentInitException { + String startMessage = "initialising component \"" + + cm.getComponentName(component.getClass()) + "\" ... "; + long initStartTime = System.nanoTime(); + component.init(); + // standard messsage is just "OK" but can be more detailed for certain + // components + String message = "OK"; + if (component instanceof KBFile) + message = ((KBFile) component).getURL().toString() + " read"; + else if (component instanceof DIGReasoner) { + DIGReasoner reasoner = (DIGReasoner) component; + message = "using " + reasoner.getIdentifier() + + " connected via DIG 1.1 at " + + reasoner.getReasonerURL().toString(); + } + + long initTime = System.nanoTime() - initStartTime; + logger.info(startMessage + message + " (" + + Helper.prettyPrintNanoSeconds(initTime, false, false) + ")"); + } + + private static void processOREMode(ReasoningService rs) { + System.err.println("Concepts :" + rs.getAtomicConcepts()); + + System.out.println("Individuals " + rs.getIndividuals()); + System.out + .println("Entering ORE mode. Enter a existing concept for learning(new) or q to quit"); + + String conceptStr = ""; + do { + //Step 1: choose existing concept which should be (new) learned + System.out.print("enter concept: "); + // read input string + BufferedReader input = new BufferedReader(new InputStreamReader( + System.in)); + + try { + conceptStr = input.readLine(); + } catch (IOException e) { + e.printStackTrace(); + } + + if (!conceptStr.equals("q")) { + + // parse concept + Description concept = null; + boolean parsedCorrectly = true; + + try { + concept = KBParser.parseConcept(conceptStr); + + } catch (ParseException e1) { + e1.printStackTrace(); + System.err + .println("The concept you entered could not be parsed. Please try again."); + parsedCorrectly = false; + } catch (TokenMgrError e) { + e.printStackTrace(); + System.err + .println("An error occured during parsing. Please enter a syntactically valid concept."); + parsedCorrectly = false; + } + + if (parsedCorrectly) { + + // compute atomic concepts used in concept + SortedSet<NamedClass> occurringConcepts = new TreeSet<NamedClass>( + new ConceptComparator()); + occurringConcepts.addAll(Helper.getAtomicConcepts(concept)); + + // substract existing concepts from detected + // concepts -> the resulting set should be + // empty, otherwise print a warning (the DIG reasoner + // will just treat them as concepts about which it + // has no knowledge - this makes it hard to + // detect typos + // (note that removeAll currently gives a different + // result here, because the comparator of the argument + // is used) + for (NamedClass ac : rs.getAtomicConcepts()) + occurringConcepts.remove(ac); + + boolean nonExistingConstructs = false; + if (occurringConcepts.size() != 0) { + System.out + .println("You used non-existing atomic concepts or roles. Please correct your query."); + if (occurringConcepts.size() > 0) + + System.out.println("non-existing concepts: " + + occurringConcepts); + + nonExistingConstructs = true; + } + + if (!nonExistingConstructs) { + + // Step 2_1: choose all individuals of the concept as positive examples + SortedSet<Individual> posExamples = null; + posExamples = rs.retrieval(concept); + posExamples.removeAll(posExamples); + posExamples.add(new Individual( + "http://example.com/father#stefan")); + posExamples.add(new Individual( + "http://example.com/father#markus")); + posExamples.add(new Individual( + "http://example.com/father#martin")); + + //Step 2_2: subtract positive examples from all individuals of the ontology + //->negative examples of the concepts + SortedSet<Individual> negExamples = null; + negExamples = rs.getIndividuals(); + for (Individual rem_pos : posExamples) + negExamples.remove(rem_pos); + System.out.println("+" + posExamples); + System.out.println("-" + negExamples); + + //Step 3: Start learning-algorithm + + // step 3_1: set learning problem + ComponentManager cm = ComponentManager.getInstance(); + + PosNegDefinitionLP lp = new PosNegDefinitionLP(rs, + posExamples, negExamples); + + try { + initComponent(cm, lp); + } catch (ComponentInitException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + // step 3_2: set learning algorithm + + la = new ROLearner(lp, rs); + + try { + initComponent(cm, la); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + Thread laThread = new Thread() + { + public void run(){ + la.start(); + } + }; + laThread.start(); + + + System.out.println(la.getBestSolutions(5)); + + //Step 4: Knowledge Engineer chooses one of the suggestions + + //Step 5: Enrichment + + //Step 6: Repair:-check which individuals cause inconsistency + // -problem solving + + } + } + } + + } while (!conceptStr.equals("q")); + + } + + /** + * error handling over the logger + * + * @param message + * is a string and you message for problem + */ + public static void handleError(String message) { + logger.error(message); + System.exit(0); + } + + public ReasoningService getReasoningService() { + return rs; + } + + // edit by Tilo Hielscher + + /** + * Set Reasoner class. Define here all possible reasoners. + * + * @param reasonerOption + * from config file + * @return reasonerClass reasoner class + */ + public static Class<? extends ReasonerComponent> getReasonerClass( + ConfFileOption reasonerOption) { + Class<? extends ReasonerComponent> reasonerClass = null; + if (reasonerOption == null + || reasonerOption.getStringValue().equals("dig")) + reasonerClass = DIGReasoner.class; + else if (reasonerOption.getStringValue().equals("owlAPI")) + reasonerClass = OWLAPIReasoner.class; + else if (reasonerOption.getStringValue().equals("fastRetrieval")) + reasonerClass = FastRetrievalReasoner.class; + else if (reasonerOption.getStringValue().equals("fastInstanceChecker")) + reasonerClass = FastInstanceChecker.class; + else { + handleError("Unknown value " + reasonerOption.getStringValue() + + " for option \"reasoner\"."); + } + return reasonerClass; + } + + public static Class<? extends LearningAlgorithm> getLearningAlgorithm( + ConfFileOption algorithmOption) { + Class<? extends LearningAlgorithm> laClass = null; + if (algorithmOption == null + || algorithmOption.getStringValue().equals("refinement")) + laClass = ROLearner.class; + else if (algorithmOption.getStringValue().equals("refexamples")) + laClass = ExampleBasedROLComponent.class; + else if (algorithmOption.getStringValue().equals("gp")) + laClass = GP.class; + else if (algorithmOption.getStringValue().equals("bruteForce")) + laClass = BruteForceLearner.class; + else if (algorithmOption.getStringValue().equals("randomGuesser")) + laClass = RandomGuesser.class; + else + handleError("Unknown value in " + algorithmOption); + + return laClass; + } + } Added: trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java 2008-03-17 10:21:51 UTC (rev 714) @@ -0,0 +1,5 @@ +package org.dllearner.tools.ore; + +public class Repair { + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-03-16 19:03:58
|
Revision: 713 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=713&view=rev Author: jenslehmann Date: 2008-03-16 12:03:46 -0700 (Sun, 16 Mar 2008) Log Message: ----------- partial cardinality restriction learning support Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/Info.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java trunk/src/dl-learner/org/dllearner/core/ComponentManager.java trunk/src/dl-learner/org/dllearner/core/ComponentPool.java trunk/src/dl-learner/org/dllearner/core/Reasoner.java trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/core/ReasoningService.java trunk/src/dl-learner/org/dllearner/core/owl/ObjectCardinalityRestriction.java trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java trunk/src/dl-learner/org/dllearner/reasoning/DIGReasoner.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java trunk/src/dl-learner/org/dllearner/utilities/ConceptComparator.java trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/Info.java 2008-03-16 19:03:46 UTC (rev 713) @@ -3,6 +3,6 @@ package org.dllearner; public class Info { - public static final String build = "2008-02-18"; + public static final String build = "2008-03-16"; } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-03-16 19:03:46 UTC (rev 713) @@ -30,7 +30,6 @@ import java.util.SortedSet; import java.util.TreeSet; -import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.dllearner.algorithms.refinement.RefinementOperator; import org.dllearner.core.LearningProblem; @@ -39,8 +38,8 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; +import org.dllearner.core.owl.Thing; import org.dllearner.core.owl.Union; -import org.dllearner.core.owl.Thing; import org.dllearner.learningproblems.PosNegLP; import org.dllearner.learningproblems.PosOnlyDefinitionLP; import org.dllearner.refinementoperators.RhoDRDown; @@ -116,7 +115,7 @@ // the divide&conquer approach in many ILP programs using a // clause by clause search; after a period of time the candidate // set is reduced to focus CPU time on the most promising concepts - private boolean useCandidateReduction = true; + private boolean useCandidateReduction = false; private int candidatePostReductionSize = 30; // setting to true gracefully stops the algorithm @@ -214,6 +213,11 @@ posOnly = false; nrOfPositiveExamples = lp.getPositiveExamples().size(); nrOfNegativeExamples = lp.getNegativeExamples().size(); + +// System.out.println(nrOfPositiveExamples); +// System.out.println(nrOfNegativeExamples); +// System.exit(0); + } else if(learningProblem instanceof PosOnlyDefinitionLP) { PosOnlyDefinitionLP lp = (PosOnlyDefinitionLP) learningProblem; this.posOnlyLearningProblem = lp; @@ -236,10 +240,40 @@ this.useShortConceptConstruction = useShortConceptConstruction; baseURI = rs.getBaseURI(); - logger.setLevel(Level.DEBUG); +// logger.setLevel(Level.DEBUG); } public void start() { + /* +// String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 2 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Ar_halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND >= 5 \"http://dl-learner.org/carcinogenesis#hasBond\". TOP)))"; + String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND (\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE)))"; + try { + NamedClass struc = new NamedClass("http://dl-learner.org/carcinogenesis#Compound"); + Description d = KBParser.parseConcept(conceptStr); +// SortedSet<Description> ds = (SortedSet<Description>) operator.refine(d,15,null,struc); +// System.out.println(ds); + + System.out.println(RhoDRDown.checkIntersection((Intersection)d)); + + + Set<Individual> coveredNegatives = rs.instanceCheck(d, learningProblem.getNegativeExamples()); + Set<Individual> coveredPositives = rs.instanceCheck(d, learningProblem.getPositiveExamples()); + ExampleBasedNode ebn = new ExampleBasedNode(d); + ebn.setCoveredExamples(coveredPositives, coveredNegatives); + extendNodeProper(ebn,15); + + // Individual i = new Individual("http://dl-learner.org/carcinogenesis#d101"); +// for(Individual i : learningProblem.getPositiveExamples()) +// rs.instanceCheck(ds.last(), i); + + System.out.println("finished"); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + System.exit(0); + */ + // calculate quality threshold required for a solution allowedMisclassifications = (int) Math.round(noise * nrOfExamples); @@ -290,8 +324,10 @@ if(useCandidateReduction && (currentTime - lastReductionTime > reductionInterval)) { reduceCandidates(); lastReductionTime = System.nanoTime(); +// Logger.getRootLogger().setLevel(Level.TRACE); } + System.out.println("next expanded: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); // chose best node according to heuristics bestNode = candidates.last(); // extend best node @@ -304,7 +340,8 @@ // newCandidates has been filled during node expansion candidates.addAll(newCandidates); candidatesStable.addAll(newCandidates); - +// System.out.println("done"); + if(writeSearchTree) { // String treeString = ""; String treeString = "best node: " + bestNode+ "\n"; @@ -338,13 +375,13 @@ logger.info(" " + c + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); } } - System.out.println("size of candidate set: " + candidates.size()); + logger.debug("size of candidate set: " + candidates.size()); printStatistics(true); if(stop) - System.out.println("Algorithm stopped."); + logger.info("Algorithm stopped."); else - System.out.println("Algorithm terminated succesfully."); + logger.info("Algorithm terminated succesfully."); } // we apply the operator recursively until all proper refinements up @@ -397,14 +434,18 @@ childConceptsDeletionTimeNs += System.nanoTime() - childConceptsDeletionTimeNsStart; +// if(refinements.size()<30) +// System.out.println("refinements: " + refinements); + long evaluateSetCreationTimeNsStart = System.nanoTime(); // alle Konzepte, die länger als horizontal expansion sind, müssen ausgewertet // werden - Set<Description> toEvaluateConcepts = new TreeSet<Description>(conceptComparator); + TreeSet<Description> toEvaluateConcepts = new TreeSet<Description>(conceptComparator); Iterator<Description> it = refinements.iterator(); // for(Concept refinement : refinements) { - while(it.hasNext()) { + while(it.hasNext()) { + Description refinement = it.next(); if(refinement.getLength()>node.getHorizontalExpansion()) { // sagt aus, ob festgestellt wurde, ob refinement proper ist @@ -413,7 +454,6 @@ // 1. short concept construction if(useShortConceptConstruction) { - // kurzes Konzept konstruieren Description shortConcept = ConceptTransformation.getShortConcept(refinement, conceptComparator); int n = conceptComparator.compare(shortConcept, concept); @@ -422,11 +462,14 @@ if(n==0) { propernessTestsAvoidedByShortConceptConstruction++; propernessDetected = true; + + System.out.println("refinement " + refinement + " can be shortened"); +// System.exit(0); } } // 2. too weak test - if(!propernessDetected && useTooWeakList) { + if(!propernessDetected && useTooWeakList) { if(refinement instanceof Intersection) { boolean tooWeakElement = containsTooWeakElement((Intersection)refinement); if(tooWeakElement) { @@ -454,14 +497,28 @@ } // properness konnte nicht vorher ermittelt werden - if(!propernessDetected) + if(!propernessDetected) { toEvaluateConcepts.add(refinement); +// if(!res) { +// System.out.println("already in: " + refinement); +// Comparator comp = toEvaluateConcepts.comparator(); +// for(Description d : toEvaluateConcepts) { +// if(comp.compare(d,refinement)==0) +// System.out.println("see: " + d); +// } +// } + } } + +// System.out.println("handled " + refinement + " length: " + refinement.getLength() + " (new size: " + toEvaluateConcepts.size() + ")"); + } evaluateSetCreationTimeNs += System.nanoTime() - evaluateSetCreationTimeNsStart; +// System.out.println("intermediate 1"); + // System.out.println(toEvaluateConcepts.size()); Set<Description> improperConcepts = null; @@ -476,6 +533,11 @@ } } +// if(toEvaluateConcepts.size()<10) +// System.out.println("to evaluate: " + toEvaluateConcepts); +// else +// System.out.println("to evaluate: more than 10"); + long improperConceptsRemovalTimeNsStart = System.nanoTime(); // die improper Konzepte werden von den auszuwertenden gelöscht, d.h. // alle proper concepts bleiben übrig (einfache Umbenennung) @@ -486,6 +548,13 @@ refinements.removeAll(properConcepts); improperConceptsRemovalTimeNs += System.nanoTime() - improperConceptsRemovalTimeNsStart; +// if(refinements.size()<10) +// System.out.println("refinements: " + refinements); +// else +// System.out.println("refinements: more than 10"); +// +// System.out.println("improper concepts: " + improperConcepts); + for(Description refinement : properConcepts) { long redundancyCheckTimeNsStart = System.nanoTime(); boolean nonRedundant = properRefinements.add(refinement); @@ -603,18 +672,18 @@ } } - // es sind jetzt noch alle Konzepte übrig, die improper refinements sind // auf jedem dieser Konzepte wird die Funktion erneut aufgerufen, da sich // proper refinements ergeben könnten for(Description refinement : refinements) { // for(int i=0; i<=recDepth; i++) // System.out.print(" "); - // System.out.println("call: " + refinement + " [maxLength " + maxLength + "]"); +// System.out.println("call: " + refinement + " [maxLength " + maxLength + "]"); extendNodeProper(node, refinement, maxLength, recDepth+1); // for(int i=0; i<=recDepth; i++) // System.out.print(" "); - // System.out.println("finished: " + refinement + " [maxLength " + maxLength + "]"); + // System.out.println("finished: " + refinement + " [maxLength " + maxLength + "]"); +// System.exit(0); } } @@ -637,26 +706,25 @@ // + nrOfNegativeExamples - bestNode.getCoveredNegatives().size())/(double)nrOfExamples); // Refinementoperator auf Konzept anwenden // String bestNodeString = "currently best node: " + bestNode + " accuracy: " + df.format(accuracy) + "%"; - System.out.println("start node: " + startNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + logger.debug("start node: " + startNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); String bestNodeString = "currently best node: " + bestNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI); // searchTree += bestNodeString + "\n"; - System.out.println(bestNodeString); + logger.debug(bestNodeString); String expandedNodeString = "next expanded node: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI); // searchTree += expandedNodeString + "\n"; - System.out.println(expandedNodeString); - System.out.println("algorithm runtime " + Helper.prettyPrintNanoSeconds(algorithmRuntime)); - System.out.println("size of candidate set: " + candidates.size()); + logger.debug(expandedNodeString); + logger.debug("algorithm runtime " + Helper.prettyPrintNanoSeconds(algorithmRuntime)); + logger.debug("size of candidate set: " + candidates.size()); // System.out.println("properness max recursion depth: " + maxRecDepth); // System.out.println("max. number of one-step refinements: " + maxNrOfRefinements); // System.out.println("max. number of children of a node: " + maxNrOfChildren); - System.out.println("subsumption time: " + Helper.prettyPrintNanoSeconds(rs.getSubsumptionReasoningTimeNs())); - System.out.println("instance check time: " + Helper.prettyPrintNanoSeconds(rs.getInstanceCheckReasoningTimeNs())); - System.out.println("retrieval time: " + Helper.prettyPrintNanoSeconds(rs.getRetrievalReasoningTimeNs())); + logger.debug("subsumption time: " + Helper.prettyPrintNanoSeconds(rs.getSubsumptionReasoningTimeNs())); + logger.debug("instance check time: " + Helper.prettyPrintNanoSeconds(rs.getInstanceCheckReasoningTimeNs())); + logger.debug("retrieval time: " + Helper.prettyPrintNanoSeconds(rs.getRetrievalReasoningTimeNs())); } if(computeBenchmarkInformation) { - long reasoningTime = rs.getOverallReasoningTimeNs(); double reasoningPercentage = 100 * reasoningTime/(double)algorithmRuntime; long propWithoutReasoning = propernessCalcTimeNs-propernessCalcReasoningTimeNs; @@ -674,24 +742,24 @@ double onnfTimePercentage = 100 * ConceptTransformation.onnfTimeNs/(double)algorithmRuntime; double shorteningTimePercentage = 100 * ConceptTransformation.shorteningTimeNs/(double)algorithmRuntime; - System.out.println("reasoning percentage: " + df.format(reasoningPercentage) + "%"); - System.out.println(" subsumption check time: " + df.format(subPercentage) + "%"); - System.out.println("proper calculation percentage (wo. reasoning): " + df.format(propPercentage) + "%"); - System.out.println(" deletion time percentage: " + df.format(deletionPercentage) + "%"); - System.out.println(" refinement calculation percentage: " + df.format(refinementPercentage) + "%"); - System.out.println(" m calculation percentage: " + df.format(mComputationTimePercentage) + "%"); - System.out.println(" top calculation percentage: " + df.format(topComputationTimePercentage) + "%"); - System.out.println(" redundancy check percentage: " + df.format(redundancyCheckPercentage) + "%"); - System.out.println(" evaluate set creation time percentage: " + df.format(evaluateSetCreationTimePercentage) + "%"); - System.out.println(" improper concepts removal time percentage: " + df.format(improperConceptsRemovalTimePercentage) + "%"); - System.out.println("clean time percentage: " + df.format(cleanTimePercentage) + "%"); - System.out.println("onnf time percentage: " + df.format(onnfTimePercentage) + "%"); - System.out.println("shortening time percentage: " + df.format(shorteningTimePercentage) + "%"); + logger.debug("reasoning percentage: " + df.format(reasoningPercentage) + "%"); + logger.debug(" subsumption check time: " + df.format(subPercentage) + "%"); + logger.debug("proper calculation percentage (wo. reasoning): " + df.format(propPercentage) + "%"); + logger.debug(" deletion time percentage: " + df.format(deletionPercentage) + "%"); + logger.debug(" refinement calculation percentage: " + df.format(refinementPercentage) + "%"); + logger.debug(" m calculation percentage: " + df.format(mComputationTimePercentage) + "%"); + logger.debug(" top calculation percentage: " + df.format(topComputationTimePercentage) + "%"); + logger.debug(" redundancy check percentage: " + df.format(redundancyCheckPercentage) + "%"); + logger.debug(" evaluate set creation time percentage: " + df.format(evaluateSetCreationTimePercentage) + "%"); + logger.debug(" improper concepts removal time percentage: " + df.format(improperConceptsRemovalTimePercentage) + "%"); + logger.debug("clean time percentage: " + df.format(cleanTimePercentage) + "%"); + logger.debug("onnf time percentage: " + df.format(onnfTimePercentage) + "%"); + logger.debug("shortening time percentage: " + df.format(shorteningTimePercentage) + "%"); } - System.out.println("properness tests (reasoner/short concept/too weak list): " + propernessTestsReasoner + "/" + propernessTestsAvoidedByShortConceptConstruction + logger.debug("properness tests (reasoner/short concept/too weak list): " + propernessTestsReasoner + "/" + propernessTestsAvoidedByShortConceptConstruction + "/" + propernessTestsAvoidedByTooWeakList); - System.out.println("concept tests (reasoner/too weak list/overly general list/redundant concepts): " + conceptTestsReasoner + "/" + logger.debug("concept tests (reasoner/too weak list/overly general list/redundant concepts): " + conceptTestsReasoner + "/" + conceptTestsTooWeakList + "/" + conceptTestsOverlyGeneralList + "/" + redundantConcepts); } @@ -737,8 +805,8 @@ Set<Individual> currentCoveredNeg = startNode.getCoveredNegatives(); double currentAccuracy = startNode.getAccuracy(nrOfPositiveExamples, nrOfNegativeExamples); int currentMisclassifications = nrOfPositiveExamples - currentCoveredPos.size() + currentCoveredNeg.size(); - System.out.println("tree traversal start node " + startNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); - System.out.println("tree traversal start accuracy: " + currentAccuracy); + logger.debug("tree traversal start node " + startNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + logger.debug("tree traversal start accuracy: " + currentAccuracy); int i=0; // start from the most promising nodes NavigableSet<ExampleBasedNode> reverseView = candidatesStable.descendingSet(); @@ -775,9 +843,9 @@ ConceptTransformation.transformToOrderedNegationNormalFormNonRecursive(mc, conceptComparator); // System.out.println("extended concept to: " + mc); - System.out.println("misclassifications: " + misclassifications); - System.out.println("misclassified positives: " + misclassifiedPositives); - System.out.println("accuracy: " + accuracy); + logger.debug("misclassifications: " + misclassifications); + logger.debug("misclassified positives: " + misclassifiedPositives); + logger.debug("accuracy: " + accuracy); // update variables currentDescription = mc; @@ -787,8 +855,8 @@ currentAccuracy = accuracy; if(accuracy > 1 - noise) { - System.out.println("traversal found " + mc); - System.out.println("accuracy: " + accuracy); + logger.info("traversal found " + mc); + logger.info("accuracy: " + accuracy); System.exit(0); } } @@ -844,9 +912,9 @@ i++; } candidates.retainAll(promisingNodes); - System.out.println("searched " + i + " nodes and picked the following promising descriptions:"); + logger.debug("searched " + i + " nodes and picked the following promising descriptions:"); for(ExampleBasedNode node : promisingNodes) - System.out.println(node.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + logger.debug(node.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); } /* Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java 2008-03-16 19:03:46 UTC (rev 713) @@ -21,7 +21,6 @@ import java.util.List; -import org.dllearner.core.owl.BooleanValueRestriction; import org.dllearner.core.owl.DatatypeSomeRestriction; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Thing; @@ -145,10 +144,10 @@ // do not count TOP symbols (in particular in ALL r.TOP and EXISTS r.TOP) // as they provide no extra information if(description instanceof Thing) - bonus = 2; + bonus = 1; - if(description instanceof BooleanValueRestriction) - bonus = -1; +// if(description instanceof BooleanValueRestriction) +// bonus = -1; // some bonus for doubles because they are already penalised by length 3 if(description instanceof DatatypeSomeRestriction) { Modified: trunk/src/dl-learner/org/dllearner/core/ComponentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2008-03-16 19:03:46 UTC (rev 713) @@ -355,6 +355,10 @@ pool.unregisterComponent(component); } + public void freeAllComponents() { + pool.clearComponents(); + } + public <T> T getConfigOptionValue(Component component, ConfigOption<T> option) { T object = pool.getLastValidConfigValue(component, option); if(object==null) Modified: trunk/src/dl-learner/org/dllearner/core/ComponentPool.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentPool.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/core/ComponentPool.java 2008-03-16 19:03:46 UTC (rev 713) @@ -70,4 +70,11 @@ lastValidConfigValue.get(component).put(entry.getOption(), entry.getValue()); } + // unregisters all components + public void clearComponents() { + components = new LinkedList<Component>(); + lastValidConfigValue = new HashMap<Component,Map<ConfigOption<?>,Object>>(); + configEntryHistory = new HashMap<Component,List<ConfigEntry<?>>>(); + } + } Modified: trunk/src/dl-learner/org/dllearner/core/Reasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/Reasoner.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/core/Reasoner.java 2008-03-16 19:03:46 UTC (rev 713) @@ -128,4 +128,5 @@ public SortedSet<Individual> getIndividuals(); + public void releaseKB(); } Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-03-16 19:03:46 UTC (rev 713) @@ -251,4 +251,6 @@ throw new ReasoningMethodUnsupportedException(); } + public abstract void releaseKB(); + } Modified: trunk/src/dl-learner/org/dllearner/core/ReasoningService.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasoningService.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/core/ReasoningService.java 2008-03-16 19:03:46 UTC (rev 713) @@ -603,6 +603,10 @@ return reasoner.getPrefixes(); } + public void releaseKB() { + reasoner.releaseKB(); + } + public long getInstanceCheckReasoningTimeNs() { return instanceCheckReasoningTimeNs; } Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectCardinalityRestriction.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/ObjectCardinalityRestriction.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectCardinalityRestriction.java 2008-03-16 19:03:46 UTC (rev 713) @@ -13,7 +13,7 @@ } public int getLength() { - return 1 + role.getLength() + getChild(0).getLength(); + return 2 + role.getLength() + getChild(0).getLength(); } public int getNumber() { Modified: trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-03-16 19:03:46 UTC (rev 713) @@ -118,6 +118,7 @@ private static boolean ignoreAmes = false; private static boolean ignoreSalmonella = false;; private static boolean ignoreCytogenCa = false; + private static boolean includeMutagenesis = true; // if true we learn carcinogenic, if false we learn non-carcinogenic private static boolean learnCarcinogenic = true; private static boolean useNewGroups = true; @@ -134,10 +135,11 @@ // TODO: newgroups are not mapped currently String[] files = new String[] { "newgroups.pl", "ames.pl", "atoms.pl", "bonds.pl", "gentoxprops.pl", - "ind_nos.pl", "ind_pos.pl", "pte2/canc_nos.pl", "pte2/pte2ames.pl", "pte2/pte2atoms.pl", - "pte2/pte2bonds.pl", "pte2/pte2gentox.pl", "pte2/pte2ind_nos.pl", "pte2/pte2newgroups.pl" + "ind_nos.pl", "ind_pos.pl"}; + // "pte2/canc_nos.pl", "pte2/pte2ames.pl", "pte2/pte2atoms.pl", + // "pte2/pte2bonds.pl", "pte2/pte2gentox.pl", "pte2/pte2ind_nos.pl", "pte2/pte2newgroups.pl" // "train.b" => not a pure Prolog file but Progol/Aleph specific - }; + // }; File owlFile = new File("examples/carcinogenesis/pte.owl"); Program program = null; @@ -182,6 +184,10 @@ kbString += "DPDOMAIN(" + getURI2("amesTestPositive") + ") = " + getURI2("Compound") + ".\n"; kbString += "DPRANGE(" + getURI2("amesTestPositive") + ") = BOOLEAN.\n"; } + if(includeMutagenesis) { + kbString += "DPDOMAIN(" + getURI2("isMutagenic") + ") = " + getURI2("Compound") + ".\n"; + kbString += "DPRANGE(" + getURI2("isMutagenic") + ") = BOOLEAN.\n"; + } kbString += "OPDOMAIN(" + getURI2("hasAtom") + ") = " + getURI2("Compound") + ".\n"; kbString += "OPRANGE(" + getURI2("hasAtom") + ") = " + getURI2("Atom") + ".\n"; kbString += "OPDOMAIN(" + getURI2("hasBond") + ") = " + getURI2("Compound") + ".\n"; @@ -205,6 +211,10 @@ for (Axiom axiom : axioms) kb.addAxiom(axiom); } + + if(includeMutagenesis) + addMutagenesis(kb); + // special handling for ames test (we assume the ames test // was performed on all compounds but only the positive ones // are in ames.pl [the rest is negative in Prolog by CWA], so @@ -395,42 +405,39 @@ // if(!useNewGroups) { String compoundName = head.getArgument(0).toPLString(); String structureName = head.getArgument(1).toPLString(); -// int count = Integer.parseInt(head.getArgument(2).toPLString()); + int count = Integer.parseInt(head.getArgument(2).toPLString()); // upper case first letter String structureClass = structureName.substring(0,1).toUpperCase() + structureName.substring(1);; String structureInstance = structureName + "-" + structureNr; addStructureSubclass(axioms, structureClass); -// for(int i=0; i<count; i++) { + for(int i=0; i<count; i++) { ObjectPropertyAssertion op = getRoleAssertion("hasStructure", compoundName, structureInstance); axioms.add(op); // make e.g. halide10-382 instance of Bond-3 ClassAssertionAxiom ca = getConceptAssertion(structureClass, structureInstance); axioms.add(ca); structureNr++; + } // } -// } } else if (headName.equals("ashby_alert")) { // ... currently ignored ... } else if (newGroups.contains(headName)) { if(useNewGroups) { String compoundName = head.getArgument(0).toPLString(); String structureName = headName; -// int count = Integer.parseInt(head.getArgument(2).toPLString()); // upper case first letter String structureClass = structureName.substring(0,1).toUpperCase() + structureName.substring(1);; String structureInstance = structureName + "-" + structureNr; addStructureSubclass(axioms, structureClass); -// for(int i=0; i<count; i++) { ObjectPropertyAssertion op = getRoleAssertion("hasStructure", compoundName, structureInstance); axioms.add(op); ClassAssertionAxiom ca = getConceptAssertion(structureClass, structureInstance); axioms.add(ca); structureNr++; -// } } } else { // print clauses which are not supported yet @@ -732,4 +739,36 @@ return ret; } + private static void addMutagenesis(KB kb) { + String[] mutagenicCompounds = new String[] { + "d101", "d104", "d106", "d107", "d112", "d113", "d117", + "d121", "d123", "d126", "d128", "d13", "d135", "d137", + "d139", "d140", "d143", "d144", "d145", "d146", "d147", + "d152", "d153", "d154", "d155", "d156", "d159", "d160", + "d161", "d163", "d164", "d166", "d168", "d171", "d173", + "d174", "d177", "d179", "d18", "d180", "d182", "d183", + "d185", "d186", "d187", "d188", "d189", "d19", "d191", + "d192", "d193", "d195", "d197", "d2", "d201", "d202", + "d205", "d206", "d207", "d211", "d214", "d215", "d216", + "d224", "d225", "d227", "d228", "d229", "d231", "d235", + "d237", "d239", "d242", "d245", "d246", "d249", "d251", + "d254", "d257", "d258", "d261", "d264", "d266", "d269", + "d27", "d270", "d271", "d28", "d288", "d292", "d297", + "d300", "d308", "d309", "d311", "d313", "d314", "d322", + "d323", "d324", "d329", "d330", "d332", "d334", "d35", + "d36", "d37", "d38", "d41", "d42", "d48", "d50", "d51", + "d54", "d58", "d61", "d62", "d63", "d66", "d69", "d72", + "d76", "d77", "d78", "d84", "d86", "d89", "d92", "d96"}; + TreeSet<String> mutagenic = new TreeSet<String>(Arrays.asList(mutagenicCompounds)); + + for(String compound : compounds) { + if(mutagenic.contains(compound)) { + BooleanDatatypePropertyAssertion muta = getBooleanDatatypePropertyAssertion(compound, "isMutagenic", true); + kb.addAxiom(muta); + } else { + BooleanDatatypePropertyAssertion muta = getBooleanDatatypePropertyAssertion(compound, "isMutagenic", false); + kb.addAxiom(muta); + } + } + } } Modified: trunk/src/dl-learner/org/dllearner/reasoning/DIGReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/DIGReasoner.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/reasoning/DIGReasoner.java 2008-03-16 19:03:46 UTC (rev 713) @@ -760,6 +760,7 @@ return identifier; } + @Override public void releaseKB() { connector.releaseKB(kbURI); } Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-03-16 19:03:46 UTC (rev 713) @@ -50,6 +50,9 @@ import org.dllearner.core.owl.Negation; import org.dllearner.core.owl.Nothing; import org.dllearner.core.owl.ObjectAllRestriction; +import org.dllearner.core.owl.ObjectCardinalityRestriction; +import org.dllearner.core.owl.ObjectMaxCardinalityRestriction; +import org.dllearner.core.owl.ObjectMinCardinalityRestriction; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectPropertyExpression; import org.dllearner.core.owl.ObjectPropertyHierarchy; @@ -290,6 +293,82 @@ return false; } return true; + } else if (description instanceof ObjectMinCardinalityRestriction) { + ObjectPropertyExpression ope = ((ObjectCardinalityRestriction) description).getRole(); + if (!(ope instanceof ObjectProperty)) + throw new ReasoningMethodUnsupportedException("Instance check for description " + + description + " unsupported. Inverse object properties not supported."); + ObjectProperty op = (ObjectProperty) ope; + Description child = description.getChild(0); + Map<Individual, SortedSet<Individual>> mapping = opPos.get(op); + + if (mapping == null) { + logger.warn("Instance check of a description with an undefinied property (" + op + + ")."); + return true; + } + + int number = ((ObjectCardinalityRestriction) description).getNumber(); + int nrOfFillers = 0; + + SortedSet<Individual> roleFillers = opPos.get(op).get(individual); + // return false if there are none or not enough role fillers + if (roleFillers == null || roleFillers.size() < number) + return false; + + int index = 0; + for (Individual roleFiller : roleFillers) { + index++; + if (instanceCheck(child, roleFiller)) { + nrOfFillers++; + if(nrOfFillers == number) + return true; + // earyl abort: e.g. >= 10 hasStructure.Methyl; + // if there are 11 fillers and 2 are not Methyl, the result is false + } /* else { + if(roleFillers.size() - index < number) + return false; + }*/ + } + return false; + } else if (description instanceof ObjectMaxCardinalityRestriction) { + ObjectPropertyExpression ope = ((ObjectCardinalityRestriction) description).getRole(); + if (!(ope instanceof ObjectProperty)) + throw new ReasoningMethodUnsupportedException("Instance check for description " + + description + " unsupported. Inverse object properties not supported."); + ObjectProperty op = (ObjectProperty) ope; + Description child = description.getChild(0); + Map<Individual, SortedSet<Individual>> mapping = opPos.get(op); + + if (mapping == null) { + logger.warn("Instance check of a description with an undefinied property (" + op + + ")."); + return true; + } + + int number = ((ObjectCardinalityRestriction) description).getNumber(); + int nrOfFillers = 0; + + SortedSet<Individual> roleFillers = opPos.get(op).get(individual); + // return false if there are none or not enough role fillers + if (roleFillers == null || roleFillers.size() > number) + return true; + + int index = 0; + for (Individual roleFiller : roleFillers) { + index++; + if (instanceCheck(child, roleFiller)) { + nrOfFillers++; + if(nrOfFillers == number) + return false; + // earyl abort: e.g. <= 5 hasStructure.Methyl; + // if there are 6 fillers and 2 are not Methyl, the result is true + } /* else { + if(roleFillers.size() - index <= number) + return true; + } */ + } + return true; } else if (description instanceof BooleanValueRestriction) { DatatypeProperty dp = ((BooleanValueRestriction)description).getRestrictedPropertyExpresssion(); boolean value = ((BooleanValueRestriction)description).getBooleanValue(); @@ -503,6 +582,19 @@ @Override public Description getRange(ObjectProperty objectProperty) { return rc.getRange(objectProperty); + } + + @Override + public Map<Individual, SortedSet<Individual>> getRoleMembers(ObjectProperty atomicRole) { + return opPos.get(atomicRole); + } + + /* (non-Javadoc) + * @see org.dllearner.core.ReasonerComponent#releaseKB() + */ + @Override + public void releaseKB() { + rc.releaseKB(); } } Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java 2008-03-16 19:03:46 UTC (rev 713) @@ -182,5 +182,13 @@ */ public Map<String, String> getPrefixes() { return rc.getPrefixes(); - } + } + + /* (non-Javadoc) + * @see org.dllearner.core.ReasonerComponent#releaseKB() + */ + @Override + public void releaseKB() { + rc.releaseKB(); + } } Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-03-16 19:03:46 UTC (rev 713) @@ -1021,4 +1021,18 @@ return prefixes; } + /* (non-Javadoc) + * @see org.dllearner.core.ReasonerComponent#releaseKB() + */ + @Override + public void releaseKB() { + try { + reasoner.clearOntologies(); + reasoner.dispose(); + } catch (OWLReasonerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2008-03-16 19:03:46 UTC (rev 713) @@ -32,6 +32,7 @@ import java.util.TreeSet; import java.util.Map.Entry; +import org.apache.log4j.Logger; import org.dllearner.algorithms.refinement.RefinementOperator; import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.BooleanValueRestriction; @@ -47,6 +48,9 @@ import org.dllearner.core.owl.Negation; import org.dllearner.core.owl.Nothing; import org.dllearner.core.owl.ObjectAllRestriction; +import org.dllearner.core.owl.ObjectCardinalityRestriction; +import org.dllearner.core.owl.ObjectMaxCardinalityRestriction; +import org.dllearner.core.owl.ObjectMinCardinalityRestriction; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectPropertyExpression; import org.dllearner.core.owl.ObjectQuantorRestriction; @@ -72,6 +76,10 @@ */ public class RhoDRDown implements RefinementOperator { + @SuppressWarnings({"unused"}) + private static Logger logger = Logger + .getLogger(RhoDRDown.class); + private ReasoningService rs; // hierarchies @@ -82,6 +90,9 @@ private Map<DatatypeProperty,Description> dpDomains = new TreeMap<DatatypeProperty,Description>(); private Map<ObjectProperty,Description> opRanges = new TreeMap<ObjectProperty,Description>(); + // maximum number of fillers for eeach role + private Map<ObjectProperty,Integer> maxNrOfFillers = new TreeMap<ObjectProperty,Integer>(); + // start concept (can be used to start from an arbitrary concept, needs // to be Thing or NamedClass), note that when you use e.g. Compound as // start class, then the algorithm should start the search with class @@ -137,6 +148,7 @@ private boolean applyExistsFilter = true; private boolean useAllConstructor = true; private boolean useExistsConstructor = true; + private boolean useCardinalityRestrictions = true; private boolean useNegation = true; private boolean useBooleanDatatypes = true; private boolean useDoubleDatatypes = true; @@ -181,7 +193,36 @@ computeSplits(dp); } + // determine the maximum number of fillers for each role + for(ObjectProperty op : rs.getAtomicRoles()) { + int maxFillers = 0; + Map<Individual,SortedSet<Individual>> opMembers = rs.getRoleMembers(op); + for(SortedSet<Individual> inds : opMembers.values()) { + if(inds.size()>maxFillers) + maxFillers = inds.size(); + } + maxNrOfFillers.put(op, maxFillers); + } + /* + String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 2 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Ar_halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND >= 5 \"http://dl-learner.org/carcinogenesis#hasBond\". TOP)))"; + try { + NamedClass struc = new NamedClass("http://dl-learner.org/carcinogenesis#Compound"); + Description d = KBParser.parseConcept(conceptStr); + SortedSet<Description> ds = (SortedSet<Description>) refine(d,15,null,struc); + System.out.println(ds); + + Individual i = new Individual("http://dl-learner.org/carcinogenesis#d101"); + rs.instanceCheck(ds.first(), i); + + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + System.exit(0); + */ + + /* NamedClass struc = new NamedClass("http://dl-learner.org/carcinogenesis#Atom"); ObjectProperty op = new ObjectProperty("http://dl-learner.org/carcinogenesis#hasAtom"); ObjectSomeRestriction oar = new ObjectSomeRestriction(op,Thing.instance); @@ -222,7 +263,7 @@ public Set<Description> refine(Description description, int maxLength, List<Description> knownRefinements, Description currDomain) { -// System.out.println(description + " " + currDomain + " " + maxLength); +// logger.trace(description + " " + currDomain + " " + maxLength); // actions needing to be performed if this is the first time the // current domain is used @@ -336,6 +377,15 @@ for(ObjectProperty moreSpecialRole : moreSpecialRoles) refinements.add(new ObjectSomeRestriction(moreSpecialRole, description.getChild(0))); + // rule 3: EXISTS r.D => >= 2 r.D + // (length increases by 1 so we have to check whether max length is sufficient) + if(useCardinalityRestrictions) { + if(maxLength > description.getLength() && maxNrOfFillers.get(ar)>1) { + ObjectMinCardinalityRestriction min = new ObjectMinCardinalityRestriction(2,role,description.getChild(0)); + refinements.add(min); + } + } + } else if (description instanceof ObjectAllRestriction) { ObjectPropertyExpression role = ((ObjectQuantorRestriction)description).getRole(); Description range = opRanges.get(role); @@ -360,6 +410,28 @@ refinements.add(new ObjectAllRestriction(moreSpecialRole, description.getChild(0))); } + // rule 4: ALL r.D => <= (maxFillers-1) r.D + // (length increases by 1 so we have to check whether max length is sufficient) + if(useCardinalityRestrictions) { + if(maxLength > description.getLength() && maxNrOfFillers.get(ar)>1) { + ObjectMaxCardinalityRestriction max = new ObjectMaxCardinalityRestriction(maxNrOfFillers.get(ar)-1,role,description.getChild(0)); + refinements.add(max); + } + } + } else if (description instanceof ObjectCardinalityRestriction) { + if(description instanceof ObjectMaxCardinalityRestriction) { + // <= x r.C => <= (x-1) r.C + ObjectMaxCardinalityRestriction max = (ObjectMaxCardinalityRestriction) description; + int number = max.getNumber(); + if(number > 0) + refinements.add(new ObjectMaxCardinalityRestriction(number-1,max.getRole(),max.getChild(0))); + } else if(description instanceof ObjectMinCardinalityRestriction) { + // >= x r.C => >= (x+1) r.C + ObjectMinCardinalityRestriction min = (ObjectMinCardinalityRestriction) description; + int number = min.getNumber(); + if(number < maxNrOfFillers.get(min.getRole())) + refinements.add(new ObjectMinCardinalityRestriction(number+1,min.getRole(),min.getChild(0))); + } } else if (description instanceof DatatypeSomeRestriction) { DatatypeSomeRestriction dsr = (DatatypeSomeRestriction) description; @@ -434,6 +506,7 @@ } // check for double datatype properties + /* if(c instanceof DatatypeSomeRestriction && description instanceof DatatypeSomeRestriction) { DataRange dr = ((DatatypeSomeRestriction)c).getDataRange(); @@ -442,7 +515,7 @@ if((dr instanceof DoubleMaxValue && dr2 instanceof DoubleMaxValue) ||(dr instanceof DoubleMinValue && dr2 instanceof DoubleMinValue)) skip = true; - } + }*/ // perform a disjointness check when named classes are added; // this can avoid a lot of superfluous computation in the algorithm e.g. @@ -462,7 +535,9 @@ ConceptTransformation.cleanConceptNonRecursive(mc); ConceptTransformation.transformToOrderedNegationNormalFormNonRecursive(mc, conceptComparator); - refinements.add(mc); + // last check before intersection is added + if(checkIntersection(mc)) + refinements.add(mc); } } } @@ -481,11 +556,15 @@ // when a child of an intersection is refined and reintegrated into the // intersection, we can perform some sanity checks; // method returns true if everything is OK and false otherwise - private boolean checkIntersection(Intersection intersection) { + // TODO: can be implemented more efficiently if the newly added child + // is given as parameter + public static boolean checkIntersection(Intersection intersection) { // rule 1: max. restrictions at most once boolean maxDoubleOccurence = false; // rule 2: min restrictions at most once boolean minDoubleOccurence = false; + // rule 3: no double boolean datatypes + TreeSet<DatatypeProperty> occuredDP = new TreeSet<DatatypeProperty>(); for(Description child : intersection.getChildren()) { if(child instanceof DatatypeSomeRestriction) { DataRange dr = ((DatatypeSomeRestriction)child).getDataRange(); @@ -500,7 +579,14 @@ else minDoubleOccurence = true; } + } else if(child instanceof BooleanValueRestriction) { + DatatypeProperty dp = (DatatypeProperty) ((BooleanValueRestriction)child).getRestrictedPropertyExpression(); +// System.out.println("dp: " + dp); + // return false if the boolean property exists already + if(!occuredDP.add(dp)) + return false; } +// System.out.println(child.getClass()); } return true; } Modified: trunk/src/dl-learner/org/dllearner/utilities/ConceptComparator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ConceptComparator.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/utilities/ConceptComparator.java 2008-03-16 19:03:46 UTC (rev 713) @@ -12,6 +12,9 @@ import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.Nothing; import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.ObjectCardinalityRestriction; +import org.dllearner.core.owl.ObjectMaxCardinalityRestriction; +import org.dllearner.core.owl.ObjectMinCardinalityRestriction; import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.SimpleDoubleDataRange; @@ -172,6 +175,46 @@ return roleCompare; } else return -1; + } else if(concept1 instanceof ObjectMinCardinalityRestriction) { + if(concept2.getChildren().size()<1 || concept2 instanceof Negation || concept2 instanceof ObjectQuantorRestriction) + return 1; + // first criterion: object property + // second criterion: number + // third criterion: children + else if(concept2 instanceof ObjectMinCardinalityRestriction) { + int roleCompare = rc.compare(((ObjectCardinalityRestriction)concept1).getRole(), ((ObjectCardinalityRestriction)concept2).getRole()); + if(roleCompare == 0) { + Integer number1 = ((ObjectCardinalityRestriction)concept1).getNumber(); + Integer number2 = ((ObjectCardinalityRestriction)concept2).getNumber(); + int numberCompare = number1.compareTo(number2); + if(numberCompare == 0) + return compare(concept1.getChild(0), concept2.getChild(0)); + else + return numberCompare; + } else + return roleCompare; + } else + return -1; + } else if(concept1 instanceof ObjectMaxCardinalityRestriction) { + if(concept2.getChildren().size()<1 || concept2 instanceof Negation || concept2 instanceof ObjectQuantorRestriction || concept2 instanceof ObjectMinCardinalityRestriction) + return 1; + // first criterion: object property + // second criterion: number + // third criterion: children + else if(concept2 instanceof ObjectMaxCardinalityRestriction) { + int roleCompare = rc.compare(((ObjectCardinalityRestriction)concept1).getRole(), ((ObjectCardinalityRestriction)concept2).getRole()); + if(roleCompare == 0) { + Integer number1 = ((ObjectCardinalityRestriction)concept1).getNumber(); + Integer number2 = ((ObjectCardinalityRestriction)concept2).getNumber(); + int numberCompare = number1.compareTo(number2); + if(numberCompare == 0) + return compare(concept1.getChild(0), concept2.getChild(0)); + else + return numberCompare; + } else + return roleCompare; + } else + return -1; } else if(concept1 instanceof Intersection) { if(concept2.getChildren().size()<2) return 1; Modified: trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java 2008-03-14 22:58:35 UTC (rev 712) +++ trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java 2008-03-16 19:03:46 UTC (rev 713) @@ -21,9 +21,11 @@ import java.io.File; import java.text.DecimalFormat; +import java.util.Collections; import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.Random; import java.util.Set; import org.apache.log4j.ConsoleAppender; @@ -65,20 +67,27 @@ else leaveOneOut = true; + if(folds < 2) { + System.out.println("At least 2 fold needed."); + System.exit(0); + } + // create logger (a simple logger which outputs // its messages to the console) SimpleLayout layout = new SimpleLayout(); ConsoleAppender consoleAppender = new ConsoleAppender(layout); logger.removeAllAppenders(); logger.addAppender(consoleAppender); - logger.setLevel(Level.WARN); + logger.setLevel(Level.WARN); + // disable OWL API info output + java.util.logging.Logger.getLogger("").setLevel(java.util.logging.Level.WARNING); new CrossValidation(file, folds, leaveOneOut); } public CrossValidation(File file, int folds, boolean leaveOneOut) { - + DecimalFormat df = new DecimalFormat(); ComponentManager cm = ComponentManager.getInstance(); @@ -104,10 +113,13 @@ if(lp instanceof PosNegLP) { + // get examples and shuffle them to Set<Individual> posExamples = ((PosNegLP)lp).getPositiveExamples(); List<Individual> posExamplesList = new LinkedList<Individual>(posExamples); + Collections.shuffle(posExamplesList, new Random(1)); Set<Individual> negExamples = ((PosNegLP)lp).getNegativeExamples(); List<Individual> negExamplesList = new LinkedList<Individual>(negExamples); + Collections.shuffle(negExamplesList, new Random(2)); // sanity check whether nr. of folds makes sense for this benchmark if(!leaveOneOut && (posExamples.size()<folds && negExamples.size()<folds)) { @@ -138,6 +150,9 @@ int[] splitsPos = calculateSplits(posExamples.size(),folds); int[] splitsNeg = calculateSplits(negExamples.size(),folds); +// System.out.println(splitsPos[0]); +// System.out.println(splitsNeg[0]); + // calculating training and test sets for(int i=0; i<folds; i++) { Set<Individual> testPos = getTestingSet(posExamplesList, splitsPos, i); @@ -180,16 +195,45 @@ Set<String> neg = Datastructures.individualSetToStringSet(trainingSetsNeg.get(currFold)); cm.applyConfigEntry(lp, "positiveExamples", pos); cm.applyConfigEntry(lp, "negativeExamples", neg); +// System.out.println("pos: " + pos.size()); +// System.out.println("neg: " + neg.size()); +// System.exit(0); + // es fehlt init zwischendurch + LearningAlgorithm la = start.getLearningAlgorithm(); + // init again, because examples have changed + try { + la.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } long algorithmStartTime = System.nanoTime(); la.start(); long algorithmDuration = System.nanoTime() - algorithmStartTime; runtime.addNumber(algorithmDuration/(double)1000000000); Description concept = la.getBestSolution(); - int correctExamples = getCorrectPosClassified(rs, concept, testSetsPos.get(currFold)) - + getCorrectNegClassified(rs, concept, testSetsNeg.get(currFold)); + + Set<Individual> tmp = rs.instanceCheck(concept, testSetsPos.get(currFold)); + Set<Individual> tmp2 = Helper.difference(testSetsPos.get(currFold), tmp); + Set<Individual> tmp3 = rs.instanceCheck(concept, testSetsNeg.get(currFold)); + + System.out.println("test set errors pos: " + tmp2); + System.out.println("test set errors neg: " + tmp3); + + // calculate training accuracies + int trainingCorrectPosClassified = getCorrectPosClassified(rs, concept, trainingSetsPos.get(currFold)); + int trainingCorrectNegClassified = getCorrectNegClassified(rs, concept, trainingSetsNeg.get(currFold)); + int trainingCorrectExamples = trainingCorrectPosClassified + trainingCorrectNegClassified; + double trainingAccuracy = 100*((double)trainingCorrectExamples/(trainingSetsPos.get(currFold).size()+ + trainingSetsNeg.get(currFold).size())); + + // calculate test accuracies + int correctPosClassified = getCorrectPosClassified(rs, concept, testSetsPos.get(currFold)); + int correctNegClassified = getCorrectNegClassified(rs, concept, testSetsNeg.get(currFold)); + int correctExamples = correctPosClassified + correctNegClassified; double currAccuracy = 100*((double)correctExamples/(testSetsPos.get(currFold).size()+ testSetsNeg.get(currFold).size())); accuracy.addNumber(currAccuracy); @@ -197,10 +241,17 @@ length.addNumber(concept.getLength()); System.out.println("fold " + currFold + " (" + file + "):"); + System.out.println(" training: " + pos.size() + " positive and " + neg.size() + " negative examples"); + System.out.println(" testing: " + correctPosClassified + "/" + testSetsPos.get(currFold).size() + " correct positives, " + + correctNegClassified + "/" + testSetsNeg.get(currFold).size() + " correct negatives"); System.out.println(" concept: " + concept); - System.out.println(" accuracy: " + df.format(currAccuracy) + "%"); + System.out.println(" accuracy: " + df.format(currAccuracy) + "% (" + df.format(trainingAccuracy) + "% on training set)"); System.out.println(" length: " + df.format(concept.getLength())); System.out.println(" runtime: " + df.format(algorithmDuration/(double)1000000000) + "s"); + + // free all resources + start.getReasoningService().releaseKB(); + cm.freeAllComponents(); } System.out.println(); @@ -211,12 +262,12 @@ } - private int getCorrectPosClassified(ReasoningService rs, Description concept, Set<Individual> posClassified) { - return rs.instanceCheck(concept, posClassified).size(); + private int getCorrectPosClassified(ReasoningService rs, Description concept, Set<Individual> testSetPos) { + return rs.instanceCheck(concept, testSetPos).size(); } - private int getCorrectNegClassified(ReasoningService rs, Description concept, Set<Individual> negClassified) { - return negClassified.size() - rs.instanceCheck(concept, negClassified).size(); + private int getCorrectNegClassified(ReasoningService rs, Description concept, Set<Individual> testSetNeg) { + return testSetNeg.size() - rs.instanceCheck(concept, testSetNeg).size(); } private Set<Individual> getTestingSet(List<Individual> examples, int[] splits, int fold) { @@ -229,6 +280,8 @@ // the split corresponds to the ends of the folds int toIndex = splits[fold]; +// System.out.println("from " + fromIndex + " to " + toIndex); + Set<Individual> testingSet = new HashSet<Individual>(); // +1 because 2nd element is exclusive in subList method testingSet.addAll(examples.subList(fromIndex, toIndex)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ton...@us...> - 2008-03-14 22:58:38
|
Revision: 712 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=712&view=rev Author: tonytacker Date: 2008-03-14 15:58:35 -0700 (Fri, 14 Mar 2008) Log Message: ----------- fixes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/ConfigSave.java trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java Modified: trunk/src/dl-learner/org/dllearner/gui/ConfigSave.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/ConfigSave.java 2008-03-14 19:53:45 UTC (rev 711) +++ trunk/src/dl-learner/org/dllearner/gui/ConfigSave.java 2008-03-14 22:58:35 UTC (rev 712) @@ -177,7 +177,6 @@ * @return a string to write */ public String getTypeForFile(Class<?> componentClass) { - System.out.println("getTypeForFile: " + componentClass); // reasoner if (DIGReasoner.class == componentClass) return ("dig"); Modified: trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-03-14 19:53:45 UTC (rev 711) +++ trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-03-14 22:58:35 UTC (rev 712) @@ -21,7 +21,6 @@ */ import javax.swing.*; -import javax.swing.tree.*; import org.dllearner.algorithms.refexamples.*; /** @@ -47,38 +46,12 @@ setIconImage(java.awt.Toolkit.getDefaultToolkit().getImage( this.getClass().getResource("icon.gif"))); - // test example tree - DefaultMutableTreeNode exampleRoot = new DefaultMutableTreeNode("root"); - for (int knot = 0; knot < 4; knot++) { - DefaultMutableTreeNode node = new DefaultMutableTreeNode("knot " + knot); - exampleRoot.add(node); - for (int leaf = 1; leaf < 4; leaf++) - node.add(new DefaultMutableTreeNode("leaf " + (knot * 3 + leaf))); - } - // tree model - EBNodeTreeModel root = null; - // if (config.getLearningAlgorithm() != null) { if (config.getLearningAlgorithm() instanceof ExampleBasedROLComponent) { ExampleBasedROLComponent ebrol = (ExampleBasedROLComponent) config .getLearningAlgorithm(); ExampleBasedNode rootNode = ebrol.getStartNode(); - root = new EBNodeTreeModel(rootNode); - - // show tree - if (root != null) { - //System.out.println("TEST: " + root.getChildCount(rootNode)); - for (int i = 0; i < root.getChildCount(rootNode); i++) { - // Object node = root.getChild(rootNode, i); - - root.getChild(rootNode, i); - //System.out.println("TEST: " + root.getChild(rootNode, i)); - } - JTree tree = new JTree(root); - this.add(new JScrollPane(tree)); - } - } else { - JTree tree = new JTree(exampleRoot); + JTree tree = new JTree(new EBNodeTreeModel(rootNode)); this.add(new JScrollPane(tree)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ton...@us...> - 2008-03-14 19:53:57
|
Revision: 711 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=711&view=rev Author: tonytacker Date: 2008-03-14 12:53:45 -0700 (Fri, 14 Mar 2008) Log Message: ----------- better save (with algorithm) Modified Paths: -------------- trunk/examples/test.conf trunk/src/dl-learner/org/dllearner/gui/ConfigSave.java Modified: trunk/examples/test.conf =================================================================== --- trunk/examples/test.conf 2008-03-14 10:33:10 UTC (rev 710) +++ trunk/examples/test.conf 2008-03-14 19:53:45 UTC (rev 711) @@ -1,7 +1,13 @@ import("father.kb"); +reasoner = "fastInstanceChecker"; +problem = "posNegDefinition"; -+"http://localhost/foo#bernd" -+"http://localhost/foo#gabi" ++"http://localhost/foo#markus" ++"http://localhost/foo#michelle" ++"http://localhost/foo#stefan" --"http://localhost/foo#markus" +-"http://localhost/foo#anna" +-"http://localhost/foo#bernd" +-"http://localhost/foo#gabi" +algorithm = "refexamples"; Modified: trunk/src/dl-learner/org/dllearner/gui/ConfigSave.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/ConfigSave.java 2008-03-14 10:33:10 UTC (rev 710) +++ trunk/src/dl-learner/org/dllearner/gui/ConfigSave.java 2008-03-14 19:53:45 UTC (rev 711) @@ -24,13 +24,24 @@ //import java.net.URL; import java.util.List; //import java.util.Map; import java.util.Map; - -import org.dllearner.core.ComponentManager; //import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.ComponentManager; import org.dllearner.core.Component; import org.dllearner.core.config.ConfigEntry; import org.dllearner.core.config.ConfigOption; import org.dllearner.core.config.InvalidConfigOptionValueException; import org.dllearner.cli.*; +import org.dllearner.reasoning.DIGReasoner; +import org.dllearner.reasoning.FastInstanceChecker; +import org.dllearner.reasoning.FastRetrievalReasoner; +import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.learningproblems.PosNegInclusionLP; +import org.dllearner.learningproblems.PosOnlyDefinitionLP; +import org.dllearner.algorithms.BruteForceLearner; +import org.dllearner.algorithms.RandomGuesser; +import org.dllearner.algorithms.gp.GP; +import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; +import org.dllearner.algorithms.refinement.ROLearner; import java.io.PrintWriter; /** @@ -95,21 +106,21 @@ config.getKnowledgeSource(), "url"); if (url != null) { out.println("import(\"" + url + "\",\"SPARQL\");"); - setFileEntry(config.getKnowledgeSource(), out); + setFileEntry(null, config.getKnowledgeSource(), out); } } } // REASONER if (config.getReasoner() != null) { - setFileEntry(config.getReasoner(), out); + setFileEntry("reasoner", config.getReasoner(), out); } // LEARNING PROBLEM if (config.getLearningProblem() != null) { - setFileEntry(config.getLearningProblem(), out); + setFileEntry("problem", config.getLearningProblem(), out); } // LEARNING ALGORITHM if (config.getLearningAlgorithm() != null) { - setFileEntry(config.getLearningAlgorithm(), out); + setFileEntry("algorithm", config.getLearningAlgorithm(), out); } } @@ -121,7 +132,13 @@ * i.e. config.getKnowledgeSource(), config.getResaoner(), ... */ @SuppressWarnings("unchecked") - public void setFileEntry(Component component, PrintWriter out) { + public void setFileEntry(String type, Component component, PrintWriter out) { + // write used algorithm + if (type != null) { + String alg = getTypeForFile(component.getClass()); + if (alg != null) + out.println(type + " = \"" + alg + "\";"); + } // get prefix map Map<Class<? extends Component>, String> componentPrefixMapping = Start .createComponentPrefixMapping(); @@ -152,4 +169,43 @@ } } + /** + * Get type to write into configuration file. + * + * @param componentClass + * is your class for reasoner, problem, algorithm + * @return a string to write + */ + public String getTypeForFile(Class<?> componentClass) { + System.out.println("getTypeForFile: " + componentClass); + // reasoner + if (DIGReasoner.class == componentClass) + return ("dig"); + if (OWLAPIReasoner.class == componentClass) + return ("owlAPI"); + if (FastRetrievalReasoner.class == componentClass) + return ("fastRetrieval"); + if (FastInstanceChecker.class == componentClass) + return ("fastInstanceChecker"); + // problem + if (PosNegDefinitionLP.class == componentClass) + return ("posNegDefinition"); + if (PosNegInclusionLP.class == componentClass) + return ("posNegInclusion"); + if (PosOnlyDefinitionLP.class == componentClass) + return ("posOnlyDefinition"); + // algorithm + if (ROLearner.class == componentClass) + return ("refinement"); + if (ExampleBasedROLComponent.class == componentClass) + return ("refexamples"); + if (GP.class == componentClass) + return ("gp"); + if (BruteForceLearner.class == componentClass) + return ("bruteForce"); + if (RandomGuesser.class == componentClass) + return ("randomGuesser"); + return null; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-03-13 16:48:26
|
Revision: 709 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=709&view=rev Author: kurzum Date: 2008-03-13 09:48:24 -0700 (Thu, 13 Mar 2008) Log Message: ----------- krk cont. still not working, might be buggy Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/KRK.java Added Paths: ----------- trunk/examples/krk/ONE.txt trunk/examples/krk/ZERO.txt trunk/examples/krk/krkopt.data trunk/examples/krk/krkopt_large.data trunk/examples/krk/krkopt_small.data trunk/examples/krk/test.conf trunk/examples/krk/test.owl Added: trunk/examples/krk/ONE.txt =================================================================== --- trunk/examples/krk/ONE.txt (rev 0) +++ trunk/examples/krk/ONE.txt 2008-03-13 16:48:24 UTC (rev 709) @@ -0,0 +1,159 @@ ++"http://www.test.de/test#game100" ++"http://www.test.de/test#game101" ++"http://www.test.de/test#game102" ++"http://www.test.de/test#game103" ++"http://www.test.de/test#game104" ++"http://www.test.de/test#game105" ++"http://www.test.de/test#game28" ++"http://www.test.de/test#game29" ++"http://www.test.de/test#game30" ++"http://www.test.de/test#game31" ++"http://www.test.de/test#game32" ++"http://www.test.de/test#game33" ++"http://www.test.de/test#game34" ++"http://www.test.de/test#game35" ++"http://www.test.de/test#game36" ++"http://www.test.de/test#game37" ++"http://www.test.de/test#game38" ++"http://www.test.de/test#game39" ++"http://www.test.de/test#game40" ++"http://www.test.de/test#game41" ++"http://www.test.de/test#game42" ++"http://www.test.de/test#game43" ++"http://www.test.de/test#game44" ++"http://www.test.de/test#game45" ++"http://www.test.de/test#game46" ++"http://www.test.de/test#game47" ++"http://www.test.de/test#game48" ++"http://www.test.de/test#game49" ++"http://www.test.de/test#game50" ++"http://www.test.de/test#game51" ++"http://www.test.de/test#game52" ++"http://www.test.de/test#game53" ++"http://www.test.de/test#game54" ++"http://www.test.de/test#game55" ++"http://www.test.de/test#game56" ++"http://www.test.de/test#game57" ++"http://www.test.de/test#game58" ++"http://www.test.de/test#game59" ++"http://www.test.de/test#game60" ++"http://www.test.de/test#game61" ++"http://www.test.de/test#game62" ++"http://www.test.de/test#game63" ++"http://www.test.de/test#game64" ++"http://www.test.de/test#game65" ++"http://www.test.de/test#game66" ++"http://www.test.de/test#game67" ++"http://www.test.de/test#game68" ++"http://www.test.de/test#game69" ++"http://www.test.de/test#game70" ++"http://www.test.de/test#game71" ++"http://www.test.de/test#game72" ++"http://www.test.de/test#game73" ++"http://www.test.de/test#game74" ++"http://www.test.de/test#game75" ++"http://www.test.de/test#game76" ++"http://www.test.de/test#game77" ++"http://www.test.de/test#game78" ++"http://www.test.de/test#game79" ++"http://www.test.de/test#game80" ++"http://www.test.de/test#game81" ++"http://www.test.de/test#game82" ++"http://www.test.de/test#game83" ++"http://www.test.de/test#game84" ++"http://www.test.de/test#game85" ++"http://www.test.de/test#game86" ++"http://www.test.de/test#game87" ++"http://www.test.de/test#game88" ++"http://www.test.de/test#game89" ++"http://www.test.de/test#game90" ++"http://www.test.de/test#game91" ++"http://www.test.de/test#game92" ++"http://www.test.de/test#game93" ++"http://www.test.de/test#game94" ++"http://www.test.de/test#game95" ++"http://www.test.de/test#game96" ++"http://www.test.de/test#game97" ++"http://www.test.de/test#game98" ++"http://www.test.de/test#game99" + + +-"http://www.test.de/test#game100" +-"http://www.test.de/test#game101" +-"http://www.test.de/test#game102" +-"http://www.test.de/test#game103" +-"http://www.test.de/test#game104" +-"http://www.test.de/test#game105" +-"http://www.test.de/test#game28" +-"http://www.test.de/test#game29" +-"http://www.test.de/test#game30" +-"http://www.test.de/test#game31" +-"http://www.test.de/test#game32" +-"http://www.test.de/test#game33" +-"http://www.test.de/test#game34" +-"http://www.test.de/test#game35" +-"http://www.test.de/test#game36" +-"http://www.test.de/test#game37" +-"http://www.test.de/test#game38" +-"http://www.test.de/test#game39" +-"http://www.test.de/test#game40" +-"http://www.test.de/test#game41" +-"http://www.test.de/test#game42" +-"http://www.test.de/test#game43" +-"http://www.test.de/test#game44" +-"http://www.test.de/test#game45" +-"http://www.test.de/test#game46" +-"http://www.test.de/test#game47" +-"http://www.test.de/test#game48" +-"http://www.test.de/test#game49" +-"http://www.test.de/test#game50" +-"http://www.test.de/test#game51" +-"http://www.test.de/test#game52" +-"http://www.test.de/test#game53" +-"http://www.test.de/test#game54" +-"http://www.test.de/test#game55" +-"http://www.test.de/test#game56" +-"http://www.test.de/test#game57" +-"http://www.test.de/test#game58" +-"http://www.test.de/test#game59" +-"http://www.test.de/test#game60" +-"http://www.test.de/test#game61" +-"http://www.test.de/test#game62" +-"http://www.test.de/test#game63" +-"http://www.test.de/test#game64" +-"http://www.test.de/test#game65" +-"http://www.test.de/test#game66" +-"http://www.test.de/test#game67" +-"http://www.test.de/test#game68" +-"http://www.test.de/test#game69" +-"http://www.test.de/test#game70" +-"http://www.test.de/test#game71" +-"http://www.test.de/test#game72" +-"http://www.test.de/test#game73" +-"http://www.test.de/test#game74" +-"http://www.test.de/test#game75" +-"http://www.test.de/test#game76" +-"http://www.test.de/test#game77" +-"http://www.test.de/test#game78" +-"http://www.test.de/test#game79" +-"http://www.test.de/test#game80" +-"http://www.test.de/test#game81" +-"http://www.test.de/test#game82" +-"http://www.test.de/test#game83" +-"http://www.test.de/test#game84" +-"http://www.test.de/test#game85" +-"http://www.test.de/test#game86" +-"http://www.test.de/test#game87" +-"http://www.test.de/test#game88" +-"http://www.test.de/test#game89" +-"http://www.test.de/test#game90" +-"http://www.test.de/test#game91" +-"http://www.test.de/test#game92" +-"http://www.test.de/test#game93" +-"http://www.test.de/test#game94" +-"http://www.test.de/test#game95" +-"http://www.test.de/test#game96" +-"http://www.test.de/test#game97" +-"http://www.test.de/test#game98" +-"http://www.test.de/test#game99" + Added: trunk/examples/krk/ZERO.txt =================================================================== --- trunk/examples/krk/ZERO.txt (rev 0) +++ trunk/examples/krk/ZERO.txt 2008-03-13 16:48:24 UTC (rev 709) @@ -0,0 +1,57 @@ ++"http://www.test.de/test#game1" ++"http://www.test.de/test#game10" ++"http://www.test.de/test#game11" ++"http://www.test.de/test#game12" ++"http://www.test.de/test#game13" ++"http://www.test.de/test#game14" ++"http://www.test.de/test#game15" ++"http://www.test.de/test#game16" ++"http://www.test.de/test#game17" ++"http://www.test.de/test#game18" ++"http://www.test.de/test#game19" ++"http://www.test.de/test#game2" ++"http://www.test.de/test#game20" ++"http://www.test.de/test#game21" ++"http://www.test.de/test#game22" ++"http://www.test.de/test#game23" ++"http://www.test.de/test#game24" ++"http://www.test.de/test#game25" ++"http://www.test.de/test#game26" ++"http://www.test.de/test#game27" ++"http://www.test.de/test#game3" ++"http://www.test.de/test#game4" ++"http://www.test.de/test#game5" ++"http://www.test.de/test#game6" ++"http://www.test.de/test#game7" ++"http://www.test.de/test#game8" ++"http://www.test.de/test#game9" + + +-"http://www.test.de/test#game1" +-"http://www.test.de/test#game10" +-"http://www.test.de/test#game11" +-"http://www.test.de/test#game12" +-"http://www.test.de/test#game13" +-"http://www.test.de/test#game14" +-"http://www.test.de/test#game15" +-"http://www.test.de/test#game16" +-"http://www.test.de/test#game17" +-"http://www.test.de/test#game18" +-"http://www.test.de/test#game19" +-"http://www.test.de/test#game2" +-"http://www.test.de/test#game20" +-"http://www.test.de/test#game21" +-"http://www.test.de/test#game22" +-"http://www.test.de/test#game23" +-"http://www.test.de/test#game24" +-"http://www.test.de/test#game25" +-"http://www.test.de/test#game26" +-"http://www.test.de/test#game27" +-"http://www.test.de/test#game3" +-"http://www.test.de/test#game4" +-"http://www.test.de/test#game5" +-"http://www.test.de/test#game6" +-"http://www.test.de/test#game7" +-"http://www.test.de/test#game8" +-"http://www.test.de/test#game9" + Added: trunk/examples/krk/krkopt.data =================================================================== --- trunk/examples/krk/krkopt.data (rev 0) +++ trunk/examples/krk/krkopt.data 2008-03-13 16:48:24 UTC (rev 709) @@ -0,0 +1,105 @@ +c,1,a,3,a,1,zero +c,1,a,4,a,1,zero +c,1,a,5,a,1,zero +c,1,a,6,a,1,zero +c,1,a,7,a,1,zero +c,1,a,8,a,1,zero +c,2,a,3,a,1,zero +c,2,a,4,a,1,zero +c,2,a,4,a,2,zero +c,2,a,5,a,1,zero +c,2,a,5,a,2,zero +c,2,a,6,a,1,zero +c,2,a,6,a,2,zero +c,2,a,7,a,1,zero +c,2,a,7,a,2,zero +c,2,a,8,a,1,zero +c,2,a,8,a,2,zero +c,3,a,1,c,1,zero +c,3,e,1,c,1,zero +c,3,f,1,c,1,zero +c,3,g,1,c,1,zero +c,3,h,1,c,1,zero +d,3,a,1,d,1,zero +d,3,b,1,d,1,zero +d,3,f,1,d,1,zero +d,3,g,1,d,1,zero +d,3,h,1,d,1,zero +c,1,c,3,a,2,one +c,1,d,3,a,2,one +c,1,e,3,a,2,one +c,1,f,3,a,2,one +c,1,g,3,a,2,one +c,1,h,3,a,2,one +c,2,b,3,a,2,one +c,2,b,4,a,1,one +c,2,b,5,a,1,one +c,2,b,6,a,1,one +c,2,b,7,a,1,one +c,2,b,8,a,1,one +c,2,c,3,a,2,one +c,2,c,4,a,1,one +c,2,c,4,a,3,one +c,2,c,5,a,1,one +c,2,c,6,a,1,one +c,2,c,7,a,1,one +c,2,c,8,a,1,one +c,2,d,3,a,2,one +c,2,d,4,a,1,one +c,2,d,4,a,3,one +c,2,d,5,a,1,one +c,2,d,6,a,1,one +c,2,d,7,a,1,one +c,2,d,8,a,1,one +c,2,e,3,a,2,one +c,2,e,4,a,1,one +c,2,e,4,a,3,one +c,2,e,5,a,1,one +c,2,e,6,a,1,one +c,2,e,7,a,1,one +c,2,e,8,a,1,one +c,2,f,3,a,2,one +c,2,f,4,a,1,one +c,2,f,4,a,3,one +c,2,f,5,a,1,one +c,2,f,6,a,1,one +c,2,f,7,a,1,one +c,2,f,8,a,1,one +c,2,g,3,a,2,one +c,2,g,4,a,1,one +c,2,g,4,a,3,one +c,2,g,5,a,1,one +c,2,g,6,a,1,one +c,2,g,7,a,1,one +c,2,g,8,a,1,one +c,2,h,3,a,2,one +c,2,h,4,a,1,one +c,2,h,4,a,3,one +c,2,h,5,a,1,one +c,2,h,6,a,1,one +c,2,h,7,a,1,one +c,2,h,8,a,1,one +c,3,a,3,b,1,one +c,3,a,4,b,1,one +c,3,a,5,b,1,one +c,3,a,6,b,1,one +c,3,a,7,b,1,one +c,3,a,8,b,1,one +c,3,e,3,d,1,one +c,3,e,4,d,1,one +c,3,e,5,d,1,one +c,3,e,6,d,1,one +c,3,e,7,d,1,one +c,3,e,8,d,1,one +d,3,b,3,c,1,one +d,3,b,4,c,1,one +d,3,b,5,c,1,one +d,3,b,6,c,1,one +d,3,b,7,c,1,one +d,3,b,8,c,1,one +d,3,f,3,e,1,one +d,3,f,4,e,1,one +d,3,f,5,e,1,one +d,3,f,6,e,1,one +d,3,f,7,e,1,one +d,3,f,8,e,1,one Added: trunk/examples/krk/krkopt_large.data =================================================================== --- trunk/examples/krk/krkopt_large.data (rev 0) +++ trunk/examples/krk/krkopt_large.data 2008-03-13 16:48:24 UTC (rev 709) @@ -0,0 +1,28056 @@ +a,1,b,3,c,2,draw +a,1,c,1,c,2,draw +a,1,c,1,d,1,draw +a,1,c,1,d,2,draw +a,1,c,2,c,1,draw +a,1,c,2,c,3,draw +a,1,c,2,d,1,draw +a,1,c,2,d,2,draw +a,1,c,2,d,3,draw +a,1,c,3,c,2,draw +a,1,c,3,d,2,draw +a,1,c,3,d,3,draw +a,1,c,3,d,4,draw +a,1,c,4,d,3,draw +a,1,d,1,c,1,draw +a,1,d,1,c,2,draw +a,1,d,1,d,2,draw +a,1,d,1,e,1,draw +a,1,d,1,e,2,draw +a,1,d,2,c,1,draw +a,1,d,2,c,2,draw +a,1,d,2,c,3,draw +a,1,d,2,d,1,draw +a,1,d,2,d,3,draw +a,1,d,2,e,1,draw +a,1,d,2,e,2,draw +a,1,d,2,e,3,draw +a,1,d,3,c,2,draw +a,1,d,3,c,3,draw +a,1,d,3,d,2,draw +a,1,d,3,d,4,draw +a,1,d,3,e,2,draw +a,1,d,3,e,3,draw +a,1,d,3,e,4,draw +a,1,d,4,c,3,draw +a,1,d,4,d,3,draw +a,1,d,4,e,3,draw +a,1,d,4,e,4,draw +a,1,d,4,e,5,draw +a,1,d,5,e,4,draw +a,1,e,1,d,1,draw +a,1,e,1,d,2,draw +a,1,e,1,e,2,draw +a,1,e,1,f,1,draw +a,1,e,1,f,2,draw +a,1,e,2,d,1,draw +a,1,e,2,d,2,draw +a,1,e,2,d,3,draw +a,1,e,2,e,1,draw +a,1,e,2,e,3,draw +a,1,e,2,f,1,draw +a,1,e,2,f,2,draw +a,1,e,2,f,3,draw +a,1,e,3,d,2,draw +a,1,e,3,d,3,draw +a,1,e,3,d,4,draw +a,1,e,3,e,2,draw +a,1,e,3,e,4,draw +a,1,e,3,f,2,draw +a,1,e,3,f,3,draw +a,1,e,3,f,4,draw +a,1,e,4,d,3,draw +a,1,e,4,d,4,draw +a,1,e,4,e,3,draw +a,1,e,4,e,5,draw +a,1,e,4,f,3,draw +a,1,e,4,f,4,draw +a,1,e,4,f,5,draw +a,1,e,5,d,4,draw +a,1,e,5,e,4,draw +a,1,e,5,f,4,draw +a,1,e,5,f,5,draw +a,1,e,5,f,6,draw +a,1,e,6,f,5,draw +a,1,f,1,e,1,draw +a,1,f,1,e,2,draw +a,1,f,1,f,2,draw +a,1,f,1,g,1,draw +a,1,f,1,g,2,draw +a,1,f,2,e,1,draw +a,1,f,2,e,2,draw +a,1,f,2,e,3,draw +a,1,f,2,f,1,draw +a,1,f,2,f,3,draw +a,1,f,2,g,1,draw +a,1,f,2,g,2,draw +a,1,f,2,g,3,draw +a,1,f,3,e,2,draw +a,1,f,3,e,3,draw +a,1,f,3,e,4,draw +a,1,f,3,f,2,draw +a,1,f,3,f,4,draw +a,1,f,3,g,2,draw +a,1,f,3,g,3,draw +a,1,f,3,g,4,draw +a,1,f,4,e,3,draw +a,1,f,4,e,4,draw +a,1,f,4,e,5,draw +a,1,f,4,f,3,draw +a,1,f,4,f,5,draw +a,1,f,4,g,3,draw +a,1,f,4,g,4,draw +a,1,f,4,g,5,draw +a,1,f,5,e,4,draw +a,1,f,5,e,5,draw +a,1,f,5,f,4,draw +a,1,f,5,f,6,draw +a,1,f,5,g,4,draw +a,1,f,5,g,5,draw +a,1,f,5,g,6,draw +a,1,f,6,e,5,draw +a,1,f,6,f,5,draw +a,1,f,6,g,5,draw +a,1,f,6,g,6,draw +a,1,f,6,g,7,draw +a,1,f,7,g,6,draw +a,1,g,1,f,1,draw +a,1,g,1,f,2,draw +a,1,g,1,g,2,draw +a,1,g,1,h,1,draw +a,1,g,1,h,2,draw +a,1,g,2,f,1,draw +a,1,g,2,f,2,draw +a,1,g,2,f,3,draw +a,1,g,2,g,1,draw +a,1,g,2,g,3,draw +a,1,g,2,h,1,draw +a,1,g,2,h,2,draw +a,1,g,2,h,3,draw +a,1,g,3,f,2,draw +a,1,g,3,f,3,draw +a,1,g,3,f,4,draw +a,1,g,3,g,2,draw +a,1,g,3,g,4,draw +a,1,g,3,h,2,draw +a,1,g,3,h,3,draw +a,1,g,3,h,4,draw +a,1,g,4,f,3,draw +a,1,g,4,f,4,draw +a,1,g,4,f,5,draw +a,1,g,4,g,3,draw +a,1,g,4,g,5,draw +a,1,g,4,h,3,draw +a,1,g,4,h,4,draw +a,1,g,4,h,5,draw +a,1,g,5,f,4,draw +a,1,g,5,f,5,draw +a,1,g,5,f,6,draw +a,1,g,5,g,4,draw +a,1,g,5,g,6,draw +a,1,g,5,h,4,draw +a,1,g,5,h,5,draw +a,1,g,5,h,6,draw +a,1,g,6,f,5,draw +a,1,g,6,f,6,draw +a,1,g,6,g,5,draw +a,1,g,6,g,7,draw +a,1,g,6,h,5,draw +a,1,g,6,h,6,draw +a,1,g,6,h,7,draw +a,1,g,7,f,6,draw +a,1,g,7,g,6,draw +a,1,g,7,h,6,draw +a,1,g,7,h,7,draw +a,1,g,7,h,8,draw +a,1,g,8,h,7,draw +a,1,h,1,g,1,draw +a,1,h,1,g,2,draw +a,1,h,1,h,2,draw +a,1,h,2,g,1,draw +a,1,h,2,g,2,draw +a,1,h,2,g,3,draw +a,1,h,2,h,1,draw +a,1,h,2,h,3,draw +a,1,h,3,g,2,draw +a,1,h,3,g,3,draw +a,1,h,3,g,4,draw +a,1,h,3,h,2,draw +a,1,h,3,h,4,draw +a,1,h,4,g,3,draw +a,1,h,4,g,4,draw +a,1,h,4,g,5,draw +a,1,h,4,h,3,draw +a,1,h,4,h,5,draw +a,1,h,5,g,4,draw +a,1,h,5,g,5,draw +a,1,h,5,g,6,draw +a,1,h,5,h,4,draw +a,1,h,5,h,6,draw +a,1,h,6,g,5,draw +a,1,h,6,g,6,draw +a,1,h,6,g,7,draw +a,1,h,6,h,5,draw +a,1,h,6,h,7,draw +a,1,h,7,g,6,draw +a,1,h,7,g,7,draw +a,1,h,7,h,6,draw +a,1,h,7,h,8,draw +a,1,h,8,g,7,draw +a,1,h,8,h,7,draw +b,1,a,3,a,4,draw +b,1,a,3,b,3,draw +b,1,a,3,b,4,draw +b,1,a,4,a,3,draw +b,1,a,4,a,5,draw +b,1,a,4,b,3,draw +b,1,a,4,b,4,draw +b,1,a,4,b,5,draw +b,1,a,5,a,4,draw +b,1,a,5,a,6,draw +b,1,a,5,b,4,draw +b,1,a,5,b,5,draw +b,1,a,5,b,6,draw +b,1,a,6,a,5,draw +b,1,a,6,a,7,draw +b,1,a,6,b,5,draw +b,1,a,6,b,6,draw +b,1,a,6,b,7,draw +b,1,a,7,a,6,draw +b,1,a,7,a,8,draw +b,1,a,7,b,6,draw +b,1,a,7,b,7,draw +b,1,a,7,b,8,draw +b,1,a,8,a,7,draw +b,1,a,8,b,7,draw +b,1,a,8,b,8,draw +b,1,b,3,a,3,draw +b,1,b,3,a,4,draw +b,1,b,3,b,4,draw +b,1,b,3,c,3,draw +b,1,b,3,c,4,draw +b,1,b,4,a,3,draw +b,1,b,4,a,4,draw +b,1,b,4,a,5,draw +b,1,b,4,b,3,draw +b,1,b,4,b,5,draw +b,1,b,4,c,3,draw +b,1,b,4,c,4,draw +b,1,b,4,c,5,draw +b,1,b,5,a,4,draw +b,1,b,5,a,5,draw +b,1,b,5,a,6,draw +b,1,b,5,b,4,draw +b,1,b,5,b,6,draw +b,1,b,5,c,4,draw +b,1,b,5,c,5,draw +b,1,b,5,c,6,draw +b,1,b,6,a,5,draw +b,1,b,6,a,6,draw +b,1,b,6,a,7,draw +b,1,b,6,b,5,draw +b,1,b,6,b,7,draw +b,1,b,6,c,5,draw +b,1,b,6,c,6,draw +b,1,b,6,c,7,draw +b,1,b,7,a,6,draw +b,1,b,7,a,7,draw +b,1,b,7,a,8,draw +b,1,b,7,b,6,draw +b,1,b,7,b,8,draw +b,1,b,7,c,6,draw +b,1,b,7,c,7,draw +b,1,b,7,c,8,draw +b,1,b,8,a,7,draw +b,1,b,8,a,8,draw +b,1,b,8,b,7,draw +b,1,b,8,c,7,draw +b,1,b,8,c,8,draw +b,1,c,3,b,3,draw +b,1,c,3,b,4,draw +b,1,c,3,c,4,draw +b,1,c,3,d,2,draw +b,1,c,3,d,3,draw +b,1,c,3,d,4,draw +b,1,c,4,b,3,draw +b,1,c,4,b,4,draw +b,1,c,4,b,5,draw +b,1,c,4,c,3,draw +b,1,c,4,c,5,draw +b,1,c,4,d,3,draw +b,1,c,4,d,4,draw +b,1,c,4,d,5,draw +b,1,c,5,b,4,draw +b,1,c,5,b,5,draw +b,1,c,5,b,6,draw +b,1,c,5,c,4,draw +b,1,c,5,c,6,draw +b,1,c,5,d,4,draw +b,1,c,5,d,5,draw +b,1,c,5,d,6,draw +b,1,c,6,b,5,draw +b,1,c,6,b,6,draw +b,1,c,6,b,7,draw +b,1,c,6,c,5,draw +b,1,c,6,c,7,draw +b,1,c,6,d,5,draw +b,1,c,6,d,6,draw +b,1,c,6,d,7,draw +b,1,c,7,b,6,draw +b,1,c,7,b,7,draw +b,1,c,7,b,8,draw +b,1,c,7,c,6,draw +b,1,c,7,c,8,draw +b,1,c,7,d,6,draw +b,1,c,7,d,7,draw +b,1,c,7,d,8,draw +b,1,c,8,b,7,draw +b,1,c,8,b,8,draw +b,1,c,8,c,7,draw +b,1,c,8,d,7,draw +b,1,c,8,d,8,draw +b,1,d,1,d,2,draw +b,1,d,1,e,1,draw +b,1,d,1,e,2,draw +b,1,d,2,c,3,draw +b,1,d,2,d,1,draw +b,1,d,2,d,3,draw +b,1,d,2,e,1,draw +b,1,d,2,e,2,draw +b,1,d,2,e,3,draw +b,1,d,3,c,3,draw +b,1,d,3,c,4,draw +b,1,d,3,d,2,draw +b,1,d,3,d,4,draw +b,1,d,3,e,2,draw +b,1,d,3,e,3,draw +b,1,d,3,e,4,draw +b,1,d,4,c,3,draw +b,1,d,4,c,4,draw +b,1,d,4,c,5,draw +b,1,d,4,d,3,draw +b,1,d,4,d,5,draw +b,1,d,4,e,3,draw +b,1,d,4,e,4,draw +b,1,d,4,e,5,draw +b,1,d,5,c,4,draw +b,1,d,5,c,5,draw +b,1,d,5,c,6,draw +b,1,d,5,d,4,draw +b,1,d,5,d,6,draw +b,1,d,5,e,4,draw +b,1,d,5,e,5,draw +b,1,d,5,e,6,draw +b,1,d,6,c,5,draw +b,1,d,6,c,6,draw +b,1,d,6,c,7,draw +b,1,d,6,d,5,draw +b,1,d,6,d,7,draw +b,1,d,6,e,5,draw +b,1,d,6,e,6,draw +b,1,d,6,e,7,draw +b,1,d,7,c,6,draw +b,1,d,7,c,7,draw +b,1,d,7,c,8,draw +b,1,d,7,d,6,draw +b,1,d,7,d,8,draw +b,1,d,7,e,6,draw +b,1,d,7,e,7,draw +b,1,d,7,e,8,draw +b,1,d,8,c,7,draw +b,1,d,8,c,8,draw +b,1,d,8,d,7,draw +b,1,d,8,e,7,draw +b,1,d,8,e,8,draw +b,1,e,1,d,1,draw +b,1,e,1,d,2,draw +b,1,e,1,e,2,draw +b,1,e,1,f,1,draw +b,1,e,1,f,2,draw +b,1,e,2,d,1,draw +b,1,e,2,d,2,draw +b,1,e,2,d,3,draw +b,1,e,2,e,1,draw +b,1,e,2,e,3,draw +b,1,e,2,f,1,draw +b,1,e,2,f,2,draw +b,1,e,2,f,3,draw +b,1,e,3,d,2,draw +b,1,e,3,d,3,draw +b,1,e,3,d,4,draw +b,1,e,3,e,2,draw +b,1,e,3,e,4,draw +b,1,e,3,f,2,draw +b,1,e,3,f,3,draw +b,1,e,3,f,4,draw +b,1,e,4,d,3,draw +b,1,e,4,d,4,draw +b,1,e,4,d,5,draw +b,1,e,4,e,3,draw +b,1,e,4,e,5,draw +b,1,e,4,f,3,draw +b,1,e,4,f,4,draw +b,1,e,4,f,5,draw +b,1,e,5,d,4,draw +b,1,e,5,d,5,draw +b,1,e,5,d,6,draw +b,1,e,5,e,4,draw +b,1,e,5,e,6,draw +b,1,e,5,f,4,draw +b,1,e,5,f,5,draw +b,1,e,5,f,6,draw +b,1,e,6,d,5,draw +b,1,e,6,d,6,draw +b,1,e,6,d,7,draw +b,1,e,6,e,5,draw +b,1,e,6,e,7,draw +b,1,e,6,f,5,draw +b,1,e,6,f,6,draw +b,1,e,6,f,7,draw +b,1,e,7,d,6,draw +b,1,e,7,d,7,draw +b,1,e,7,d,8,draw +b,1,e,7,e,6,draw +b,1,e,7,e,8,draw +b,1,e,7,f,6,draw +b,1,e,7,f,7,draw +b,1,e,7,f,8,draw +b,1,e,8,d,7,draw +b,1,e,8,d,8,draw +b,1,e,8,e,7,draw +b,1,e,8,f,7,draw +b,1,e,8,f,8,draw +b,1,f,1,e,1,draw +b,1,f,1,e,2,draw +b,1,f,1,f,2,draw +b,1,f,1,g,1,draw +b,1,f,1,g,2,draw +b,1,f,2,e,1,draw +b,1,f,2,e,2,draw +b,1,f,2,e,3,draw +b,1,f,2,f,1,draw +b,1,f,2,f,3,draw +b,1,f,2,g,1,draw +b,1,f,2,g,2,draw +b,1,f,2,g,3,draw +b,1,f,3,e,2,draw +b,1,f,3,e,3,draw +b,1,f,3,e,4,draw +b,1,f,3,f,2,draw +b,1,f,3,f,4,draw +b,1,f,3,g,2,draw +b,1,f,3,g,3,draw +b,1,f,3,g,4,draw +b,1,f,4,e,3,draw +b,1,f,4,e,4,draw +b,1,f,4,e,5,draw +b,1,f,4,f,3,draw +b,1,f,4,f,5,draw +b,1,f,4,g,3,draw +b,1,f,4,g,4,draw +b,1,f,4,g,5,draw +b,1,f,5,e,4,draw +b,1,f,5,e,5,draw +b,1,f,5,e,6,draw +b,1,f,5,f,4,draw +b,1,f,5,f,6,draw +b,1,f,5,g,4,draw +b,1,f,5,g,5,draw +b,1,f,5,g,6,draw +b,1,f,6,e,5,draw +b,1,f,6,e,6,draw +b,1,f,6,e,7,draw +b,1,f,6,f,5,draw +b,1,f,6,f,7,draw +b,1,f,6,g,5,draw +b,1,f,6,g,6,draw +b,1,f,6,g,7,draw +b,1,f,7,e,6,draw +b,1,f,7,e,7,draw +b,1,f,7,e,8,draw +b,1,f,7,f,6,draw +b,1,f,7,f,8,draw +b,1,f,7,g,6,draw +b,1,f,7,g,7,draw +b,1,f,7,g,8,draw +b,1,f,8,e,7,draw +b,1,f,8,e,8,draw +b,1,f,8,f,7,draw +b,1,f,8,g,7,draw +b,1,f,8,g,8,draw +b,1,g,1,f,1,draw +b,1,g,1,f,2,draw +b,1,g,1,g,2,draw +b,1,g,1,h,1,draw +b,1,g,1,h,2,draw +b,1,g,2,f,1,draw +b,1,g,2,f,2,draw +b,1,g,2,f,3,draw +b,1,g,2,g,1,draw +b,1,g,2,g,3,draw +b,1,g,2,h,1,draw +b,1,g,2,h,2,draw +b,1,g,2,h,3,draw +b,1,g,3,f,2,draw +b,1,g,3,f,3,draw +b,1,g,3,f,4,draw +b,1,g,3,g,2,draw +b,1,g,3,g,4,draw +b,1,g,3,h,2,draw +b,1,g,3,h,3,draw +b,1,g,3,h,4,draw +b,1,g,4,f,3,draw +b,1,g,4,f,4,draw +b,1,g,4,f,5,draw +b,1,g,4,g,3,draw +b,1,g,4,g,5,draw +b,1,g,4,h,3,draw +b,1,g,4,h,4,draw +b,1,g,4,h,5,draw +b,1,g,5,f,4,draw +b,1,g,5,f,5,draw +b,1,g,5,f,6,draw +b,1,g,5,g,4,draw +b,1,g,5,g,6,draw +b,1,g,5,h,4,draw +b,1,g,5,h,5,draw +b,1,g,5,h,6,draw +b,1,g,6,f,5,draw +b,1,g,6,f,6,draw +b,1,g,6,f,7,draw +b,1,g,6,g,5,draw +b,1,g,6,g,7,draw +b,1,g,6,h,5,draw +b,1,g,6,h,6,draw +b,1,g,6,h,7,draw +b,1,g,7,f,6,draw +b,1,g,7,f,7,draw +b,1,g,7,f,8,draw +b,1,g,7,g,6,draw +b,1,g,7,g,8,draw +b,1,g,7,h,6,draw +b,1,g,7,h,7,draw +b,1,g,7,h,8,draw +b,1,g,8,f,7,draw +b,1,g,8,f,8,draw +b,1,g,8,g,7,draw +b,1,g,8,h,7,draw +b,1,g,8,h,8,draw +b,1,h,1,g,1,draw +b,1,h,1,g,2,draw +b,1,h,1,h,2,draw +b,1,h,2,g,1,draw +b,1,h,2,g,2,draw +b,1,h,2,g,3,draw +b,1,h,2,h,1,draw +b,1,h,2,h,3,draw +b,1,h,3,g,2,draw +b,1,h,3,g,3,draw +b,1,h,3,g,4,draw +b,1,h,3,h,2,draw +b,1,h,3,h,4,draw +b,1,h,4,g,3,draw +b,1,h,4,g,4,draw +b,1,h,4,g,5,draw +b,1,h,4,h,3,draw +b,1,h,4,h,5,draw +b,1,h,5,g,4,draw +b,1,h,5,g,5,draw +b,1,h,5,g,6,draw +b,1,h,5,h,4,draw +b,1,h,5,h,6,draw +b,1,h,6,g,5,draw +b,1,h,6,g,6,draw +b,1,h,6,g,7,draw +b,1,h,6,h,5,draw +b,1,h,6,h,7,draw +b,1,h,7,g,6,draw +b,1,h,7,g,7,draw +b,1,h,7,g,8,draw +b,1,h,7,h,6,draw +b,1,h,7,h,8,draw +b,1,h,8,g,7,draw +b,1,h,8,g,8,draw +b,1,h,8,h,7,draw +b,2,c,4,d,3,draw +b,2,d,1,d,2,draw +b,2,d,1,e,1,draw +b,2,d,1,e,2,draw +b,2,d,2,d,1,draw +b,2,d,2,d,3,draw +b,2,d,2,e,1,draw +b,2,d,2,e,2,draw +b,2,d,2,e,3,draw +b,2,d,3,d,2,draw +b,2,d,3,d,4,draw +b,2,d,3,e,2,draw +b,2,d,3,e,3,draw +b,2,d,3,e,4,draw +b,2,d,4,d,3,draw +b,2,d,4,e,3,draw +b,2,d,4,e,4,draw +b,2,d,4,e,5,draw +b,2,d,5,e,4,draw +b,2,e,1,d,1,draw +b,2,e,1,d,2,draw +b,2,e,1,e,2,draw +b,2,e,1,f,1,draw +b,2,e,1,f,2,draw +b,2,e,2,d,1,draw +b,2,e,2,d,2,draw +b,2,e,2,d,3,draw +b,2,e,2,e,1,draw +b,2,e,2,e,3,draw +b,2,e,2,f,1,draw +b,2,e,2,f,2,draw +b,2,e,2,f,3,draw +b,2,e,3,d,2,draw +b,2,e,3,d,3,draw +b,2,e,3,d,4,draw +b,2,e,3,e,2,draw +b,2,e,3,e,4,draw +b,2,e,3,f,2,draw +b,2,e,3,f,3,draw +b,2,e,3,f,4,draw +b,2,e,4,d,3,draw +b,2,e,4,d,4,draw +b,2,e,4,e,3,draw +b,2,e,4,e,5,draw +b,2,e,4,f,3,draw +b,2,e,4,f,4,draw +b,2,e,4,f,5,draw +b,2,e,5,d,4,draw +b,2,e,5,e,4,draw +b,2,e,5,f,4,draw +b,2,e,5,f,5,draw +b,2,e,5,f,6,draw +b,2,e,6,f,5,draw +b,2,f,1,e,1,draw +b,2,f,1,e,2,draw +b,2,f,1,f,2,draw +b,2,f,1,g,1,draw +b,2,f,1,g,2,draw +b,2,f,2,e,1,draw +b,2,f,2,e,2,draw +b,2,f,2,e,3,draw +b,2,f,2,f,1,draw +b,2,f,2,f,3,draw +b,2,f,2,g,1,draw +b,2,f,2,g,2,draw +b,2,f,2,g,3,draw +b,2,f,3,e,2,draw +b,2,f,3,e,3,draw +b,2,f,3,e,4,draw +b,2,f,3,f,2,draw +b,2,f,3,f,4,draw +b,2,f,3,g,2,draw +b,2,f,3,g,3,draw +b,2,f,3,g,4,draw +b,2,f,4,e,3,draw +b,2,f,4,e,4,draw +b,2,f,4,e,5,draw +b,2,f,4,f,3,draw +b,2,f,4,f,5,draw +b,2,f,4,g,3,draw +b,2,f,4,g,4,draw +b,2,f,4,g,5,draw +b,2,f,5,e,4,draw +b,2,f,5,e,5,draw +b,2,f,5,f,4,draw +b,2,f,5,f,6,draw +b,2,f,5,g,4,draw +b,2,f,5,g,5,draw +b,2,f,5,g,6,draw +b,2,f,6,e,5,draw +b,2,f,6,f,5,draw +b,2,f,6,g,5,draw +b,2,f,6,g,6,draw +b,2,f,6,g,7,draw +b,2,f,7,g,6,draw +b,2,g,1,f,1,draw +b,2,g,1,f,2,draw +b,2,g,1,g,2,draw +b,2,g,1,h,1,draw +b,2,g,1,h,2,draw +b,2,g,2,f,1,draw +b,2,g,2,f,2,draw +b,2,g,2,f,3,draw +b,2,g,2,g,1,draw +b,2,g,2,g,3,draw +b,2,g,2,h,1,draw +b,2,g,2,h,2,draw +b,2,g,2,h,3,draw +b,2,g,3,f,2,draw +b,2,g,3,f,3,draw +b,2,g,3,f,4,draw +b,2,g,3,g,2,draw +b,2,g,3,g,4,draw +b,2,g,3,h,2,draw +b,2,g,3,h,3,draw +b,2,g,3,h,4,draw +b,2,g,4,f,3,draw +b,2,g,4,f,4,draw +b,2,g,4,f,5,draw +b,2,g,4,g,3,draw +b,2,g,4,g,5,draw +b,2,g,4,h,3,draw +b,2,g,4,h,4,draw +b,2,g,4,h,5,draw +b,2,g,5,f,4,draw +b,2,g,5,f,5,draw +b,2,g,5,f,6,draw +b,2,g,5,g,4,draw +b,2,g,5,g,6,draw +b,2,g,5,h,4,draw +b,2,g,5,h,5,draw +b,2,g,5,h,6,draw +b,2,g,6,f,5,draw +b,2,g,6,f,6,draw +b,2,g,6,g,5,draw +b,2,g,6,g,7,draw +b,2,g,6,h,5,draw +b,2,g,6,h,6,draw +b,2,g,6,h,7,draw +b,2,g,7,f,6,draw +b,2,g,7,g,6,draw +b,2,g,7,h,6,draw +b,2,g,7,h,7,draw +b,2,g,7,h,8,draw +b,2,g,8,h,7,draw +b,2,h,1,g,1,draw +b,2,h,1,g,2,draw +b,2,h,1,h,2,draw +b,2,h,2,g,1,draw +b,2,h,2,g,2,draw +b,2,h,2,g,3,draw +b,2,h,2,h,1,draw +b,2,h,2,h,3,draw +b,2,h,3,g,2,draw +b,2,h,3,g,3,draw +b,2,h,3,g,4,draw +b,2,h,3,h,2,draw +b,2,h,3,h,4,draw +b,2,h,4,g,3,draw +b,2,h,4,g,4,draw +b,2,h,4,g,5,draw +b,2,h,4,h,3,draw +b,2,h,4,h,5,draw +b,2,h,5,g,4,draw +b,2,h,5,g,5,draw +b,2,h,5,g,6,draw +b,2,h,5,h,4,draw +b,2,h,5,h,6,draw +b,2,h,6,g,5,draw +b,2,h,6,g,6,draw +b,2,h,6,g,7,draw +b,2,h,6,h,5,draw +b,2,h,6,h,7,draw +b,2,h,7,g,6,draw +b,2,h,7,g,7,draw +b,2,h,7,h,6,draw +b,2,h,7,h,8,draw +b,2,h,8,g,7,draw +b,2,h,8,h,7,draw +c,1,a,1,a,2,draw +c,1,a,2,a,1,draw +c,1,a,2,a,3,draw +c,1,a,2,b,3,draw +c,1,a,3,a,2,draw +c,1,a,3,a,4,draw +c,1,a,3,b,3,draw +c,1,a,3,b,4,draw +c,1,a,4,a,3,draw +c,1,a,4,a,5,draw +c,1,a,4,b,3,draw +c,1,a,4,b,4,draw +c,1,a,4,b,5,draw +c,1,a,5,a,4,draw +c,1,a,5,a,6,draw +c,1,a,5,b,4,draw +c,1,a,5,b,5,draw +c,1,a,5,b,6,draw +c,1,a,6,a,5,draw +c,1,a,6,a,7,draw +c,1,a,6,b,5,draw +c,1,a,6,b,6,draw +c,1,a,6,b,7,draw +c,1,a,7,a,6,draw +c,1,a,7,a,8,draw +c,1,a,7,b,6,draw +c,1,a,7,b,7,draw +c,1,a,7,b,8,draw +c,1,a,8,a,7,draw +c,1,a,8,b,7,draw +c,1,a,8,b,8,draw +c,1,b,2,a,1,draw +c,1,b,3,a,2,draw +c,1,b,3,a,3,draw +c,1,b,3,a,4,draw +c,1,b,3,b,4,draw +c,1,b,3,c,3,draw +c,1,b,3,c,4,draw +c,1,b,4,a,3,draw +c,1,b,4,a,4,draw +c,1,b,4,a,5,draw +c,1,b,4,b,3,draw +c,1,b,4,b,5,draw +c,1,b,4,c,3,draw +c,1,b,4,c,4,draw +c,1,b,4,c,5,draw +c,1,b,5,a,4,draw +c,1,b,5,a,5,draw +c,1,b,5,a,6,draw +c,1,b,5,b,4,draw +c,1,b,5,b,6,draw +c,1,b,5,c,4,draw +c,1,b,5,c,5,draw +c,1,b,5,c,6,draw +c,1,b,6,a,5,draw +c,1,b,6,a,6,draw +c,1,b,6,a,7,draw +c,1,b,6,b,5,draw +c,1,b,6,b,7,draw +c,1,b,6,c,5,draw +c,1,b,6,c,6,draw +c,1,b,6,c,7,draw +c,1,b,7,a,6,draw +c,1,b,7,a,7,draw +c,1,b,7,a,8,draw +c,1,b,7,b,6,draw +c,1,b,7,b,8,draw +c,1,b,7,c,6,draw +c,1,b,7,c,7,draw +c,1,b,7,c,8,draw +c,1,b,8,a,7,draw +c,1,b,8,a,8,draw +c,1,b,8,b,7,draw +c,1,b,8,c,7,draw +c,1,b,8,c,8,draw +c,1,c,2,a,1,draw +c,1,c,3,b,3,draw +c,1,c,3,b,4,draw +c,1,c,3,c,4,draw +c,1,c,3,d,3,draw +c,1,c,3,d,4,draw +c,1,c,4,b,3,draw +c,1,c,4,b,4,draw +c,1,c,4,b,5,draw +c,1,c,4,c,3,draw +c,1,c,4,c,5,draw +c,1,c,4,d,3,draw +c,1,c,4,d,4,draw +c,1,c,4,d,5,draw +c,1,c,5,b,4,draw +c,1,c,5,b,5,draw +c,1,c,5,b,6,draw +c,1,c,5,c,4,draw +c,1,c,5,c,6,draw +c,1,c,5,d,4,draw +c,1,c,5,d,5,draw +c,1,c,5,d,6,draw +c,1,c,6,b,5,draw +c,1,c,6,b,6,draw +c,1,c,6,b,7,draw +c,1,c,6,c,5,draw +c,1,c,6,c,7,draw +c,1,c,6,d,5,draw +c,1,c,6,d,6,draw +c,1,c,6,d,7,draw +c,1,c,7,b,6,draw +c,1,c,7,b,7,draw +c,1,c,7,b,8,draw +c,1,c,7,c,6,draw +c,1,c,7,c,8,draw +c,1,c,7,d,6,draw +c,1,c,7,d,7,draw +c,1,c,7,d,8,draw +c,1,c,8,b,7,draw +c,1,c,8,b,8,draw +c,1,c,8,c,7,draw +c,1,c,8,d,7,draw +c,1,c,8,d,8,draw +c,1,d,2,a,1,draw +c,1,d,3,c,3,draw +c,1,d,3,c,4,draw +c,1,d,3,d,4,draw +c,1,d,3,e,2,draw +c,1,d,3,e,3,draw +c,1,d,3,e,4,draw +c,1,d,4,c,3,draw +c,1,d,4,c,4,draw +c,1,d,4,c,5,draw +c,1,d,4,d,3,draw +c,1,d,4,d,5,draw +c,1,d,4,e,3,draw +c,1,d,4,e,4,draw +c,1,d,4,e,5,draw +c,1,d,5,c,4,draw +c,1,d,5,c,5,draw +c,1,d,5,c,6,draw +c,1,d,5,d,4,draw +c,1,d,5,d,6,draw +c,1,d,5,e,4,draw +c,1,d,5,e,5,draw +c,1,d,5,e,6,draw +c,1,d,6,c,5,draw +c,1,d,6,c,6,draw +c,1,d,6,c,7,draw +c,1,d,6,d,5,draw +c,1,d,6,d,7,draw +c,1,d,6,e,5,draw +c,1,d,6,e,6,draw +c,1,d,6,e,7,draw +c,1,d,7,c,6,draw +c,1,d,7,c,7,draw +c,1,d,7,c,8,draw +c,1,d,7,d,6,draw +c,1,d,7,d,8,draw +c,1,d,7,e,6,draw +c,1,d,7,e,7,draw +c,1,d,7,e,8,draw +c,1,d,8,c,7,draw +c,1,d,8,c,8,draw +c,1,d,8,d,7,draw +c,1,d,8,e,7,draw +c,1,d,8,e,8,draw +c,1,e,1,e,2,draw +c,1,e,1,f,1,draw +c,1,e,1,f,2,draw +c,1,e,2,a,1,draw +c,1,e,2,d,3,draw +c,1,e,2,e,1,draw +c,1,e,2,e,3,draw +c,1,e,2,f,1,draw +c,1,e,2,f,2,draw +c,1,e,2,f,3,draw +c,1,e,3,d,3,draw +c,1,e,3,d,4,draw +c,1,e,3,e,2,draw +c,1,e,3,e,4,draw +c,1,e,3,f,2,draw +c,1,e,3,f,3,draw +c,1,e,3,f,4,draw +c,1,e,4,d,3,draw +c,1,e,4,d,4,draw +c,1,e,4,d,5,draw +c,1,e,4,e,3,draw +c,1,e,4,e,5,draw +c,1,e,4,f,3,draw +c,1,e,4,f,4,draw +c,1,e,4,f,5,draw +c,1,e,5,d,4,draw +c,1,e,5,d,5,draw +c,1,e,5,d,6,draw +c,1,e,5,e,4,draw +c,1,e,5,e,6,draw +c,1,e,5,f,4,draw +c,1,e,5,f,5,draw +c,1,e,5,f,6,draw +c,1,e,6,d,5,draw +c,1,e,6,d,6,draw +c,1,e,6,d,7,draw +c,1,e,6,e,5,draw +c,1,e,6,e,7,draw +c,1,e,6,f,5,draw +c,1,e,6,f,6,draw +c,1,e,6,f,7,draw +c,1,e,7,d,6,draw +c,1,e,7,d,7,draw +c,1,e,7,d,8,draw +c,1,e,7,e,6,draw +c,1,e,7,e,8,draw +c,1,e,7,f,6,draw +c,1,e,7,f,7,draw +c,1,e,7,f,8,draw +c,1,e,8,d,7,draw +c,1,e,8,d,8,draw +c,1,e,8,e,7,draw +c,1,e,8,f,7,draw +c,1,e,8,f,8,draw +c,1,f,1,e,1,draw +c,1,f,1,e,2,draw +c,1,f,1,f,2,draw +c,1,f,1,g,1,draw +c,1,f,1,g,2,draw +c,1,f,2,a,1,draw +c,1,f,2,e,1,draw +c,1,f,2,e,2,draw +c,1,f,2,e,3,draw +c,1,f,2,f,1,draw +c,1,f,2,f,3,draw +c,1,f,2,g,1,draw +c,1,f,2,g,2,draw +c,1,f,2,g,3,draw +c,1,f,3,e,2,draw +c,1,f,3,e,3,draw +c,1,f,3,e,4,draw +c,1,f,3,f,2,draw +c,1,f,3,f,4,draw +c,1,f,3,g,2,draw +c,1,f,3,g,3,draw +c,1,f,3,g,4,draw +c,1,f,4,e,3,draw +c,1,f,4,e,4,draw +c,1,f,4,e,5,draw +c,1,f,4,f,3,draw +c,1,f,4,f,5,draw +c,1,f,4,g,3,draw +c,1,f,4,g,4,draw +c,1,f,4,g,5,draw +c,1,f,5,e,4,draw +c,1,f,5,e,5,draw +c,1,f,5,e,6,draw +c,1,f,5,f,4,draw +c,1,f,5,f,6,draw +c,1,f,5,g,4,draw +c,1,f,5,g,5,draw +c,1,f,5,g,6,draw +c,1,f,6,e,5,draw +c,1,f,6,e,6,draw +c,1,f,6,e,7,draw +c,1,f,6,f,5,draw +c,1,f,6,f,7,draw +c,1,f,6,g,5,draw +c,1,f,6,g,6,draw +c,1,f,6,g,7,draw +c,1,f,7,e,6,draw +c,1,f,7,e,7,draw +c,1,f,7,e,8,draw +c,1,f,7,f,6,draw +c,1,f,7,f,8,draw +c,1,f,7,g,6,draw +c,1,f,7,g,7,draw +c,1,f,7,g,8,draw +c,1,f,8,e,7,draw +c,1,f,8,e,8,draw +c,1,f,8,f,7,draw +c,1,f,8,g,7,draw +c,1,f,8,g,8,draw +c,1,g,1,f,1,draw +c,1,g,1,f,2,draw +c,1,g,1,g,2,draw +c,1,g,1,h,1,draw +c,1,g,1,h,2,draw +c,1,g,2,a,1,draw +c,1,g,2,f,1,draw +c,1,g,2,f,2,draw +c,1,g,2,f,3,draw +c,1,g,2,g,1,draw +c,1,g,2,g,3,draw +c,1,g,2,h,1,draw +c,1,g,2,h,2,draw +c,1,g,2,h,3,draw +c,1,g,3,f,2,draw +c,1,g,3,f,3,draw +c,1,g,3,f,4,draw +c,1,g,3,g,2,draw +c,1,g,3,g,4,draw +c,1,g,3,h,2,draw +c,1,g,3,h,3,draw +c,1,g,3,h,4,draw +c,1,g,4,f,3,draw +c,1,g,4,f,4,draw +c,1,g,4,f,5,draw +c,1,g,4,g,3,draw +c,1,g,4,g,5,draw +c,1,g,4,h,3,draw +c,1,g,4,h,4,draw +c,1,g,4,h,5,draw +c,1,g,5,f,4,draw +c,1,g,5,f,5,draw +c,1,g,5,f,6,draw +c,1,g,5,g,4,draw +c,1,g,5,g,6,draw +c,1,g,5,h,4,draw +c,1,g,5,h,5,draw +c,1,g,5,h,6,draw +c,1,g,6,f,5,draw +c,1,g,6,f,6,draw +c,1,g,6,f,7,draw +c,1,g,6,g,5,draw +c,1,g,6,g,7,draw +c,1,g,6,h,5,draw +c,1,g,6,h,6,draw +c,1,g,6,h,7,draw +c,1,g,7,f,6,draw +c,1,g,7,f,7,draw +c,1,g,7,f,8,draw +c,1,g,7,g,6,draw +c,1,g,7,g,8,draw +c,1,g,7,h,6,draw +c,1,g,7,h,7,draw +c,1,g,7,h,8,draw +c,1,g,8,f,7,draw +c,1,g,8,f,8,draw +c,1,g,8,g,7,draw +c,1,g,8,h,7,draw +c,1,g,8,h,8,draw +c,1,h,1,g,1,draw +c,1,h,1,g,2,draw +c,1,h,1,h,2,draw +c,1,h,2,a,1,draw +c,1,h,2,g,1,draw +c,1,h,2,g,2,draw +c,1,h,2,g,3,draw +c,1,h,2,h,1,draw +c,1,h,2,h,3,draw +c,1,h,3,g,2,draw +c,1,h,3,g,3,draw +c,1,h,3,g,4,draw +c,1,h,3,h,2,draw +c,1,h,3,h,4,draw +c,1,h,4,g,3,draw +c,1,h,4,g,4,draw +c,1,h,4,g,5,draw +c,1,h,4,h,3,draw +c,1,h,4,h,5,draw +c,1,h,5,g,4,draw +c,1,h,5,g,5,draw +c,1,h,5,g,6,draw +c,1,h,5,h,4,draw +c,1,h,5,h,6,draw +c,1,h,6,g,5,draw +c,1,h,6,g,6,draw +c,1,h,6,g,7,draw +c,1,h,6,h,5,draw +c,1,h,6,h,7,draw +c,1,h,7,g,6,draw +c,1,h,7,g,7,draw +c,1,h,7,g,8,draw +c,1,h,7,h,6,draw +c,1,h,7,h,8,draw +c,1,h,8,g,7,draw +c,1,h,8,g,8,draw +c,1,h,8,h,7,draw +c,2,a,1,a,2,draw +c,2,a,2,a,1,draw +c,2,a,2,a,3,draw +c,2,a,3,a,2,draw +c,2,a,3,a,4,draw +c,2,a,3,b,4,draw +c,2,a,4,a,3,draw +c,2,a,4,a,5,draw +c,2,a,4,b,4,draw +c,2,a,4,b,5,draw +c,2,a,5,a,4,draw +c,2,a,5,a,6,draw +c,2,a,5,b,4,draw +c,2,a,5,b,5,draw +c,2,a,5,b,6,draw +c,2,a,6,a,5,draw +c,2,a,6,a,7,draw +c,2,a,6,b,5,draw +c,2,a,6,b,6,draw +c,2,a,6,b,7,draw +c,2,a,7,a,6,draw +c,2,a,7,a,8,draw +c,2,a,7,b,6,draw +c,2,a,7,b,7,draw +c,2,a,7,b,8,draw +c,2,a,8,a,7,draw +c,2,a,8,b,7,draw +c,2,a,8,b,8,draw +c,2,b,2,a,1,draw +c,2,b,4,a,3,draw +c,2,b,4,a,4,draw +c,2,b,4,a,5,draw +c,2,b,4,b,5,draw +c,2,b,4,c,4,draw +c,2,b,4,c,5,draw +c,2,b,5,a,4,draw +c,2,b,5,a,5,draw +c,2,b,5,a,6,draw +c,2,b,5,b,4,draw +c,2,b,5,b,6,draw +c,2,b,5,c,4,draw +c,2,b,5,c,5,draw +c,2,b,5,c,6,draw +c,2,b,6,a,5,draw +c,2,b,6,a,6,draw +c,2,b,6,a,7,draw +c,2,b,6,b,5,draw +c,2,b,6,b,7,draw +c,2,b,6,c,5,draw +c,2,b,6,c,6,draw +c,2,b,6,c,7,draw +c,2,b,7,a,6,draw +c,2,b,7,a,7,draw +c,2,b,7,a,8,draw +c,2,b,7,b,6,draw +c,2,b,7,b,8,draw +c,2,b,7,c,6,draw +c,2,b,7,c,7,draw +c,2,b,7,c,8,draw +c,2,b,8,a,7,draw +c,2,b,8,a,8,draw +c,2,b,8,b,7,draw +c,2,b,8,c,7,draw +c,2,b,8,c,8,draw +c,2,c,4,b,4,draw +c,2,c,4,b,5,draw +c,2,c,4,c,5,draw +c,2,c,4,d,4,draw +c,2,c,4,d,5,draw +c,2,c,5,b,4,draw +c,2,c,5,b,5,draw +c,2,c,5,b,6,draw +c,2,c,5,c,4,draw +c,2,c,5,c,6,draw +c,2,c,5,d,4,draw +c,2,c,5,d,5,draw +c,2,c,5,d,6,draw +c,2,c,6,b,5,draw +c,2,c,6,b,6,draw +c,2,c,6,b,7,draw +c,2,c,6,c,5,draw +c,2,c,6,c,7,draw +c,2,c,6,d,5,draw +c,2,c,6,d,6,draw +c,2,c,6,d,7,draw +c,2,c,7,b,6,draw +c,2,c,7,b,7,draw +c,2,c,7,b,8,draw +c,2,c,7,c,6,draw +c,2,c,7,c,8,draw +c,2,c,7,d,6,draw +c,2,c,7,d,7,draw +c,2,c,7,d,8,draw +c,2,c,8,b,7,draw +c,2,c,8,b,8,draw +c,2,c,8,c,7,draw +c,2,c,8,d,7,draw +c,2,c,8,d,8,draw +c,2,d,4,c,4,draw +c,2,d,4,c,5,draw +c,2,d,4,d,5,draw +c,2,d,4,e,3,draw +c,2,d,4,e,4,draw +c,2,d,4,e,5,draw +c,2,d,5,c,4,draw +c,2,d,5,c,5,draw +c,2,d,5,c,6,draw +c,2,d,5,d,4,draw +c,2,d,5,d,6,draw +c,2,d,5,e,4,draw +c,2,d,5,e,5,draw +c,2,d,5,e,6,draw +c,2,d,6,c,5,draw +c,2,d,6,c,6,draw +c,2,d,6,c,7,draw +c,2,d,6,d,5,draw +c,2,d,6,d,7,draw +c,2,d,6,e,5,draw +c,2,d,6,e,6,draw +c,2,d,6,e,7,draw +c,2,d,7,c,6,draw +c,2,d,7,c,7,draw +c,2,d,7,c,8,draw +c,2,d,7,d,6,draw +c,2,d,7,d,8,draw +c,2,d,7,e,6,draw +c,2,d,7,e,7,draw +c,2,d,7,e,8,draw +c,2,d,8,c,7,draw +c,2,d,8,c,8,draw +c,2,d,8,d,7,draw +c,2,d,8,e,7,draw +c,2,d,8,e,8,draw +c,2,e,1,e,2,draw +c,2,e,1,f,1,draw +c,2,e,1,f,2,draw +c,2,e,2,e,1,draw +c,2,e,2,e,3,draw +c,2,e,2,f,1,draw +c,2,e,2,f,2,draw +c,2,e,2,f,3,draw +c,2,e,3,d,4,draw +c,2,e,3,e,2,draw +c,2,e,3,e,4,draw +c,2,e,3,f,2,draw +c,2,e,3,f,3,draw +c,2,e,3,f,4,draw +c,2,e,4,d,4,draw +c,2,e,4,d,5,draw +c,2,e,4,e,3,draw +c,2,e,4,e,5,draw +c,2,e,4,f,3,draw +c,2,e,4,f,4,draw +c,2,e,4,f,5,draw +c,2,e,5,d,4,draw +c,2,e,5,d,5,draw +c,2,e,5,d,6,draw +c,2,e,5,e,4,draw +c,2,e,5,e,6,draw +c,2,e,5,f,4,draw +c,2,e,5,f,5,draw +c,2,e,5,f,6,draw +c,2,e,6,d,5,draw +c,2,e,6,d,6,draw +c,2,e,6,d,7,draw +c,2,e,6,e,5,draw +c,2,e,6,e,7,draw +c,2,e,6,f,5,draw +c,2,e,6,f,6,draw +c,2,e,6,f,7,draw +c,2,e,7,d,6,draw +c,2,e,7,d,7,draw +c,2,e,7,d,8,draw +c,2,e,7,e,6,draw +c,2,e,7,e,8,draw +c,2,e,7,f,6,draw +c,2,e,7,f,7,draw +c,2,e,7,f,8,draw +c,2,e,8,d,7,draw +c,2,e,8,d,8,draw +c,2,e,8,e,7,draw +c,2,e,8,f,7,draw +c,2,e,8,f,8,draw +c,2,f,1,e,1,draw +c,2,f,1,e,2,draw +c,2,f,1,f,2,draw +c,2,f,1,g,1,draw +c,2,f,1,g,2,draw +c,2,f,2,e,1,draw +c,2,f,2,e,2,draw +c,2,f,2,e,3,draw +c,2,f,2,f,1,draw +c,2,f,2,f,3,draw +c,2,f,2,g,1,draw +c,2,f,2,g,2,draw +c,2,f,2,g,3,draw +c,2,f,3,e,2,draw +c,2,f,3,e,3,draw +c,2,f,3,e,4,draw +c,2,f,3,f,2,draw +c,2,f,3,f,4,draw +c,2,f,3,g,2,draw +c,2,f,3,g,3,draw +c,2,f,3,g,4,draw +c,2,f,4,e,3,draw +c,2,f,4,e,4,draw +c,2,f,4,e,5,draw +c,2,f,4,f,3,draw +c,2,f,4,f,5,draw +c,2,f,4,g,3,draw +c,2,f,4,g,4,draw +c,2,f,4,g,5,draw +c,2,f,5,e,4,draw +c,2,f,5,e,5,draw +c,2,f,5,e,6,draw +c,2,f,5,f,4,draw +c,2,f,5,f,6,draw +c,2,f,5,g,4,draw +c,2,f,5,g,5,draw +c,2,f,5,g,6,draw +c,2,f,6,e,5,draw +c,2,f,6,e,6,draw +c,2,f,6,e,7,draw +c,2,f,6,f,5,draw +c,2,f,6,f,7,draw +c,2,f,6,g,5,draw +c,2,f,6,g,6,draw +c,2,f,6,g,7,draw +c,2,f,7,e,6,draw +c,2,f,7,e,7,draw +c,2,f,7,e,8,draw +c,2,f,7,f,6,draw +c,2,f,7,f,8,draw +c,2,f,7,g,6,draw +c,2,f,7,g,7,draw +c,2,f,7,g,8,draw +c,2,f,8,e,7,draw +c,2,f,8,e,8,draw +c,2,f,8,f,7,draw +c,2,f,8,g,7,draw +c,2,f,8,g,8,draw +c,2,g,1,f,1,draw +c,2,g,1,f,2,draw +c,2,g,1,g,2,draw +c,2,g,1,h,1,draw +c,2,g,1,h,2,draw +c,2,g,2,f,1,draw +c,2,g,2,f,2,draw +c,2,g,2,f,3,draw +c,2,g,2,g,1,draw +c,2,g,2,g,3,draw +c,2,g,2,h,1,draw +c,2,g,2,h,2,draw +c,2,g,2,h,3,draw +c,2,g,3,f,2,draw +c,2,g,3,f,3,draw +c,2,g,3,f,4,draw +c,2,g,3,g,2,draw +c,2,g,3,g,4,draw +c,2,g,3,h,2,draw +c,2,g,3,h,3,draw +c,2,g,3,h,4,draw +c,2,g,4,f,3,draw +c,2,g,4,f,4,draw +c,2,g,4,f,5,draw +c,2,g,4,g,3,draw +c,2,g,4,g,5,draw +c,2,g,4,h,3,draw +c,2,g,4,h,4,draw +c,2,g,4,h,5,draw +c,2,g,5,f,4,draw +c,2,g,5,f,5,draw +c,2,g,5,f,6,draw +c,2,g,5,g,4,draw +c,2,g,5,g,6,draw +c,2,g,5,h,4,draw +c,2,g,5,h,5,draw +c,2,g,5,h,6,draw +c,2,g,6,f,5,draw +c,2,g,6,f,6,draw +c,2,g,6,f,7,draw +c,2,g,6,g,5,draw +c,2,g,6,g,7,draw +c,2,g,6,h,5,draw +c,2,g,6,h,6,draw +c,2,g,6,h,7,draw +c,2,g,7,f,6,draw +c,2,g,7,f,7,draw +c,2,g,7,f,8,draw +c,2,g,7,g,6,draw +c,2,g,7,g,8,draw +c,2,g,7,h,6,draw +c,2,g,7,h,7,draw +c,2,g,7,h,8,draw +c,2,g,8,f,7,draw +c,2,g,8,f,8,draw +c,2,g,8,g,7,draw +c,2,g,8,h,7,draw +c,2,g,8,h,8,draw +c,2,h,1,g,1,draw +c,2,h,1,g,2,draw +c,2,h,1,h,2,draw +c,2,h,2,g,1,draw +c,2,h,2,g,2,draw +c,2,h,2,g,3,draw +c,2,h,2,h,1,draw +c,2,h,2,h,3,draw +c,2,h,3,g,2,draw +c,2,h,3,g,3,draw +c,2,h,3,g,4,draw +c,2,h,3,h,2,draw +c,2,h,3,h,4,draw +c,2,h,4,g,3,draw +c,2,h,4,g,4,draw +c,2,h,4,g,5,draw +c,2,h,4,h,3,draw +c,2,h,4,h,5,draw +c,2,h,5,g,4,draw +c,2,h,5,g,5,draw +c,2,h,5,g,6,draw +c,2,h,5,h,4,draw +c,2,h,5,h,6,draw +c,2,h,6,g,5,draw +c,2,h,6,g,6,draw +c,2,h,6,g,7,draw +c,2,h,6,h,5,draw +c,2,h,6,h,7,draw +c,2,h,7,g,6,draw +c,2,h,7,g,7,draw +c,2,h,7,g,8,draw +c,2,h,7,h,6,draw +c,2,h,7,h,8,draw +c,2,h,8,g,7,draw +c,2,h,8,g,8,draw +c,2,h,8,h,7,draw +c,3,a,1,b,1,draw +c,3,a,2,b,1,draw +c,3,b,1,a,1,draw +c,3,b,1,c,1,draw +c,3,b,2,a,1,draw +c,3,c,1,b,1,draw +c,3,c,1,d,1,draw +c,3,d,1,c,1,draw +c,3,d,1,e,1,draw +c,3,d,1,e,2,draw +c,3,d,5,e,4,draw +c,3,e,1,d,1,draw +c,3,e,1,e,2,draw +c,3,e,1,f,1,draw +c,3,e,1,f,2,draw +c,3,e,2,d,1,draw +c,3,e,2,e,1,draw +c,3,e,2,e,3,draw +c,3,e,2,f,1,draw +c,3,e,2,f,2,draw +c,3,e,2,f,3,draw +c,3,e,3,e,2,draw +c,3,e,3,e,4,draw +c,3,e,3,f,2,draw +c,3,e,3,f,3,draw +c,3,e,3,f,4,draw +c,3,e,4,e,3,draw +c,3,e,4,e,5,draw +c,3,e,4,f,3,draw +c,3,e,4,f,4,draw +c,3,e,4,f,5,draw +c,3,e,5,e,4,draw +c,3,e,5,f,4,draw +c,3,e,5,f,5,draw +c,3,e,5,f,6,draw +c,3,e,6,f,5,draw +c,3,f,1,e,1,draw +c,3,f,1,e,2,draw +c,3,f,1,f,2,draw +c,3,f,1,g,1,draw +c,3,f,1,g,2,draw +c,3,f,2,e,1,draw +c,3,f,2,e,2,draw +c,3,f,2,e,3,draw +c,3,f,2,f,1,draw +c,3,f,2,f,3,draw +c,3,f,2,g,1,draw +c,3,f,2,g,2,draw +c,3,f,2,g,3,draw +c,3,f,3,e,2,draw +c,3,f,3,e,3,draw +c,3,f,3,e,4,draw +c,3,f,3,f,2,draw +c,3,f,3,f,4,draw +c,3,f,3,g,2,draw +c,3,f,3,g,3,draw +c,3,f,3,g,4,draw +c,3,f,4,e,3,draw +c,3,f,4,e,4,draw +c,3,f,4,e,5,draw +c,3,f,4,f,3,draw +c,3,f,4,f,5,draw +c,3,f,4,g,3,draw +c,3,f,4,g,4,draw +c,3,f,4,g,5,draw +c,3,f,5,e,4,draw +c,3,f,5,e,5,draw +c,3,f,5,f,4,draw +c,3,f,5,f,6,draw +c,3,f,5,g,4,draw +c,3,f,5,g,5,draw +c,3,f,5,g,6,draw +c,3,f,6,e,5,draw +c,3,f,6,f,5,draw +c,3,f,6,g,5,draw +c,3,f,6,g,6,draw +c,3,f,6,g,7,draw +c,3,f,7,g,6,draw +c,3,g,1,f,1,draw +c,3,g,1,f,2,draw +c,3,g,1,g,2,draw +c,3,g,1,h,1,draw +c,3,g,1,h,2,draw +c,3,g,2,f,1,draw +c,3,g,2,f,2,draw +c,3,g,2,f,3,draw +c,3,g,2,g,1,draw +c,3,g,2,g,3,draw +c,3,g,2,h,1,draw +c,3,g,2,h,2,draw +c,3,g,2,h,3,draw +c,3,g,3,f,2,draw +c,3,g,3,f,3,draw +c,3,g,3,f,4,draw +c,3,g,3,g,2,draw +c,3,g,3,g,4,draw +c,3,g,3,h,2,draw +c,3,g,3,h,3,draw +c,3,g,3,h,4,draw +c,3,g,4,f,3,draw +c,3,g,4,f,4,draw +c,3,g,4,f,5,draw +c,3,g,4,g,3,draw +c,3,g,4,g,5,draw +c,3,g,4,h,3,draw +c,3,g,4,h,4,draw +c,3,g,4,h,5,draw +c,3,g,5,f,4,draw +c,3,g,5,f,5,draw +c,3,g,5,f,6,draw +c,3,g,5,g,4,draw +c,3,g,5,g,6,draw +c,3,g,5,h,4,draw +c,3,g,5,h,5,draw +c,3,g,5,h,6,draw +c,3,g,6,f,5,draw +c,3,g,6,f,6,draw +c,3,g,6,g,5,draw +c,3,g,6,g,7,draw +c,3,g,6,h,5,draw +c,3,g,6,h,6,draw +c,3,g,6,h,7,draw +c,3,g,7,f,6,draw +c,3,g,7,g,6,draw +c,3,g,7,h,6,draw +c,3,g,7,h,7,draw +c,3,g,7,h,8,draw +c,3,g,8,h,7,draw +c,3,h,1,g,1,draw +c,3,h,1,g,2,draw +c,3,h,1,h,2,draw +c,3,h,2,g,1,draw +c,3,h,2,g,2,draw +c,3,h,2,g,3,draw +c,3,h,2,h,1,draw +c,3,h,2,h,3,draw +c,3,h,3,g,2,draw +c,3,h,3,g,3,draw +c,3,h,3,g,4,draw +c,3,h,3,h,2,draw +c,3,h,3,h,4,draw +c,3,h,4,g,3,draw +c,3,h,4,g,4,draw +c,3,h,4,g,5,draw +c,3,h,4,h,3,draw +c,3,h,4,h,5,draw +c,3,h,5,g,4,draw +c,3,h,5,g,5,draw +c,3,h,5,g,6,draw +c,3,h,5,h,4,draw +c,3,h,5,h,6,draw +c,3,h,6,g,5,draw +c,3,h,6,g,6,draw +c,3,h,6,g,7,draw +c,3,h,6,h,5,draw +c,3,h,6,h,7,draw +c,3,h,7,g,6,draw +c,3,h,7,g,7,draw +c,3,h,7,h,6,draw +c,3,h,7,h,8,draw +c,3,h,8,g,7,draw +c,3,h,8,h,7,draw +d,1,a,1,a,2,draw +d,1,a,1,b,1,draw +d,1,a,1,b,2,draw +d,1,a,2,a,1,draw +d,1,a,2,a,3,draw +d,1,a,2,b,1,draw +d,1,a,2,b,2,draw +d,1,a,2,b,3,draw +d,1,a,3,a,2,draw +d,1,a,3,a,4,draw +d,1,a,3,b,2,draw +d,1,a,3,b,3,draw +d,1,a,3,b,4,draw +d,1,a,4,a,3,draw +d,1,a,4,a,5,draw +d,1,a,4,b,3,draw +d,1,a,4,b,4,draw +d,1,a,4,b,5,draw +d,1,a,5,a,4,draw +d,1,a,5,a,6,draw +d,1,a,5,b,4,draw +d,1,a,5,b,5,draw +d,1,a,5,b,6,draw +d,1,a,6,a,5,draw +d,1,a,6,a,7,draw +d,1,a,6,b,5,draw +d,1,a,6,b,6,draw +d,1,a,6,b,7,draw +d,1,a,7,a,6,draw +d,1,a,7,a,8,draw +d,1,a,7,b,6,draw +d,1,a,7,b,7,draw +d,1,a,7,b,8,draw +d,1,a,8,a,7,draw +d,1,a,8,b,7,draw +d,1,a,8,b,8,draw +d,1,b,1,a,1,draw +d,1,b,1,a,2,draw +d,1,b,1,b,2,draw +d,1,b,2,a,1,draw +d,1,b,2,a,2,draw +d,1,b,2,a,3,draw +d,1,b,2,b,1,draw +d,1,b,2,b,3,draw +d,1,b,2,c,3,draw +d,1,b,3,a,2,draw +d,1,b,3,a,3,draw +d,1,b,3,a,4,draw +d,1,b,3,b,2,draw +d,1,b,3,b,4,draw +d,1,b,3,c,3,draw +d,1,b,3,c,4,draw +d,1,b,4,a,3,draw +d,1,b,4,a,4,draw +d,1,b,4,a,5,draw +d,1,b,4,b,3,draw +d,1,b,4,b,5,draw +d,1,b,4,c,3,draw +d,1,b,4,c,4,draw +d,1,b,4,c,5,draw +d,1,b,5,a,4,draw +d,1,b,5,a,5,draw +d,1,b,5,a,6,draw +d,1,b,5,b,4,draw +d,1,b,5,b,6,draw +d,1,b,5,c,4,draw +d,1,b,5,c,5,draw +d,1,b,5,c,6,draw +d,1,b,6,a,5,draw +d,1,b,6,a,6,draw +d,1,b,6,a,7,draw +d,1,b,6,b,5,draw +d,1,b,6,b,7,draw +d,1,b,6,c,5,draw +d,1,b,6,c,6,draw +d,1,b,6,c,7,draw +d,1,b,7,a,6,draw +d,1,b,7,a,7,draw +d,1,b,7,a,8,draw +d,1,b,7,b,6,draw +d,1,b,7,b,8,draw +d,1,b,7,c,6,draw +d,1,b,7,c,7,draw +d,1,b,7,c,8,draw +d,1,b,8,a,7,draw +d,1,b,8,a,8,draw +d,1,b,8,b,7,draw +d,1,b,8,c,7,draw +d,1,b,8,c,8,draw +d,1,c,3,b,2,draw +d,1,c,3,b,3,draw +d,1,c,3,b,4,draw +d,1,c,3,c,4,draw +d,1,c,3,d,3,draw +d,1,c,3,d,4,draw +d,1,c,4,b,3,draw +d,1,c,4,b,4,draw +d,1,c,4,b,5,draw +d,1,c,4,c,3,draw +d,1,c,4,c,5,draw +d,1,c,4,d,3,draw +d,1,c,4,d,4,draw +d,1,c,4,d,5,draw +d,1,c,5,b,4,draw +d,1,c,5,b,5,draw +d,1,c,5,b,6,draw +d,1,c,5,c,4,draw +d,1,c,5,c,6,draw +d,1,c,5,d,4,draw +d,1,c,5,d,5,draw +d,1,c,5,d,6,draw +d,1,c,6,b,5,draw +d,1,c,6,b,6,draw +d,1,c,6,b,7,draw +d,1,c,6,c,5,draw +d,1,c,6,c,7,draw +d,1,c,6,d,5,draw +d,1,c,6,d,6,draw +d,1,c,6,d,7,draw +d,1,c,7,b,6,draw +d,1,c,7,b,7,draw +d,1,c,7,b,8,draw +d,1,c,7,c,6,draw +d,1,c,7,c,8,draw +d,1,c,7,d,6,draw +d,1,c,7,d,7,draw +d,1,c,7,d,8,draw +d,1,c,8,b,7,draw +d,1,c,8,b,8,draw +d,1,c,8,c,7,draw +d,1,c,8,d,7,draw +d,1,c,8,d,8,draw +d,1,d,3,c,3,draw +d,1,d,3,c,4,draw +d,1,d,3,d,4,draw +d,1,d,3,e,3,draw +d,1,d,3,e,4,draw +d,1,d,4,c,3,draw +d,1,d,4,c,4,draw +d,1,d,4,c,5,draw +d,1,d,4,d,3,draw +d,1,d,4,d,5,draw +d,1,d,4,e,3,draw +d,1,d,4,e,4,draw +d,1,d,4,e,5,draw +d,1,d,5,c,4,draw +d,1,d,5,c,5,draw +d,1,d,5,c,6,draw +d,1,d,5,d,4,draw +d,1,d,5,d,6,draw +d,1,d,5,e,4,draw +d,1,d,5,e,5,draw +d,1,d,5,e,6,draw +d,1,d,6,c,5,draw +d,1,d,6,c,6,draw +d,1,d,6,c,7,draw +d,1,d,6,d,5,draw +d,1,d,6,d,7,draw +d,1,d,6,e,5,draw +d,1,d,6,e,6,draw +d,1,d,6,e,7,draw +d,1,d,7,c,6,draw +d,1,d,7,c,7,draw +d,1,d,7,c,8,draw +d,1,d,7,d,6,draw +d,1,d,7,d,8,draw +d,1,d,7,e,6,draw +d,1,d,7,e,7,draw +d,1,d,7,e,8,draw +d,1,d,8,c,7,draw +d,1,d,8,c,8,draw +d,1,d,8,d,7,draw +d,1,d,8,e,7,draw +d,1,d,8,e,8,draw +d,1,e,3,d,3,draw +d,1,e,3,d,4,draw +d,1,e,3,e,4,draw +d,1,e,3,f,2,draw +d,1,e,3,f,3,draw +d,1,e,3,f,4,draw +d,1,e,4,d,3,draw +d,1,e,4,d,4,draw +d,1,e,4,d,5,draw +d,1,e,4,e,3,draw +d,1,e,4,e,5,draw +d,1,e,4,f,3,draw +d,1,e,4,f,4,draw +d,1,e,4,f,5,draw +d,1,e,5,d,4,draw +d,1,e,5,d,5,draw +d,1,e,5,d,6,draw +d,1,e,5,e,4,draw +d,1,e,5,e,6,draw +d,1,e,5,f,4,draw +d,1,e,5,f,5,draw +d,1,e,5,f,6,draw +d,1,e,6,d,5,draw +d,1,e,6,d,6,draw +d,1,e,6,d,7,draw +d,1,e,6,e,5,draw +d,1,e,6,e,7,draw +d,1,e,6,f,5,draw +d,1,e,6,f,6,draw +d,1,e,6,f,7,draw +d,1,e,7,d,6,draw +d,1,e,7,d,7,draw +d,1,e,7,d,8,draw +d,1,e,7,e,6,draw +d,1,e,7,e,8,draw +d,1,e,7,f,6,draw +d,1,e,7,f,7,draw +d,1,e,7,f,8,draw +d,1,e,8,d,7,draw +d,1,e,8,d,8,draw +d,1,e,8,e,7,draw +d,1,e,8,f,7,draw +d,1,e,8,f,8,draw +d,1,f,1,f,2,draw +d,1,f,1,g,1,draw +d,1,f,1,g,2,draw +d,1,f,2,e,3,draw +d,1,f,2,f,1,draw +d,1,f,2,f,3,draw +d,1,f,2,g,1,draw +d,1,f,2,g,2,draw +d,1,f,2,g,3,draw +d,1,f,3,e,3,draw +d,1,f,3,e,4,draw +d,1,f,3,f,2,draw +d,1,f,3,f,4,draw +d,1,f,3,g,2,draw +d,1,f,3,g,3,draw +d,1,f,3,g,4,draw +d,1,f,4,e,3,draw +d,1,f,4,e,4,draw +d,1,f,4,e,5,draw +d,1,f,4,f,3,draw +d,1,f,4,f,5,draw +d,1,f,4,g,3,draw +d,1,f,4,g,4,draw +d,1,f,4,g,5,draw +d,1,f,5,e,4,draw +d,1,f,5,e,5,draw +d,1,f,5,e,6,draw +d,1,f,5,f,4,draw +d,1,f,5,f,6,draw +d,1,f,5,g,4,draw +d,1,f,5,g,5,draw +d,1,f,5,g,6,draw +d,1,f,6,e,5,draw +d,1,f,6,e,6,draw +d,1,f,6,e,7,draw +d,1,f,6,f,5,draw +d,1,f,6,f,7,draw +d,1,f,6,g,5,draw +d,1,f,6,g,6,draw +d,1,f,6,g,7,draw +d,1,f,7,e,6,draw +d,1,f,7,e,7,draw +d,1,f,7,e,8,draw +d,1,f,7,f,6,draw +d,1,f,7,f,8,draw +d,1,f,7,g,6,draw +d,1,f,7,g,7,draw +d,1,f,7,g,8,draw +d,1,f,8,e,7,draw +d,1,f,8,e,8,draw +d,1,f,8,f,7,draw +d,1,f,8,g,7,draw +d,1,f,8,g,8,draw +d,1,g,1,f,1,draw +d,1,g,1,f,2,draw +d,1,g,1,g,2,draw +d,1,g,1,h,1,draw +d,1,g,1,h,2,draw +d,1,g,2,f,1,draw +d,1,g,2,f,2,draw +d,1,g,2,f,3,draw +d,1,g,2,g,1,draw +d,1,g,2,g,3,draw +d,1,g,2,h,1,draw +d,1,g,2,h,2,draw +d,1,g,2,h,3,draw +d,1,g,3,f,2,draw +d,1,g,3,f,3,draw +d,1,g,3,f,4,draw +d,1,g,3,g,2,draw +d,1,g,3,g,4,draw +d,1,g,3,h,2,draw +d,1,g,3,h,3,draw +d,1,g,3,h,4,draw +d,1,g,4,f,3,draw +d,1,g,4,f,4,draw +d,1,g,4,f,5,draw +d,1,g,4,g,3,draw +d,1,g,4,g,5,draw +d,1,g,4,h,3,draw +d,1,g,4,h,4,draw +d,1,g,4,h,5,draw +d,1,g,5,f,4,draw +d,1,g,5,f,5,draw +d,1,g,5,f,6,draw +d,1,g,5,g,4,draw +d,1,g,5,g,6,draw +d,1,g,5,h,4,draw +d,1,g,5,h,5,draw +d,1,g,5,h,6,draw +d,1,g,6,f,5,draw +d,1,g,6,f,6,draw +d,1,g,6,f,7,draw +d,1,g,6,g,5,draw +d,1,g,6,g,7,draw +d,1,g,6,h,5,draw +d,1,g,6,h,6,draw +d,1,g,6,h,7,draw +d,1,g,7,f,6,draw +d,1,g,7,f,7,draw +d,1,g,7,f,8,draw +d,1,g,7,g,6,draw +d,1,g,7,g,8,draw +d,1,g,7,h,6,draw +d,1,g,7,h,7,draw +d,1,g,7,h,8,draw +d,1,g,8,f,7,draw +d,1,g,8,f,8,draw +d,1,g,8,g,7,draw +d,1,g,8,h,7,draw +d,1,g,8,h,8,draw +d,1,h,1,g,1,draw +d,1,h,1,g,2,draw +d,1,h,1,h,2,draw +d,1,h,2,g,1,draw +d,1,h,2,g,2,draw +d,1,h,2,g,3,draw +d,1,h,2,h,1,draw +d,1,h,2,h,3,draw +d,1,h,3,g,2,draw +d,1,h,3,g,3,draw +d,1,h,3,g,4,draw +d,1,h,3,h,2,draw +d,1,h,3,h,4,draw +d,1,h,4,g,3,draw +d,1,h,4,g,4,draw +d,1,h,4,g,5,draw +d,1,h,4,h,3,draw +d,1,h,4,h,5,draw +d,1,h,5,g,4,draw +d,1,h,5,g,5,draw +d,1,h,5,g,6,draw +d,1,h,5,h,4,draw +d,1,h,5,h,6,draw +d,1,h,6,g,5,draw +d,1,h,6,g,6,draw +d,1,h,6,g,7,draw +d,1,h,6,h,5,draw +d,1,h,6,h,7,draw +d,1,h,7,g,6,draw +d,1,h,7,g,7,draw +d,1,h,7,g,8,draw +d,1,h,7,h,6,draw +d,1,h,7,h,8,draw +d,1,h,8,g,7,draw +d,1,h,8,g,8,draw +d,1,h,8,h,7,draw +d,2,a,1,a,2,draw +d,2,a,1,b,1,draw +d,2,a,1,b,2,draw +d,2,a,2,a,1,draw +d,2,a,2,a,3,draw +d,2,a,2,b,1,draw +d,2,a,2,b,2,draw +d,2,a,2,b,3,draw +d,2,a,3,a,2,draw +d,2,a,3,a,4,draw +d,2,a,3,b,2,draw +d,2,a,3,b,3,draw +d,2,a,3,b,4,draw +d,2,a,4,a,3,draw +d,2,a,4,a,5,draw +d,2,a,4,b,3,draw +d,2,a,4,b,4,draw +d,2,a,4,b,5,draw +d,2,a,5,a,4,draw +d,2,a,5,a,6,draw +d,2,a,5,b,4,draw +d,2,a,5,b,5,draw +d,2,a,5,b,6,draw +d,2,a,6,a,5,draw +d,2,a,6,a,7,draw +d,2,a,6,b,5,draw +d,2,a,6,b,6,draw +d,2,a,6,b,7,draw +d,2,a,7,a,6,draw +d,2,a,7,a,8,draw +d,2,a,7,b,6,draw +d,2,a,7,b,7,draw +d,2,a,7,b,8,draw +d,2,a,8,a,7,draw +d,2,a,8,b,7,draw +d,2,a,8,b,8,draw +d,2,b,1,a,1,draw +d,2,b,1,a,2,draw +d,2,b,1,b,2,draw +d,2,b,2,a,1,draw +d,2,b,2,a,2,draw +d,2,b,2,a,3,draw +d,2,b,2,b,1,draw +d,2,b,2,b,3,draw +d,2,b,3,a,2,draw +d,2,b,3,a,3,draw +d,2,b,3,a,4,draw +d,2,b,3,b,2,draw +d,2,b,3,b,4,draw +d,2,b,3,c,4,draw +d,2,b,4,a,3,draw +d,2,b,4,a,4,draw +d,2,b,4,a,5,draw +d,2,b,4,b,3,draw +d,2,b,4,b,5,draw +d,2,b,4,c,4,draw +d,2,b,4,c,5,draw +d,2,b,5,a,4,draw +d,2,b,5,a,5,draw +d,2,b,5,a,6,draw +d,2,b,5,b,4,draw +d,2,b,5,b,6,draw +d,2,b,5,c,4,draw +d,2,b,5,c,5,draw +d,2,b,5,c,6,draw +d,2,b,6,a,5,draw +d,2,b,6,a,6,draw +d,2,b,6,a,7,draw +d,2,b,6,b,5,draw +d,2,b,6,b,7,draw +d,2,b,6,c,5,draw +d,2,b,6,c,6,draw +d,2,b,6,c,7,draw +d,2,b,7,a,6,draw +d,2,b,7,a,7,draw +d,2,b,7,a,8,draw +d,2,b,7,b,6,draw +d,2,b,7,b,8,draw +d,2,b,7,c,6,draw +d,2,b,7,c,7,draw +d,2,b,7,c,8,draw +d,2,b,8,a,7,draw +d,2,b,8,a,8,draw +d,2,b,8,b,7,draw +d,2,b,8,c,7,draw +d,2,b,8,c,8,draw +d,2,c,4,b,3,draw +d,2,c,4,b,4,draw +d,2,c,4,b,5,draw +d,2,c,4,c,5,draw +d,2,c,4,d,4,draw +d,2,c,4,d,5,draw +d,2,c,5,b,4,draw +d,2,c,5,b,5,draw +d,2,c,5,b,6,draw +d,2,c,5,c,4,draw +d,2,c,5,c,6,draw +d,2,c,5,d,4,draw +d,2,c,5,d,5,draw +d,2,c,5,d,6,draw +d,2,c,6,b,5,draw +d,2,c,6,b,6,draw +d,2,c,6,b,7,draw +d,2,c,6,c,5,draw +d,2,c,6,c,7,draw +d,2,c,6,d,5,draw +d,2,c,6,d,6,draw +d,2,c,6,d,7,draw +d,2,c,7,b,6,draw +d,2,c,7,b,7,draw +d,2,c,7,b,8,draw +d,2,c,7,c,6,draw +d,2,c,7,c,8,draw +d,2,c,7,d,6,draw +d,2,c,7,d,7,draw +d,2,c,7,d,8,draw +d,2,c,8,b,7,draw +d,2,c,8,b,8,draw +d,2,c,8,c,7,draw +d,2,c,8,d,7,draw +d,2,c,8,d,8,draw +d,2,d,4,c,4,draw +d,2,d,4,c,5,draw +d,2,d,4,d,5,draw +d,2,d,4,e,4,draw +d,2,d,4,e,5,draw +d,2,d,5,c,4,draw +d,2,d,5,c,5,draw +d,2,d,5,c,6,draw +d,2,d,5,d,4,draw +d,2,d,5,d,6,draw +d,2,d,5,e,4,draw +d,2,d,5,e,5,draw +d,2,d,5,e,6,draw +d,2,d,6,c,5,draw +d,2,d,6,c,6,draw +d,2,d,6,c,7,draw +d,2,d,6,d,5,draw +d,2,d,6,d,7,draw +d,2,d,6,e,5,draw +d,2,d,6,e,6,draw +d,2,d,6,e,7,draw +d,2,d,7,c,6,draw +d,2,d,7,c,7,draw +d,2,d,7,c,8,draw +d,2,d,7,d,6,draw +d,2,d,7,d,8,draw +d,2,d,7,e,6,draw +d,2,d,7,e,7,draw +d,2,d,7,e,8,draw +d,2,d,8,c,7,draw +d,2,d,8,c,8,draw +d,2,d,8,d,7,draw +d,2,d,8,e,7,draw +d,2,d,8,e,8,draw +d,2,e,4,d,4,draw +d,2,e,4,d,5,draw +d,2,e,4,e,5,draw +d,2,e,4,f,3,draw +d,2,e,4,f,4,draw +d,2,e,4,f,5,draw +d,2,e,5,d,4,draw +d,2,e,5,d,5,draw +d,2,e,5,d,6,draw +d,2,e,5,e,4,draw +d,2,e,5,e,6,draw +d,2,e,5,f,4,draw +d,2,e,5,f,5,draw +d,2,e,5,f,6,draw +d,2,e,6,d,5,draw +d,2,e,6,d,6,draw +d,2,e,6,d,7,draw +d,2,e,6,e,5,draw +d,2,e,6,e,7,draw +d,2,e,6,f,5,draw +d,2,e,6,f,6,draw +d,2,e,6,f,7,draw +d,2,e,7,d,6,draw +d,2,e,7,d,7,draw +d,2,e,7,d,8,draw +d,2,e,7,e,6,draw +d,2,e,7,e,8,draw +d,2,e,7,f,6,draw +d,2,e,7,f,7,draw +d,2,e,7,f,8,draw +d,2,e,8,d,7,draw +d,2,e,8,d,8,draw +d,2,e,8,e,7,draw +d,2,e,8,f,7,draw +d,2,e,8,f,8,draw +d,2,f,1,f,2,draw +d,2,f,1,g,1,draw +d,2,f,1,g,2,draw +d,2,f,2,f,1,draw +d,2,f,2,f,3,draw +d,2,f,2,g,1,draw +d,2,f,2,g,2,draw +d,2,f,2,g,3,draw +d,2,f,3,e,4,draw +d,2,f,3,f,2,draw +d,2,f,3,f,4,draw +d,2,f,3,g,2,draw +d,2,f,3,g,3,draw +d,2,f,3,g,4,draw +d,2,f,4,e,4,draw +d,2,f,4,e,5,draw +d,2,f,4,f,3,draw +d,2,f,4,f,5,draw +d,2,f,4,g,3,draw +d,2,f,4,g,4,draw +d,2,f,4,g,5,draw +d,2,f,5,e,4,draw +d,2,f,5,e,5,draw +d,2,f,5,e,6,draw +d,2,f,5,f,4,draw +d,2,f,5,f,6,draw +d,2,f,5,g,4,draw +d,2,f,5,g,5,draw +d,2,f,5,g,6,draw +d,2,f,6,e,5,draw +d,2,f,6,e,6,draw +d,2,f,6,e,7,draw +d,2,f,6,f,5,draw +d,2,f,6,f,7,draw +d,2,f,6,g,5,draw +d,2,f,6,g,6,draw +d,2,f,6,g,7,draw +d,2,f,7,e,6,draw +d,2,f,7,e,7,draw +d,2,f,7,e,8,draw +d,2,f,7,f,6,draw +d,2,f,7,f,8,draw +d,2,f,7,g,6,draw +d,2,f,7,g,7,draw +d,2,f,7,g,8,draw +d,2,f,8,e,7,draw +d,2,f,8,e,8,draw +d,2,f,8,f,7,draw +d,2,f,8,g,7,draw +d,2,f,8,g,8,draw +d,2,g,1,f,1,draw +d,2,g,1,f,2,draw +d,2,g,1,g,2,draw +d,2,g,1,h,1,draw +d,2,g,1,h,2,draw +d,2,g,2,f,1,draw +d,2,g,2,f,2,draw +d,2,g,2,f,3,draw +d,2,g,2,g,1,draw +d,2,g,2,g,3,draw +d,2,g,2,h,1,draw +d,2,g,2,h,2,draw +d,2,g,2,h,3,draw +d,2,g,3,f,2,draw +d,2,g,3,f,3,draw +d,2,g,3,f,4,draw +d,2,g,3,g,2,draw +d,2,g,3,g,4,draw +d,2,g,3,h,2,draw +d,2,g,3,h,3,draw +d,2,g,3,h,4,draw +d,2,g,4,f,3,draw +d,2,g,4,f,4,draw +d,2,g,4,f,5,draw +d,2,g,4,g,3,draw +d,2,g,4,g,5,draw +d,2,g,4,h,3,draw +d,2,g,4,h,4,draw +d,2,g,4,h,5,draw +d,2,g,5,f,4,draw +d,2,g,5,f,5,draw +d,2,g,5,f,6,draw +d,2,g,5,g,4,draw +d,2,g,5,g,6,draw +d,2,g,5,h,4,draw +d,2,g,5,h,5,draw +d,2,g,5,h,6,draw +d,2,g,6,f,5,draw +d,2,g,6,f,6,draw +d,2,g,6,f,7,draw +d,2,g,6,g,5,draw +d,2,g,6,g,7,draw +d,2,g,6,h,5,draw +d,2,g,6,h,6,draw +d,2,g,6,h,7,draw +d,2,g,7,f,6,draw +d,2,g,7,f,7,draw +d,2,g,7,f,8,draw +d,2,g,7,g,6,draw +d,2,g,7,g,8,draw +d,2,g,7,h,6,draw +d,2,g,7,h,7,draw +d,2,g,7,h,8,draw +d,2,g,8,f,7,draw +d,2,g,8,f,8,draw +d,2,g,8,g,7,draw +d,2,g,8,h,7,draw +d,2,g,8,h,8,draw +d,2,h,1,g,1,draw +d,2,h,1,g,2,draw +d,2,h,1,h,2,draw +d,2,h,2,g,1,draw +d,2,h,2,g,2,draw +d,2,h,2,g,3,draw +d,2,h,2,h,1,draw +d,2,h,2,h,3,draw +d,2,h,3,g,2,draw +d,2,h,3,g,3,draw +d,2,h,3,g,4,draw +d,2,h,3,h,2,draw +d,2,h,3,h,4,draw +d,2,h,4,g,3,draw +d,2,h,4,g,4,draw +d,2,h,4,g,5,draw +d,2,h,4,h,3,draw +d,2,h,4,h,5,draw +d,2,h,5,g,4,draw +d,2,h,5,g,5,draw +d,2,h,5,g,6,draw +d,2,h,5,h,4,draw +d,2,h,5,h,6,draw +d,2,h,6,g,5,draw +d,2,h,6,g,6,draw +d,2,h,6,g,7,draw +d,2,h,6,h,5,draw +d,2,h,6,h,7,draw +d,2,h,7,g,6,draw +d,2,h,7,g,7,draw +d,2,h,7,g,8,draw +d,2,h,7,h,6,draw +d,2,h,7,h,8,draw +d,2,h,8,g,7,draw +d,2,h,8,g,8,draw +d,2,h,8,h,7,draw +d,3,a,1,a,2,draw +d,3,a,1,b,1,draw +d,3,a,1,b,2,draw +d,3,a,2,a,1,draw +d,3,a,2,a,3,draw +d,3,a,2,b,1,draw +d,3,a,2,b,2,draw +d,3,a,2,b,3,draw +d,3,a,3,a,2,draw +d,3,a,3,a,4,draw +d,3,a,3,b,2,draw +d,3,a,3,b,3,draw +d,3,a,3,b,4,draw +d,3,a,4,a,3,draw +d,3,a,4,a,5,draw +d,3,a,4,b,3,draw +d,3,a,4,b,4,draw +d,3,a,4,b,5,draw +d,3,a,5,a,4,draw +d,3,a,5,a,6,draw +d,3,a,5,b,4,draw +d,3,a,5,b,5,draw +d,3,a,5,b,6,draw +d,3,a,6,a,5,draw +d,3,a,6,a,7,draw +d,3,a,6,b,5,draw +d,3,a,6,b,6,draw +d,3,a,6,b,7,draw +d,3,a,7,a,6,draw +d,3,a,7,a,8,draw +d,3,a,7,b,6,draw +d,3,a,7,b,7,draw +d,3,a,7,b,8,draw +d,3,a,8,a,7,draw +d,3,a,8,b,7,draw +d,3,a,8,b,8,draw +d,3,b,1,a,1,draw +d,3,b,1,a,2,draw +d,3,b,1,b,2,draw +d,3,b,1,c,1,draw +d,3,b,2,a,1,draw +d,3,b,2,a,2,draw +d,3,b,2,a,3,draw +d,3,b,2,b,1,draw +d,3,b,2,b,3,draw +d,3,b,2,c,1,draw +d,3,b,3,a,2,draw +d,3,b,3,a,3,draw +d,3,b,3,a,4,draw +d,3,b,3,b,2,draw +d,3,b,3,b,4,draw +d,3,b,4,a,3,draw +d,3,b,4,a,4,draw +d,3,b,4,a,5,draw +d,3,b,4,b,3,draw +d,3,b,4,b,5,draw +d,3,b,4,c,5,draw +d,3,b,5,a,4,draw +d,3,b,5,a,5,draw +d,3,b,5,a,6,draw +d,3,b,5,b,4,draw +d,3,b,5,b,6,draw +d,3,b,5,c,5,draw +d,3,b,5,c,6,draw +d,3,b,6,a,5,draw +d,3,b,6,a,6,draw +d,3,b,6,a,7,draw +d,3,b,6,b,5,draw +d,3,b,6,b,7,draw +d,3,b,6,c,5,draw +d,3,b,6,c,6,draw +d,3,b,6,c,7,draw +d,3,b,7,a,6,draw +d,3,b,7,a,7,draw +d,3,b,7,a,8,draw +d,3,b,7,b,6,draw +d,3,b,7,b,8,draw +d,3,b,7,c,6,draw +d,3,b,7,c,7,draw +d,3,b,7,c,8,draw +d,3,b,8,a,7,draw +d,3,b,8,a,8,draw +d,3,b,8,b,7,draw +d,3,b,8,c,7,draw +d,3,b,8,c,8,draw +d,3,c,1,b,1,draw +d,3,c,1,b,2,draw +d,3,c,1,d,1,draw +d,3,c,5,b,4,draw +d,3,c,5,b,5,draw +d,3,c,5,b,6,draw +d,3,c,5,c,6,draw +d,3,c,5,d,5,draw +d,3,c,5,d,6,draw +d,3,c,6,b,5,draw +d,3,c,6,b,6,draw +d,3,c,6,b,7,draw +d,3,c,6,c,5,draw +d,3,c,6,c,7,draw +d,3,c,6,d,5,draw +d,3,c,6,d,6,draw +d,3,c,6,d,7,draw +d,3,c,7,b,6,draw +d,3,c,7,b,7,draw +d,3,c,7,b,8,draw +d,3,c,7,c,6,draw +d,3,c,7,c,8,draw +d,3,c,7,d,6,draw +d,3,c,7,d,7,draw +d,3,c,7,d,8,draw +d,3,c,8,b,7,draw +d,3,c,8,b,8,draw +d,3,c,8,c,7,draw +d,3,c,8,d,7,draw +d,3,c,8,d,8,draw +d,3,d,1,c,1,draw +d,3,d,1,e,1,draw +d,3,d,5,c,5,draw +d,3,d,5,c,6,draw +d,3,d,5,d,6,draw +d,3,d,5,e,5,draw +d,3,d,5,e,6,draw +d,3,d,6,c,5,draw +d,3,d,6,c,6,draw +d,3,d,6,c,7,draw +d,3,d,6,d,5,draw +d,3,d,6,d,7,draw +d,3,d,6,e,5,draw +d,3,d,6,e,6,draw +d,3,d,6,e,7,draw +d,3,d,7,c,6,draw +d,3,d,7,c,7,draw +d,3,d,7,c,8,draw +d,3,d,7,d,6,draw +d,3,d,7,d,8,draw +d,3,d,7,e,6,draw +d,3,d,7,e,7,draw +d,3,d,7,e,8,draw +d,3,d,8,c,7,draw +d,3,d,8,c,8,draw +d,3,d,8,d,7,draw +d,3,d,8,e,7,draw +d,3,d,8,e,8,draw +d,3,e,1,d,1,draw +d,3,e,1,f,1,draw +d,3,e,1,f,2,draw +d,3,e,5,d,5,draw +d,3,e,5,d,6,draw +d,3,e,5,e,6,draw +d,3,e,5,f,4,draw +d,3,e,5,f,5,draw +d,3,e,5,f,6,draw +d,3,e,6,d,5,draw +d,3,e,6,d,6,draw +d,3,e,6,d,7,draw +d,3,e,6,e,5,draw +d,3,e,6,e,7,draw +d,3,e,6,f,5,draw +d,3,e,6,f,6,draw +d,3,e,6,f,7,draw +d,3,e,7,d,6,draw +d,3,e,7,d,7,draw +d,3,e,7,d,8,draw +d,3,e,7,e,6,draw +d,3,e,7,e,8,draw +d,3,e,7,f,6,draw +d,3,e,7,f,7,draw +d,3,e,7,f,8,draw +d,3,e,8,d,7,draw +d,3,e,8,d,8,draw +d,3,e,8,e,7,draw +d,3,e,8,f,7,draw +d,3,e,8,f,8,draw +d,3,f,1,e,1,draw +d,3,f,1,f,2,draw +d,3,f,1,g,1,draw +d,3,f,1,g,2,draw +d,3,f,2,e,1,draw +d,3,f,2,f,1,draw +d,3,f,2,f,3,draw +d,3,f,2,g,1,draw +d,3,f,2,g,2,draw +d,3,f,2,g,3,draw +d,3,f,3,f,2,draw +d,3,f,3,f,4,draw +d,3,f,3,g,2,draw +d,3,f,3,g,3,draw +d,3,f,3,g,4,draw +d,3,f,4,e,5,draw +d,3,f,4,f,3,draw +d,3,f,4,f,5,draw +d,3,f,4,g,3,draw +d,3,f,4,g,4,draw +d,3,f,4,g,5,draw +d,3,f,5,e,5,draw +d,3,f,5,e,6,draw +d,3,f,5,f,4,draw +d,3,f,5,f,6,draw +d,3,f,5,g,4,draw +d,3,f,5,g,5,draw +d,3,f,5,g,6,draw +d,3,f,6,e,5,draw +d,3,f,6,e,6,draw +d,3,f,6,e,7,draw +d,3,f,6,f,5,draw +d,3,f,6,f,7,draw +d,3,f,6,g,5,draw +d,3,f,6,g,6,draw +d,3,f,6,g,7,draw +d,3,f,7,e,6,draw +d,3,f,7,e,7,draw +d,3,f,7,e,8,draw +d,3,f,7,f,6,draw +d,3,f,7,f,8,draw +d,3,f,7,g,6,draw +d,3,f,7,g,7,draw +d,3,f,7,g,8,draw +d,3,f,8,e,7,draw +d,3,f,8,e,8,draw +d,3,f,8,f,7,draw +d,3,f,8,g,7,draw +d,3,f,8,g,8,draw +d,3,g,1,f,1,draw +d,3,g,1,f,2,draw +d,3,g,1,g,2,draw +d,3,g,1,h,1,draw +d,3,g,1,h,2,draw +d,3,g,2,f,1,draw +d,3,g,2,f,2,draw +d,3,g,2,f,3,draw +d,3,g,2,g,1,draw +d,3,g,2,g,3,draw +d,3,g,2,h,1,draw +d,3,g,2,h,2,draw +d,3,g,2,h,3,draw +d,3,g,3,f,2,draw +d,3,g,3,f,3,draw +d,3,g,3,f,4,draw +d,3,g,3,g,2,draw +d,3,g,3,g,4,draw +d,3,g,3,h,2,draw +d,3,g,3,h,3,draw +d,3,g,3,h,4,draw +d,3,g,4,f,3,draw +d,3,g,4,f,4,draw +d,3,g,4,f,5,draw +d,3,g,4,g,3,draw +d,3,g,4,g,5,draw +d,3,g,4,h,3,draw +d,3,g,4,h,4,draw +d,3,g,4,h,5,draw +d,3,g,5,f,4,draw +d,3,g,5,f,5,draw +d,3,g,5,f,6,draw +d,3,g,5,g,4,draw +d,3,g,5,g,6,draw +d,3,g,5,h,4,draw +d,3,g,5,h,5,draw +d,3,g,5,h,6,draw +d,3,g,6,f,5,draw +d,3,g,6,f,6,draw +d,3,g,6,f,7,draw +d,3,g,6,g,5,draw +d,3,g,6,g,7,draw +d,3,g,6,h,5,draw +d,3,g,6,h,6,draw +d,3,g,6,h,7,draw +d,3,g,7,f,6,draw +d,3,g,7,f,7,draw +d,3,g,7,f,8,draw +d,3,g,7,g,6,draw +d,3,g,7,g,8,draw +d,3,g,7,h,6,draw +d,3,g,7,h,7,draw +d,3,g,7,h,8,draw +d,3,g,8,f,7,draw +d,3,g,8,f,8,draw +d,3,g,8,g,7,draw +d,3,g,8,h,7,draw +d,3,g,8,h,8,draw +d,3,h,1,g,1,draw +d,3,h,1,g,2,draw +d,3,h,1,h,2,draw +d,3,h,2,g,1,draw +d,3,h,2,g,2,draw +d,3,h,2,g,3,draw +d,3,h,2,h,1,draw +d,3,h,2,h,3,draw +d,3,h,3,g,2,draw +d,3,h,3,g,3,draw +d,3,h,3,g,4,draw +d,3,h,3,h,2,draw +d,3,h,3,h,4,draw +d,3,h,4,g,3,draw +d,3,h,4,g,4,draw +d,3,h,4,g,5,draw +d,3,h,4,h,3,draw +d,3,h,4,h,5,draw +d,3,h,5,g,4,draw +d,3,h,5,g,5,draw +d,3,h,5,g,6,draw +d,3,h,5,h,4,draw +d,3,h,5,h,6,draw +d,3,h,6,g,5,draw +d,3,h,6,g,6,draw +d,3,h,6,g,7,draw +d,3,h,6,h,5,draw +d,3,h,6,h,7,draw +d,3,h,7,g,6,draw +d,3,h,7,g,7,draw +d,3,h,7,g,8,draw +d,3,h,7,h,6,draw +d,3,h,7,h,8,draw +d,3,h,8,g,7,draw +d,3,h,8,g,8,draw +d,3,h,8,h,7,draw +d,4,a,1,b,1,draw +d,4,a,1,b,2,draw +d,4,a,2,b,1,draw +d,4,b,1,a,1,draw +d,4,b,1,b,2,draw +d,4,b,1,c,1,draw +d,4,b,1,c,2,draw +d,4,b,2,a,1,draw +d,4,b,2,b,1,draw +d,4,b,2,c,1,draw +d,4,b,2,c,2,draw +d,4,b,3,c,2,draw +d,4,c,1,b,1,draw +d,4,c,1,b,2,draw +d,4,c,1,c,2,draw +d,4,c,1,d,1,draw +d,4,c,1,d,2,draw +d,4,c,2,b,1,draw +d,4,c,2,b,2,draw +d,4,c,2,c,1,draw +d,4,c,2,d,1,draw +d,4,c,2,d,2,draw +d,4,d,1,c,1,draw +d,4,d,1,c,2,draw +d,4,d,1,d,2,draw +d,4,d,1,e,1,draw +d,4,d,1,e,2,draw +d,4,d,2,c,1,draw +d,4,d,2,c,2,draw +d,4,d,2,d,1,draw +d,4,d,2,e,1,draw +d,4,d,2,e,2,draw +d,4,e,1,d,1,draw +d,4,e,1,d,2,draw +d,4,e,1,e,2,draw +d,4,e,1,f,1,draw +d,4,e,1,f,2,draw +d,4,e,2,d,1,draw +d,4,e,2,d,2,draw +d,4,e,2,e,1,draw +d,4,e,2,f,1,draw +d,4,e,2,f,2,draw +d,4,e,2,f,3,draw +d,4,e,6,f,5,draw +d,4,f,1,e,1,draw +d,4,f,1,e,2,draw +d,4,f,1,f,2,draw +d,4,f,1,g,1,draw +d,4,f,1,g,2,draw +d,4,f,2,e,1,draw +d,4,f,2,e,2,draw +d,4,f,2,f,1,draw +d,4,f,2,f,3,draw +d,4,f,2,g,1,draw +d,4,f,2,g,2,draw +d,4,f,2,g,3,draw +d,4,f,3,e,2,draw +d,4,f,3,f,2,draw +d,4,f,3,f,4,draw +d,4,f,3,g,2,draw +d,4,f,3,g,3,draw +d,4,f,3,g,4,draw +d,4,f,4,f,3,draw +d,4,f,4,f,5,draw +d,4,f,4,g,3,draw +d,4,f,4,g,4,draw +d,4,f,4,g,5,draw +d,4,f,5,f,4,draw +d,4,f,5,f,6,draw +d,4,f,5,g,4,draw +d,4,f,5,g,5,draw +d,4,f,5,g,6,draw +d,4,f,6,f,5,draw +d,4,f,6,g,5,draw +d,4,f,6,g,6,draw +d,4,f,6,g,7,draw +d,4,f,7,g,6,draw +d,4,g,1,f,1,draw +d,4,g,1,f,2,draw +d,4,g,1,g,2,draw +d,4,g,1,h,1,draw +d,4,g,1,h,2,draw +d,4,g,2,f,1,draw +d,4,g,2,f,2,draw +d,4,g,2,f,3,draw +d,4,g,2,g,1,draw +d,4,g,2,g,3,draw +d,4,g,2,h,1,draw +d,4,g,2,h,2,draw +d,4,g,2,h,3,draw +d,4,g,3,f,2,draw +d,4,g,3,f,3,draw +d,4,g,3,f,4,draw +d,4,g,3,g,2,draw +d,4,g,3,g,4,draw +d,4,g,3,h,2,draw +d,4,g,3,h,3,draw +d,4,g,3,h,4,draw +d,4,g,4,f,3,draw +d,4,g,4,f,4,draw +d,4,g,4,f,5,draw +d,4,g,4,g,3,draw +d,4,g,4,g,5,draw +d,4,g,4,h,3,draw +d,4,g,4,h,4,draw +d,4,g,4,h,5,draw +d,4,g,5,f,4,draw +d,4,g,5,f,5,draw +d,4,g,5,f,6,draw +d,4,g,5,g,4,draw +d,4,g,5,g,6,draw +d,4,g,5,h,4,draw +d,4,g,5,h,5,draw +d,4,g,5,h,6,draw +d,4,g,6,f,5,draw +d,4,g,6,f,6,draw +d,4,g,6,g,5,draw +d,4,g,6,g,7,draw +d,4,g,6,h,5,draw +d,4,g,6,h,6,draw +d,4,g,6,h,7,draw +d,4,g,7,f,6,draw +d,4,g,7,g,6,draw +d,4,g,7,h,6,draw +d,4,g,7,h,7,draw +d,4,g,7,h,8,draw +d,4,g,8,h,7,draw +d,4,h,1,g,1,draw +d,4,h,1,g,2,draw +d,4,h,1,h,2,draw +d,4,h,2,g,1,draw +d,4,h,2,g,2,draw +d,4,h,2,g,3,draw +d,4,h,2,h,1,draw +d,4,h,2,h,3,draw +d,4,h,3,g,2,draw +d,4,h,3,g,3,draw +d,4,h,3,g,4,draw +d,... [truncated message content] |
From: <ku...@us...> - 2008-03-13 08:12:02
|
Revision: 708 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=708&view=rev Author: kurzum Date: 2008-03-13 01:11:59 -0700 (Thu, 13 Mar 2008) Log Message: ----------- intermediate working owl, still missing conf files Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/KRK.java Modified: trunk/src/dl-learner/org/dllearner/examples/KRK.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-03-13 06:55:13 UTC (rev 707) +++ trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-03-13 08:11:59 UTC (rev 708) @@ -5,8 +5,8 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.net.URI; -import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedList; import java.util.SortedSet; import java.util.StringTokenizer; import java.util.TreeSet; @@ -18,9 +18,23 @@ import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectPropertyAssertion; +import org.dllearner.core.owl.ObjectPropertyDomainAxiom; +import org.dllearner.core.owl.ObjectPropertyRangeAxiom; +import org.dllearner.core.owl.SubClassAxiom; +import org.dllearner.core.owl.SubObjectPropertyAxiom; +import org.dllearner.core.owl.SymmetricObjectPropertyAxiom; import org.dllearner.core.owl.TransitiveObjectPropertyAxiom; import org.dllearner.reasoning.OWLAPIReasoner; +/* + * Structure + * + * + * + * + * */ + + public class KRK { // REMEMBER @@ -28,71 +42,48 @@ // RANKS are numbers private static URI ontologyURI = URI.create("http://www.test.de/test"); - static SortedSet<String> fileSet; - static SortedSet<String> rankSet; - static SortedSet<String> classSet; - static HashMap<String,SortedSet<String>> classToInd; + static SortedSet<String> fileSet = new TreeSet<String>();; + static SortedSet<String> rankSet = new TreeSet<String>();; + static SortedSet<String> classSet = new TreeSet<String>();; + static LinkedList<String> words ; + static KB kb; + + + static NamedClass Game =getAtomicConcept("Game"); + static NamedClass WKing = getAtomicConcept("WKing"); + static NamedClass WRook = getAtomicConcept("WRook"); + static NamedClass BKing = getAtomicConcept("BKing"); + static NamedClass File = getAtomicConcept("File"); + static NamedClass Rank = getAtomicConcept("Rank"); + static NamedClass Piece = getAtomicConcept("Piece"); + + static ObjectProperty hasRank= getRole("hasRank"); + static ObjectProperty hasFile= getRole("hasFile"); + static ObjectProperty hasPiece= getRole("hasPiece"); + static ObjectProperty lessThan= getRole("strictLessThan"); + + + //static HashMap<String,SortedSet<String>> classToInd; /** * @param args */ public static void main(String[] args) { - classToInd = new HashMap<String,SortedSet<String>>(); - fileSet = new TreeSet<String>(); - rankSet = new TreeSet<String>(); - classSet = new TreeSet<String>(); - KB kb=new KB(); - + //classToInd = new HashMap<String,SortedSet<String>>(); + initVarsAndClasses(); + initBackgroundRoles(); + - fileSet.add("a"); fileSet.add("b"); fileSet.add("c"); fileSet.add("d"); fileSet.add("e"); fileSet.add("f"); fileSet.add("g"); fileSet.add("h"); + Individual gameind; + Individual wkingind; + Individual wrookind; + Individual bkingind; - for (int count = 1; count < 9; count++) { - rankSet.add("f"+count); - } - NamedClass[] nc=new NamedClass[]{ - getAtomicConcept("Game"), - getAtomicConcept("WKing"), - getAtomicConcept("WRook"), - getAtomicConcept("BKing")}; - ObjectProperty rank= getRole("hasRank"); - ObjectProperty file= getRole("hasFile"); - ObjectProperty piece= getRole("hasPiece"); - ObjectProperty lessThan= getRole("strictLessThan"); - //ObjectProperty rank= getRole("hasRank"); - - Individual game; - Individual wking; - Individual wrook; - Individual bking; - - kb.addRBoxAxiom(new TransitiveObjectPropertyAxiom(lessThan)); - - Iterator<String> it = fileSet.iterator(); - Individual current = getIndividual(it.next()); - Individual next; - while (it.hasNext()){ - next=getIndividual(it.next()); - kb.addABoxAxiom(new ObjectPropertyAssertion(lessThan,current,next)); - current=next; - - } - - it = rankSet.iterator(); - current = getIndividual(it.next()); - next=null; - while (it.hasNext()){ - next=getIndividual(it.next()); - kb.addABoxAxiom(new ObjectPropertyAssertion(lessThan,current,next)); - current=next; - - } - - String fileIn = "examples/krk/krkopt.data"; - // Datei öffnen + // Datei \xF6ffnen BufferedReader in = null; try { in = new BufferedReader(new FileReader(fileIn)); @@ -110,36 +101,35 @@ { x++; //if(x % 3000 == 0 ) System.out.println("Currently at line "+x); ar = tokenize(line); - game = getIndividual("game"+x); - wking = getIndividual("wking"+x); - wrook = getIndividual("wrook"+x); - bking = getIndividual("bking"+x); + gameind = getIndividual("game"+x); + wkingind = getIndividual("wking"+x); + wrookind = getIndividual("wrook"+x); + bkingind = getIndividual("bking"+x); classSet.add(ar[6]); - //ar[0]); - + // CLASSES - kb.addABoxAxiom(new ClassAssertionAxiom(nc[0],game)); - kb.addABoxAxiom(new ClassAssertionAxiom(getAtomicConcept(ar[6]),game)); - kb.addABoxAxiom(new ClassAssertionAxiom(nc[1],wking)); - kb.addABoxAxiom(new ClassAssertionAxiom(nc[2],wrook)); - kb.addABoxAxiom(new ClassAssertionAxiom(nc[3],bking)); + kb.addABoxAxiom(new ClassAssertionAxiom(Game,gameind)); + kb.addABoxAxiom(new ClassAssertionAxiom(getAtomicConcept(ar[6]),gameind)); + kb.addABoxAxiom(new ClassAssertionAxiom(WKing,wkingind)); + kb.addABoxAxiom(new ClassAssertionAxiom(WRook,wrookind)); + kb.addABoxAxiom(new ClassAssertionAxiom(BKing,bkingind)); //PROPERTIES - kb.addABoxAxiom(new ObjectPropertyAssertion(piece,game,wking)); - kb.addABoxAxiom(new ObjectPropertyAssertion(piece,game,wrook)); - kb.addABoxAxiom(new ObjectPropertyAssertion(piece,game,bking)); + kb.addABoxAxiom(new ObjectPropertyAssertion(hasPiece,gameind,wkingind)); + kb.addABoxAxiom(new ObjectPropertyAssertion(hasPiece,gameind,wrookind)); + kb.addABoxAxiom(new ObjectPropertyAssertion(hasPiece,gameind,bkingind)); - kb.addABoxAxiom(new ObjectPropertyAssertion(rank,wking,getIndividual(ar[0]))); - kb.addABoxAxiom(new ObjectPropertyAssertion(file,wking,getIndividual("f"+ar[1]))); + kb.addABoxAxiom(new ObjectPropertyAssertion(hasRank,wkingind,getIndividual(ar[0]))); + kb.addABoxAxiom(new ObjectPropertyAssertion(hasFile,wkingind,getIndividual("f"+ar[1]))); - kb.addABoxAxiom(new ObjectPropertyAssertion(rank,wrook,getIndividual(ar[2]))); - kb.addABoxAxiom(new ObjectPropertyAssertion(file,wrook,getIndividual("f"+ar[3]))); + kb.addABoxAxiom(new ObjectPropertyAssertion(hasRank,wrookind,getIndividual(ar[2]))); + kb.addABoxAxiom(new ObjectPropertyAssertion(hasFile,wrookind,getIndividual("f"+ar[3]))); - kb.addABoxAxiom(new ObjectPropertyAssertion(rank,bking,getIndividual(ar[4]))); - kb.addABoxAxiom(new ObjectPropertyAssertion(file,bking,getIndividual("f"+ar[5]))); + kb.addABoxAxiom(new ObjectPropertyAssertion(hasRank,bkingind,getIndividual(ar[4]))); + kb.addABoxAxiom(new ObjectPropertyAssertion(hasFile,bkingind,getIndividual("f"+ar[5]))); //kb.addABoxAxiom(new ClassAssertionAxiom(new NamedClass("Game"),new Individual(names[0]+(x++)))); //kb.addABoxAxiom(new ClassAssertionAxiom(new NamedClass("Game"),new Individual(names[0]+(x++)))); @@ -156,6 +146,108 @@ }catch (Exception e) {e.printStackTrace();} System.out.println("Done"); + }//end main + + + static void initVarsAndClasses(){ + kb=new KB(); + fileSet.add("a"); fileSet.add("b"); fileSet.add("c"); fileSet.add("d"); fileSet.add("e"); fileSet.add("f"); fileSet.add("g"); fileSet.add("h"); + for (int count = 1; count < 9; count++) { + rankSet.add("r"+count); + } + + // all sub of piece + kb.addTBoxAxiom(new SubClassAxiom(WKing,Piece)); + kb.addTBoxAxiom(new SubClassAxiom(WRook,Piece)); + kb.addTBoxAxiom(new SubClassAxiom(BKing,Piece)); + + // Classes for files + Iterator<String> it = fileSet.iterator(); + Individual next; + while (it.hasNext()){ + next=getIndividual(it.next()); + kb.addABoxAxiom(new ClassAssertionAxiom(File, next)); + } + + // Classes for rank + it = rankSet.iterator(); + while (it.hasNext()){ + next=getIndividual(it.next()); + kb.addABoxAxiom(new ClassAssertionAxiom(Rank, next)); + } + + + }//end init + + + static void initBackgroundRoles() + { + + //TODO test + kb.addRBoxAxiom(new TransitiveObjectPropertyAxiom(lessThan)); + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(lessThan,Rank)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(lessThan, Rank)); + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(lessThan, File)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(lessThan, File)); + //TODO test + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasRank, Piece)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasRank, Rank)); + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasFile, Piece)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasFile, File)); + kb.addRBoxAxiom(new ObjectPropertyDomainAxiom(hasPiece, Game)); + kb.addRBoxAxiom(new ObjectPropertyRangeAxiom(hasPiece, Piece)); + + // assigning lessthan to file + Iterator<String> it = fileSet.iterator(); + Individual current = getIndividual(it.next()); + Individual next; + while (it.hasNext()){ + next=getIndividual(it.next()); + kb.addABoxAxiom(new ObjectPropertyAssertion(lessThan,current,next)); + current=next; + + } + // assigning lessthan to rank + it = rankSet.iterator(); + current = getIndividual(it.next()); + next=null; + while (it.hasNext()){ + next=getIndividual(it.next()); + kb.addABoxAxiom(new ObjectPropertyAssertion(lessThan,current,next)); + current=next; + + } + + + + + //new PropertyRangeAxiom(rank, (PropertyRange) nc[5]); + + String str="hasDistanceOf"; + String str2="hasDistanceLessThan"; + //ObjectProperty tmp; + String[] rankarray=new String[8]; + String[] filearray=new String[8]; + rankSet.toArray(rankarray); + fileSet.toArray(filearray); + + // assigning has DistanceOf to Rank and File + for (int count = 0; count < filearray.length; count++) { + for (int inner = count+1 , dist = 1; inner < filearray.length; inner++, dist++) { + //ObjectProperty op = getRole(str+inner); + kb.addABoxAxiom(getRoleAssertion( str+dist, rankarray[count], rankarray[inner])); + kb.addABoxAxiom(getRoleAssertion( str+dist, filearray[count], filearray[inner])); + + } + } + //make it symmetric + subproperty of + for (int count = 1; count < 8; count++) { + kb.addRBoxAxiom(new SymmetricObjectPropertyAxiom(getRole(str+count))); + kb.addRBoxAxiom(new SubObjectPropertyAxiom(getRole(str+count),getRole(str2+(count+1)))); + kb.addRBoxAxiom(new SubObjectPropertyAxiom(getRole(str2+count),getRole(str2+(count+1)))); + } + + } public static String[] tokenize (String s) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-03-13 06:55:17
|
Revision: 707 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=707&view=rev Author: jenslehmann Date: 2008-03-12 23:55:13 -0700 (Wed, 12 Mar 2008) Log Message: ----------- - wrote script for training on one and testing on another conf file - small algorithm improvements Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/TestValidation.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-03-12 23:15:31 UTC (rev 706) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-03-13 06:55:13 UTC (rev 707) @@ -267,7 +267,7 @@ long lastReductionTime = System.nanoTime(); // try a traversal after 100 seconds long traversalInterval = 1000l * 1000000000l; - long reductionInterval = 100l * 1000000000l; + long reductionInterval = 300l * 1000000000l; long currentTime; while(!solutionFound && !stop) { Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java 2008-03-12 23:15:31 UTC (rev 706) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/MultiHeuristic.java 2008-03-13 06:55:13 UTC (rev 707) @@ -21,7 +21,8 @@ import java.util.List; -import org.dllearner.core.owl.DatatypeValueRestriction; +import org.dllearner.core.owl.BooleanValueRestriction; +import org.dllearner.core.owl.DatatypeSomeRestriction; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Thing; import org.dllearner.utilities.ConceptComparator; @@ -78,7 +79,7 @@ private double expansionPenaltyFactor; private double gainBonusFactor; private double nodeChildPenalty = 0.0001; - private double startNodeBonus = 0.8; + private double startNodeBonus = 1.0; // examples private int nrOfNegativeExamples; @@ -144,11 +145,16 @@ // do not count TOP symbols (in particular in ALL r.TOP and EXISTS r.TOP) // as they provide no extra information if(description instanceof Thing) - bonus = 1; + bonus = 2; + if(description instanceof BooleanValueRestriction) + bonus = -1; + // some bonus for doubles because they are already penalised by length 3 - if(description instanceof DatatypeValueRestriction) - bonus = 1; + if(description instanceof DatatypeSomeRestriction) { +// System.out.println(description); + bonus = 3; + } List<Description> children = description.getChildren(); for(Description child : children) { Modified: trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-03-12 23:15:31 UTC (rev 706) +++ trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-03-13 06:55:13 UTC (rev 707) @@ -112,6 +112,16 @@ // list of all "hasProperty" test private static Set<String> tests = new TreeSet<String>(); + // we ignore the ames test since its distribution in PTE-2 is so + // different from the training substances that a different testing + // strategy was probably in use + private static boolean ignoreAmes = false; + private static boolean ignoreSalmonella = false;; + private static boolean ignoreCytogenCa = false; + // if true we learn carcinogenic, if false we learn non-carcinogenic + private static boolean learnCarcinogenic = true; + private static boolean useNewGroups = true; + /** * @param args * No arguments supported. @@ -168,8 +178,10 @@ // define properties including domain and range String kbString = "DPDOMAIN(" + getURI2("charge") + ") = " + getURI2("Atom") + ".\n"; kbString += "DPRANGE(" + getURI2("charge") + ") = DOUBLE.\n"; - kbString += "DPDOMAIN(" + getURI2("amesTestPositive") + ") = " + getURI2("Compound") + ".\n"; - kbString += "DPRANGE(" + getURI2("amesTestPositive") + ") = BOOLEAN.\n"; + if(!ignoreAmes) { + kbString += "DPDOMAIN(" + getURI2("amesTestPositive") + ") = " + getURI2("Compound") + ".\n"; + kbString += "DPRANGE(" + getURI2("amesTestPositive") + ") = BOOLEAN.\n"; + } kbString += "OPDOMAIN(" + getURI2("hasAtom") + ") = " + getURI2("Compound") + ".\n"; kbString += "OPRANGE(" + getURI2("hasAtom") + ") = " + getURI2("Atom") + ".\n"; kbString += "OPDOMAIN(" + getURI2("hasBond") + ") = " + getURI2("Compound") + ".\n"; @@ -177,7 +189,10 @@ kbString += "OPDOMAIN(" + getURI2("inBond") + ") = " + getURI2("Bond") + ".\n"; kbString += "OPRANGE(" + getURI2("inBond") + ") = " + getURI2("Atom") + ".\n"; kbString += "OPDOMAIN(" + getURI2("hasStructure") + ") = " + getURI2("Compound") + ".\n"; - kbString += "OPRANGE(" + getURI2("hasStructure") + ") = " + getURI2("Structure") + ".\n"; + kbString += "OPRANGE(" + getURI2("hasStructure") + ") = " + getURI2("Structure") + ".\n"; + kbString += getURI2("Di") + " SUB " + getURI2("Structure") + ".\n"; + kbString += getURI2("Halide") + " SUB " + getURI2("Structure") + ".\n"; + kbString += getURI2("Ring") + " SUB " + getURI2("Structure") + ".\n"; KB kb2 = KBParser.parseKBFile(kbString); kb.addKB(kb2); @@ -195,7 +210,7 @@ // are in ames.pl [the rest is negative in Prolog by CWA], so // we add negative test results here) for(String compound : compounds) { - if(!compoundsAmes.contains(compound)) { + if(!ignoreAmes && !compoundsAmes.contains(compound)) { BooleanDatatypePropertyAssertion ames = getBooleanDatatypePropertyAssertion(compound, "amesTestPositive", false); kb.addAxiom(ames); } @@ -255,15 +270,19 @@ // generating test examples for PTE-1 // => put all in one file, because they were used as training for PTE-2 - // File confPTE1File = new File("examples/carcinogenesis/testpte1.conf"); - // Files.clearFile(confPTE1File); + File confPTE1File = new File("examples/carcinogenesis/testpte1.conf"); + Files.clearFile(confPTE1File); File testPTE1Positives = new File(prologDirectory + "pte1.f"); File testPTE1Negatives = new File(prologDirectory + "pte1.n"); List<Individual> posPTE1Examples = getExamples(testPTE1Positives); List<Individual> negPTE1Examples = getExamples(testPTE1Negatives); appendPosExamples(confTrainFile, posPTE1Examples); - appendNegExamples(confTrainFile, negPTE1Examples); + appendNegExamples(confTrainFile, negPTE1Examples); + Files.clearFile(confPTE1File); + Files.appendFile(confPTE1File, "import(\"pte.owl\");\nreasoner=fastInstanceChecker;\n\n"); + appendPosExamples(confPTE1File, posPTE1Examples); + appendNegExamples(confPTE1File, negPTE1Examples); // create a PTE-2 test file File confPTE2File = new File("examples/carcinogenesis/testpte2.conf"); @@ -288,10 +307,12 @@ // remaining stuff or use closed world assumption in the // TBox dematerialisation later on if(headName.equals("ames")) { + if(!ignoreAmes) { String compoundName = head.getArgument(0).toPLString(); BooleanDatatypePropertyAssertion ames = getBooleanDatatypePropertyAssertion(compoundName, "amesTestPositive", true); axioms.add(ames); compoundsAmes.add(compoundName); + } } else if (headName.equals("atm")) { String compoundName = head.getArgument(0).toPLString(); String atomName = head.getArgument(1).toPLString(); @@ -350,48 +371,67 @@ } else if (headName.equals("has_property")) { String compoundName = head.getArgument(0).toPLString(); String testName = head.getArgument(1).toPLString(); - String resultStr = head.getArgument(2).toPLString(); - boolean testResult = (resultStr.equals("p")) ? true : false; - - // create a new datatype property if it does not exist already - if(!tests.contains(testName)) { - String axiom1 = "DPDOMAIN(" + getURI2(testName) + ") = " + getURI2("Compound") + ".\n"; - String axiom2 = "DPRANGE(" + getURI2(testName) + ") = BOOLEAN.\n"; - KB kb = KBParser.parseKBFile(axiom1 + axiom2); - axioms.addAll(kb.getAxioms()); + if(!(ignoreSalmonella && testName.equals("salmonella")) + && !(ignoreCytogenCa && testName.equals("cytogen_ca"))) { + String resultStr = head.getArgument(2).toPLString(); + boolean testResult = (resultStr.equals("p")) ? true : false; + + // create a new datatype property if it does not exist already + if(!tests.contains(testName)) { + String axiom1 = "DPDOMAIN(" + getURI2(testName) + ") = " + getURI2("Compound") + ".\n"; + String axiom2 = "DPRANGE(" + getURI2(testName) + ") = BOOLEAN.\n"; + KB kb = KBParser.parseKBFile(axiom1 + axiom2); + axioms.addAll(kb.getAxioms()); + } + // create an axiom with the test result + DatatypePropertyAssertion dpa = getBooleanDatatypePropertyAssertion(compoundName, testName, + testResult); + axioms.add(dpa); } - // create an axiom with the test result - DatatypePropertyAssertion dpa = getBooleanDatatypePropertyAssertion(compoundName, testName, - testResult); - axioms.add(dpa); // either parse this or ashby_alert - not both - ashby_alert contains // all information in ind already } else if (headName.equals("ind") || headName.equals("ring_no")) { + // parse this only if the new groups are not parsed +// if(!useNewGroups) { String compoundName = head.getArgument(0).toPLString(); String structureName = head.getArgument(1).toPLString(); - int count = Integer.parseInt(head.getArgument(2).toPLString()); +// int count = Integer.parseInt(head.getArgument(2).toPLString()); // upper case first letter String structureClass = structureName.substring(0,1).toUpperCase() + structureName.substring(1);; String structureInstance = structureName + "-" + structureNr; - if (!bondTypes.contains(structureClass)) { - NamedClass subClass = getAtomicConcept(structureClass); - SubClassAxiom sc = new SubClassAxiom(subClass, getAtomicConcept("Structure")); - axioms.add(sc); - structureTypes.add(structureClass); - } + addStructureSubclass(axioms, structureClass); - for(int i=0; i<count; i++) { +// for(int i=0; i<count; i++) { ObjectPropertyAssertion op = getRoleAssertion("hasStructure", compoundName, structureInstance); axioms.add(op); // make e.g. halide10-382 instance of Bond-3 ClassAssertionAxiom ca = getConceptAssertion(structureClass, structureInstance); axioms.add(ca); structureNr++; - } +// } +// } } else if (headName.equals("ashby_alert")) { // ... currently ignored ... } else if (newGroups.contains(headName)) { + if(useNewGroups) { + String compoundName = head.getArgument(0).toPLString(); + String structureName = headName; +// int count = Integer.parseInt(head.getArgument(2).toPLString()); + // upper case first letter + String structureClass = structureName.substring(0,1).toUpperCase() + structureName.substring(1);; + String structureInstance = structureName + "-" + structureNr; + + addStructureSubclass(axioms, structureClass); + +// for(int i=0; i<count; i++) { + ObjectPropertyAssertion op = getRoleAssertion("hasStructure", compoundName, structureInstance); + axioms.add(op); + ClassAssertionAxiom ca = getConceptAssertion(structureClass, structureInstance); + axioms.add(ca); + structureNr++; +// } + } } else { // print clauses which are not supported yet System.out.println("unsupported clause"); @@ -402,6 +442,23 @@ return axioms; } + private static void addStructureSubclass(List<Axiom> axioms, String structureClass) { + // build in more fine-grained subclasses e.g. Di+number is subclass of Di + if (!structureTypes.contains(structureClass)) { + NamedClass nc = getAtomicConcept("Structure"); + if(structureClass.contains("Di")) + nc = getAtomicConcept("Di"); + else if(structureClass.contains("ring") || structureClass.contains("Ring")) + nc = getAtomicConcept("Ring"); + else if(structureClass.contains("halide") || structureClass.contains("Halide")) + nc = getAtomicConcept("Halide"); + NamedClass subClass = getAtomicConcept(structureClass); + SubClassAxiom sc = new SubClassAxiom(subClass, nc); + axioms.add(sc); + structureTypes.add(structureClass); + } + } + // takes a *.f or *.n file as input and returns the // contained examples private static List<Individual> getExamples(File file) throws FileNotFoundException, IOException, ParseException { @@ -419,7 +476,10 @@ private static void appendPosExamples(File file, List<Individual> examples) { StringBuffer content = new StringBuffer(); for(Individual example : examples) { - content.append("+\""+example.toString()+"\"\n"); + if(learnCarcinogenic) + content.append("+\""+example.toString()+"\"\n"); + else + content.append("-\""+example.toString()+"\"\n"); } Files.appendFile(file, content.toString()); } @@ -427,7 +487,10 @@ private static void appendNegExamples(File file, List<Individual> examples) { StringBuffer content = new StringBuffer(); for(Individual example : examples) { - content.append("-\""+example.toString()+"\"\n"); + if(learnCarcinogenic) + content.append("-\""+example.toString()+"\"\n"); + else + content.append("+\""+example.toString()+"\"\n"); } Files.appendFile(file, content.toString()); } @@ -582,6 +645,7 @@ * <p>Positives (19): <br /> * <ul> * <li>t3 (SE+3NE): http://ntp.niehs.nih.gov/index.cfm?objectid=BCACAFD4-123F-7908-7B521E4F665EFBD9</li> + * <li>t4 (3CE+NE) - contradicts IJCAI-97 paper and should probably be case 75-52-5 instead of 75-52-8: http://ntp.niehs.nih.gov/index.cfm?objectid=BCE49084-123F-7908-7BE127F7AF1FFBB5</li> * <li>t5: paper</li> * <li>t7: paper</li> * <li>t8: paper</li> @@ -607,7 +671,7 @@ * <ul> * <li>t1 (4NE): http://ntp.niehs.nih.gov/index.cfm?objectid=BD9FF53C-123F-7908-7B123DAE0A25B122 </li> * <li>t2 (4NE): http://ntp.niehs.nih.gov/index.cfm?objectid=BCF8651E-123F-7908-7B21DD5ED83CD0FF </li> - * <li>t4: paper</li> + * <li><strike>t4: paper</strike></li> * <li>t6: paper</li> * <li>t11: paper</li> * <li>t13 (4NE): http://ntp.niehs.nih.gov/index.cfm?objectid=BD136ED6-123F-7908-7B619EE79F2FD062</li> @@ -623,21 +687,47 @@ * <li>t29: probably a negative (see http://ntp.niehs.nih.gov/index.cfm?objectid=BD855EA1-123F-7908-7B573FC3C08188DC) but * no tests directly for this substance</li> * </ul> + * + * <p>The following examples are probably not part of the IJCAI PTE-2 challenge + * (reports younger than 1998): + * <ul> + * <li>pos: t21 (5/99), t25 (9/04), t30(10/01)</li> + * <li>neg: t26 (5/99), t27 (05/01), t28 (05/00), t29 (09/02)</li> + * </ul> * </p> + * </p> * @return A string for all examples as used in the conf file. */ public static String getPTE2Examples() { - String[] pos = new String[] {"t3","t5","t7","t8","t9","t10","t12", - "t14","t15","t16","t18","t19","t20","t21","t22","t23","t24", - "t25","t30"}; - String[] neg = new String[] {"t1", "t2", "t4", "t6", "t11", "t13", - "t17","t26","t27","t28"}; + String[] pos = new String[] {"t3","t4","t5","t7","t8", + "t9", + "t10","t12", + "t14","t15","t16","t18","t19","t20", + "t21", + "t22", + "t23", + "t24", + "t25", + "t30"}; + String[] neg = new String[] {"t1", "t2", + "t6", "t11", "t13", + "t17","t26","t27", + "t28","t29" + }; String ret = ""; - for(String posEx : pos) - ret += "+" + getURI2(posEx) + "\n"; - for(String negEx : neg) - ret += "-" + getURI2(negEx) + "\n"; + for(String posEx : pos) { + if(learnCarcinogenic) + ret += "+" + getURI2(posEx) + "\n"; + else + ret += "-" + getURI2(posEx) + "\n"; + } + for(String negEx : neg) { + if(learnCarcinogenic) + ret += "-" + getURI2(negEx) + "\n"; + else + ret += "+" + getURI2(negEx) + "\n"; + } return ret; } Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java 2008-03-12 23:15:31 UTC (rev 706) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java 2008-03-13 06:55:13 UTC (rev 707) @@ -54,9 +54,9 @@ String str = ""; str += "score: " + score + "\n"; str += "accuracy: " + (1 + classificationScore) + "\n"; - str += "posAsPos: " + posAsPos + "\n"; - str += "positive examples classified as negative: " + posAsNeg + "\n"; - str += "negative examples classified as positive: " + negAsPos + "\n"; + str += "posAsPos (" + posAsPos.size() + "): " + posAsPos + "\n"; + str += "positive examples classified as negative (" + posAsNeg.size() + "): " + posAsNeg + "\n"; + str += "negative examples classified as positive (" + negAsPos.size() + "): " + negAsPos + "\n"; return str; } Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2008-03-12 23:15:31 UTC (rev 706) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2008-03-13 06:55:13 UTC (rev 707) @@ -286,7 +286,9 @@ ConceptTransformation.cleanConceptNonRecursive(mc); ConceptTransformation.transformToOrderedNegationNormalFormNonRecursive(mc, conceptComparator); - refinements.add(mc); + // check whether the intersection is OK (sanity checks), then add it + if(checkIntersection(mc)) + refinements.add(mc); } } @@ -431,6 +433,17 @@ } } + // check for double datatype properties + if(c instanceof DatatypeSomeRestriction && + description instanceof DatatypeSomeRestriction) { + DataRange dr = ((DatatypeSomeRestriction)c).getDataRange(); + DataRange dr2 = ((DatatypeSomeRestriction)description).getDataRange(); + // it does not make sense to have statements like height >= 1.8 AND height >= 1.7 + if((dr instanceof DoubleMaxValue && dr2 instanceof DoubleMaxValue) + ||(dr instanceof DoubleMinValue && dr2 instanceof DoubleMinValue)) + skip = true; + } + // perform a disjointness check when named classes are added; // this can avoid a lot of superfluous computation in the algorithm e.g. // when A1 looks good, so many refinements of the form (A1 OR (A2 AND A3)) @@ -465,6 +478,33 @@ return refinements; } + // when a child of an intersection is refined and reintegrated into the + // intersection, we can perform some sanity checks; + // method returns true if everything is OK and false otherwise + private boolean checkIntersection(Intersection intersection) { + // rule 1: max. restrictions at most once + boolean maxDoubleOccurence = false; + // rule 2: min restrictions at most once + boolean minDoubleOccurence = false; + for(Description child : intersection.getChildren()) { + if(child instanceof DatatypeSomeRestriction) { + DataRange dr = ((DatatypeSomeRestriction)child).getDataRange(); + if(dr instanceof DoubleMaxValue) { + if(maxDoubleOccurence) + return false; + else + maxDoubleOccurence = true; + } else if(dr instanceof DoubleMinValue) { + if(minDoubleOccurence) + return false; + else + minDoubleOccurence = true; + } + } + } + return true; + } + private void computeTopRefinements(int maxLength) { computeTopRefinements(maxLength, null); } Added: trunk/src/dl-learner/org/dllearner/utilities/TestValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/TestValidation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/TestValidation.java 2008-03-13 06:55:13 UTC (rev 707) @@ -0,0 +1,75 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.utilities; + +import java.io.File; +import java.util.Set; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.cli.Start; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.Score; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; + +/** + * @author Jens Lehmann + * + */ +public class TestValidation { + + private static Logger logger = Logger.getRootLogger(); + + public static void main(String args[]) throws ComponentInitException { + + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.DEBUG); + + String filenameTrain = args[0]; + String filenameTest = args[1]; + + Start start = new Start(new File(filenameTrain)); + start.start(false); + Description solution = start.getLearningAlgorithm().getBestSolution(); + + logger.setLevel(Level.WARN); + + Start startTest = new Start(new File(filenameTest)); + ReasoningService rs = startTest.getReasoningService(); + LearningProblem lp = startTest.getLearningProblem(); + + Set<Individual> result = rs.retrieval(solution); + System.out.println("retrieval result: " + result); + + Score score = lp.computeScore(solution); + System.out.println(score); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ton...@us...> - 2008-03-12 23:15:37
|
Revision: 706 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=706&view=rev Author: tonytacker Date: 2008-03-12 16:15:31 -0700 (Wed, 12 Mar 2008) Log Message: ----------- I reduced thread priorities to ensure main-thread (GUI) is fastest inside. All others have some lower levels. Tree-Window works now, but only 1st level of it. Means you cann't look at 2nd level of tree. It will be later integrated. Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/ThreadRun.java trunk/src/dl-learner/org/dllearner/gui/ThreadStatistics.java trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java Modified: trunk/src/dl-learner/org/dllearner/gui/ThreadRun.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/ThreadRun.java 2008-03-12 19:25:45 UTC (rev 705) +++ trunk/src/dl-learner/org/dllearner/gui/ThreadRun.java 2008-03-12 23:15:31 UTC (rev 706) @@ -40,6 +40,7 @@ public void run() { if (config.getLearningAlgorithm() != null) { config.setThreadIsRunning(true); + this.setPriority(Thread.MIN_PRIORITY); config.getLearningAlgorithm().start(); config.setThreadIsRunning(false); } Modified: trunk/src/dl-learner/org/dllearner/gui/ThreadStatistics.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/ThreadStatistics.java 2008-03-12 19:25:45 UTC (rev 705) +++ trunk/src/dl-learner/org/dllearner/gui/ThreadStatistics.java 2008-03-12 23:15:31 UTC (rev 706) @@ -40,6 +40,7 @@ */ @Override public void run() { + this.setPriority(4); if (config.getThreadIsRunning()) { try { sleep(1000); // sleep 1 second Modified: trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-03-12 19:25:45 UTC (rev 705) +++ trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-03-12 23:15:31 UTC (rev 706) @@ -22,6 +22,7 @@ import javax.swing.*; import javax.swing.tree.*; +import org.dllearner.algorithms.refexamples.*; /** * TreeWindow @@ -46,7 +47,7 @@ setIconImage(java.awt.Toolkit.getDefaultToolkit().getImage( this.getClass().getResource("icon.gif"))); - // tree + // test example tree DefaultMutableTreeNode exampleRoot = new DefaultMutableTreeNode("root"); for (int knot = 0; knot < 4; knot++) { DefaultMutableTreeNode node = new DefaultMutableTreeNode("knot " + knot); @@ -54,23 +55,35 @@ for (int leaf = 1; leaf < 4; leaf++) node.add(new DefaultMutableTreeNode("leaf " + (knot * 3 + leaf))); } - + // tree model EBNodeTreeModel root = null; - if (config.getLearningAlgorithm() != null) { - //ExampleBasedNode rootNode = config.getLearningAlgorithm().getStartNode(); - //root = new EBNodeTreeModel(rootNode); - } - - // show tree - if (root != null) { - //JTree tree = new JTree(root); - //this.add(new JScrollPane(tree)); - } - else { + // if (config.getLearningAlgorithm() != null) { + if (config.getLearningAlgorithm() instanceof ExampleBasedROLComponent) { + ExampleBasedROLComponent ebrol = (ExampleBasedROLComponent) config + .getLearningAlgorithm(); + ExampleBasedNode rootNode = ebrol.getStartNode(); + root = new EBNodeTreeModel(rootNode); + + // show tree + if (root != null) { + //System.out.println("TEST: " + root.getChildCount(rootNode)); + for (int i = 0; i < root.getChildCount(rootNode); i++) { + // Object node = root.getChild(rootNode, i); + + root.getChild(rootNode, i); + //System.out.println("TEST: " + root.getChild(rootNode, i)); + } + JTree tree = new JTree(root); + this.add(new JScrollPane(tree)); + } + } else { JTree tree = new JTree(exampleRoot); this.add(new JScrollPane(tree)); } + + // } + this.repaint(); this.setVisible(true); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-03-12 19:25:51
|
Revision: 705 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=705&view=rev Author: kurzum Date: 2008-03-12 12:25:45 -0700 (Wed, 12 Mar 2008) Log Message: ----------- KRK not completed Added Paths: ----------- trunk/examples/krk/ trunk/src/dl-learner/org/dllearner/examples/KRK.java Added: trunk/src/dl-learner/org/dllearner/examples/KRK.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRK.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-03-12 19:25:45 UTC (rev 705) @@ -0,0 +1,213 @@ +package org.dllearner.examples; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.net.URI; +import java.util.HashMap; +import java.util.Iterator; +import java.util.SortedSet; +import java.util.StringTokenizer; +import java.util.TreeSet; + +import org.dllearner.core.owl.ClassAssertionAxiom; +import org.dllearner.core.owl.DatatypeProperty; +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.KB; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.ObjectProperty; +import org.dllearner.core.owl.ObjectPropertyAssertion; +import org.dllearner.core.owl.TransitiveObjectPropertyAxiom; +import org.dllearner.reasoning.OWLAPIReasoner; + +public class KRK { + + // REMEMBER + // FILES are letters + // RANKS are numbers + + private static URI ontologyURI = URI.create("http://www.test.de/test"); + static SortedSet<String> fileSet; + static SortedSet<String> rankSet; + static SortedSet<String> classSet; + static HashMap<String,SortedSet<String>> classToInd; + /** + * @param args + */ + public static void main(String[] args) { + + classToInd = new HashMap<String,SortedSet<String>>(); + fileSet = new TreeSet<String>(); + rankSet = new TreeSet<String>(); + classSet = new TreeSet<String>(); + KB kb=new KB(); + + + fileSet.add("a"); fileSet.add("b"); fileSet.add("c"); fileSet.add("d"); fileSet.add("e"); fileSet.add("f"); fileSet.add("g"); fileSet.add("h"); + + for (int count = 1; count < 9; count++) { + rankSet.add("f"+count); + } + + NamedClass[] nc=new NamedClass[]{ + getAtomicConcept("Game"), + getAtomicConcept("WKing"), + getAtomicConcept("WRook"), + getAtomicConcept("BKing")}; + + ObjectProperty rank= getRole("hasRank"); + ObjectProperty file= getRole("hasFile"); + ObjectProperty piece= getRole("hasPiece"); + ObjectProperty lessThan= getRole("strictLessThan"); + //ObjectProperty rank= getRole("hasRank"); + + Individual game; + Individual wking; + Individual wrook; + Individual bking; + + kb.addRBoxAxiom(new TransitiveObjectPropertyAxiom(lessThan)); + + Iterator<String> it = fileSet.iterator(); + Individual current = getIndividual(it.next()); + Individual next; + while (it.hasNext()){ + next=getIndividual(it.next()); + kb.addABoxAxiom(new ObjectPropertyAssertion(lessThan,current,next)); + current=next; + + } + + it = rankSet.iterator(); + current = getIndividual(it.next()); + next=null; + while (it.hasNext()){ + next=getIndividual(it.next()); + kb.addABoxAxiom(new ObjectPropertyAssertion(lessThan,current,next)); + current=next; + + } + + + String fileIn = "examples/krk/krkopt.data"; + + // Datei öffnen + BufferedReader in = null; + try { + in = new BufferedReader(new FileReader(fileIn)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + + try{ + String line = ""; + String[] ar = new String[6]; + + + int x=0; + while ( (line =in.readLine()) != null) + { x++; + //if(x % 3000 == 0 ) System.out.println("Currently at line "+x); + ar = tokenize(line); + game = getIndividual("game"+x); + wking = getIndividual("wking"+x); + wrook = getIndividual("wrook"+x); + bking = getIndividual("bking"+x); + + classSet.add(ar[6]); + + //ar[0]); + + // CLASSES + kb.addABoxAxiom(new ClassAssertionAxiom(nc[0],game)); + kb.addABoxAxiom(new ClassAssertionAxiom(getAtomicConcept(ar[6]),game)); + kb.addABoxAxiom(new ClassAssertionAxiom(nc[1],wking)); + kb.addABoxAxiom(new ClassAssertionAxiom(nc[2],wrook)); + kb.addABoxAxiom(new ClassAssertionAxiom(nc[3],bking)); + + //PROPERTIES + kb.addABoxAxiom(new ObjectPropertyAssertion(piece,game,wking)); + kb.addABoxAxiom(new ObjectPropertyAssertion(piece,game,wrook)); + kb.addABoxAxiom(new ObjectPropertyAssertion(piece,game,bking)); + + + kb.addABoxAxiom(new ObjectPropertyAssertion(rank,wking,getIndividual(ar[0]))); + kb.addABoxAxiom(new ObjectPropertyAssertion(file,wking,getIndividual("f"+ar[1]))); + + kb.addABoxAxiom(new ObjectPropertyAssertion(rank,wrook,getIndividual(ar[2]))); + kb.addABoxAxiom(new ObjectPropertyAssertion(file,wrook,getIndividual("f"+ar[3]))); + + kb.addABoxAxiom(new ObjectPropertyAssertion(rank,bking,getIndividual(ar[4]))); + kb.addABoxAxiom(new ObjectPropertyAssertion(file,bking,getIndividual("f"+ar[5]))); + + //kb.addABoxAxiom(new ClassAssertionAxiom(new NamedClass("Game"),new Individual(names[0]+(x++)))); + //kb.addABoxAxiom(new ClassAssertionAxiom(new NamedClass("Game"),new Individual(names[0]+(x++)))); + + + + //System.out.println(line); + + } + System.out.println("Writing owl"); + File owlfile = new File("examples/krk/test.owl"); + //System.out.println(kb.toString("http://www.test.de/test", new HashMap<String, String>())); + OWLAPIReasoner.exportKBToOWL(owlfile, kb, ontologyURI); + + }catch (Exception e) {e.printStackTrace();} + System.out.println("Done"); + } + + public static String[] tokenize (String s) { + StringTokenizer st=new StringTokenizer(s,","); + + String tmp=""; + String[] ret = new String[7]; + int x = 0; + while (st.hasMoreTokens()){ + tmp=st.nextToken(); + if(x==6)tmp=tmp.toUpperCase(); + ret[x] = tmp; + x++; + } + return ret; + + } + + private static Individual getIndividual(String name) { + return new Individual(ontologyURI + "#" + name); + } + + private static ObjectProperty getRole(String name) { + return new ObjectProperty(ontologyURI + "#" + name); + } + + @SuppressWarnings("unused") + private static DatatypeProperty getDatatypeProperty(String name) { + return new DatatypeProperty(ontologyURI + "#" + name); + } + + private static NamedClass getAtomicConcept(String name) { + return new NamedClass(ontologyURI + "#" + name); + } + + @SuppressWarnings("unused") + private static String getURI(String name) { + return ontologyURI + "#" + name; + } + + @SuppressWarnings("unused") + private static ClassAssertionAxiom getConceptAssertion(String concept, String i) { + Individual ind = getIndividual(i); + NamedClass c = getAtomicConcept(concept); + return new ClassAssertionAxiom(c, ind); + } + + @SuppressWarnings("unused") + private static ObjectPropertyAssertion getRoleAssertion(String role, String i1, String i2) { + Individual ind1 = getIndividual(i1); + Individual ind2 = getIndividual(i2); + ObjectProperty ar = getRole(role); + return new ObjectPropertyAssertion(ar, ind1, ind2); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ton...@us...> - 2008-03-12 16:22:27
|
Revision: 704 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=704&view=rev Author: tonytacker Date: 2008-03-12 09:22:24 -0700 (Wed, 12 Mar 2008) Log Message: ----------- removed changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java 2008-03-12 02:45:28 UTC (rev 703) +++ trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java 2008-03-12 16:22:24 UTC (rev 704) @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; -import org.dllearner.algorithms.refexamples.ExampleBasedNode; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -287,8 +286,4 @@ stop = true; } - @Override - public ExampleBasedNode getStartNode() { - return null; - } } Modified: trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java 2008-03-12 02:45:28 UTC (rev 703) +++ trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java 2008-03-12 16:22:24 UTC (rev 704) @@ -25,7 +25,6 @@ import org.apache.log4j.Logger; import org.dllearner.algorithms.gp.Program; import org.dllearner.algorithms.gp.GPUtilities; -import org.dllearner.algorithms.refexamples.ExampleBasedNode; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -128,9 +127,4 @@ } - @Override - public ExampleBasedNode getStartNode() { - return null; - } - } Modified: trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java 2008-03-12 02:45:28 UTC (rev 703) +++ trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java 2008-03-12 16:22:24 UTC (rev 704) @@ -30,7 +30,6 @@ import java.util.Map.Entry; import org.dllearner.algorithms.hybridgp.Psi; -import org.dllearner.algorithms.refexamples.ExampleBasedNode; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -1005,8 +1004,4 @@ // this.algorithmType = algorithmType; //} - @Override - public ExampleBasedNode getStartNode() { - return null; - } } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-03-12 02:45:28 UTC (rev 703) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-03-12 16:22:24 UTC (rev 704) @@ -349,7 +349,6 @@ algorithm.stop(); } - @Override public ExampleBasedNode getStartNode() { return algorithm.getStartNode(); } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-03-12 02:45:28 UTC (rev 703) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-03-12 16:22:24 UTC (rev 704) @@ -12,7 +12,6 @@ import java.util.TreeSet; import org.apache.log4j.Logger; -import org.dllearner.algorithms.refexamples.ExampleBasedNode; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -1004,12 +1003,8 @@ /** * @return the startNode */ - public Node getStartNode_original() { + public Node getStartNode() { return startNode; } - @Override - public ExampleBasedNode getStartNode() { - return null; - } } Modified: trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2008-03-12 02:45:28 UTC (rev 703) +++ trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2008-03-12 16:22:24 UTC (rev 704) @@ -23,7 +23,6 @@ import java.util.LinkedList; import java.util.List; -import org.dllearner.algorithms.refexamples.ExampleBasedNode; import org.dllearner.core.owl.Description; /** @@ -70,10 +69,5 @@ public static Collection<Class<? extends LearningProblem>> supportedLearningProblems() { return new LinkedList<Class<? extends LearningProblem>>(); } - - /** - * Root for search tree. - * @return - */ - public abstract ExampleBasedNode getStartNode(); + } Modified: trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-03-12 02:45:28 UTC (rev 703) +++ trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-03-12 16:22:24 UTC (rev 704) @@ -22,7 +22,6 @@ import javax.swing.*; import javax.swing.tree.*; -import org.dllearner.algorithms.refexamples.*; /** * TreeWindow @@ -59,14 +58,14 @@ // tree model EBNodeTreeModel root = null; if (config.getLearningAlgorithm() != null) { - ExampleBasedNode rootNode = config.getLearningAlgorithm().getStartNode(); - root = new EBNodeTreeModel(rootNode); + //ExampleBasedNode rootNode = config.getLearningAlgorithm().getStartNode(); + //root = new EBNodeTreeModel(rootNode); } // show tree if (root != null) { - JTree tree = new JTree(root); - this.add(new JScrollPane(tree)); + //JTree tree = new JTree(root); + //this.add(new JScrollPane(tree)); } else { JTree tree = new JTree(exampleRoot); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ton...@us...> - 2008-03-12 02:45:39
|
Revision: 703 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=703&view=rev Author: tonytacker Date: 2008-03-11 19:45:28 -0700 (Tue, 11 Mar 2008) Log Message: ----------- fix Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java Modified: trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-03-12 01:48:07 UTC (rev 702) +++ trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-03-12 02:45:28 UTC (rev 703) @@ -55,10 +55,14 @@ for (int leaf = 1; leaf < 4; leaf++) node.add(new DefaultMutableTreeNode("leaf " + (knot * 3 + leaf))); } - - ExampleBasedNode rootNode = config.getLearningAlgorithm().getStartNode(); - EBNodeTreeModel root = new EBNodeTreeModel(rootNode); + // tree model + EBNodeTreeModel root = null; + if (config.getLearningAlgorithm() != null) { + ExampleBasedNode rootNode = config.getLearningAlgorithm().getStartNode(); + root = new EBNodeTreeModel(rootNode); + } + // show tree if (root != null) { JTree tree = new JTree(root); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |