flora-development Mailing List for Flora-2
Brought to you by:
kifer
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
(10) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(2) |
Oct
(1) |
Nov
|
Dec
|
2004 |
Jan
(1) |
Feb
(8) |
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2005 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2006 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
(2) |
2007 |
Jan
(19) |
Feb
(3) |
Mar
|
Apr
(7) |
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(2) |
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
(10) |
May
(21) |
Jun
(8) |
Jul
(17) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Michael K. <ki...@cs...> - 2015-08-10 03:03:32
|
<html style="direction: ltr;"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <style type="text/css">body p { margin-bottom: 0cm; margin-top: 0pt; } </style> </head> <body style="direction: ltr;" bidimailui-charset-is-forced="true" bgcolor="#FFFFFF" text="#000000"> Yay! Version 1.1 (Loquat) has been officially released!<br> Grab it from <a class="moz-txt-link-freetext" href="http://flora.sourceforge.net/">http://flora.sourceforge.net/</a>, as usual.<br> The release notes are at <a class="moz-txt-link-freetext" href="http://flora.sourceforge.net/release_notes.html">http://flora.sourceforge.net/release_notes.html</a>.<br> <br> Have fun!<br> </body> </html> |
From: Michael K. <ki...@cs...> - 2014-07-02 06:14:27
|
<html style="direction: ltr;"> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <style type="text/css">body p { margin-bottom: 0cm; margin-top: 0pt; } </style> </head> <body style="direction: ltr;" bidimailui-detected-decoding-type="latin-charset" bgcolor="#FFFFFF" text="#000000"> Happy to announce the 1.0 release: <a class="moz-txt-link-freetext" href="http://flora.sourceforge.net/">http://flora.sourceforge.net/</a><br> <br> --<br> <br> regards,<br> --- michael<br> <br> <br> </body> </html> |
From: Blyth A J C (AT) <ajc...@gl...> - 2012-09-02 20:19:53
|
Dear All Has any one get the Flora Visualisation tool to run on a MAC running OS X? Andrew |
From: Michael K. <ki...@cs...> - 2009-11-06 23:21:46
|
looks like a maintenance bug in Flora. You can fix it by replacing flNoTrace in flrshell.P with '_notrace' everywhere On Fri, 06 Nov 2009 12:27:33 +0100 Markus Schatten <mar...@fo...> wrote: > Hello, > > whenever I trace some program and then enter _notrace XSB exits > abnormally. Here's a sample session: > > ----------------- > > flora2 ?- insert{ a[ b->c ] }. > [flrdbop loaded] > [flrdynrule loaded] > > Elapsed time 0.0040 seconds > > Yes > > flora2 ?- _trace. > [Preprocessing /home/mschatte/myPackages/flora2/debugger/static_data.dat] > [FLORA: Static debugger data > loaded] > [Preprocessing /home/mschatte/myPackages/flora2/debugger/dynamic_data.dat] > [FLORA: Dynamic debugger data loaded for module > main] > > Elapsed time 0.0160 seconds > > Yes > > flora2 ?- a[ ?x->?y ]. > [ load module subsumes ] > (7) Call: [ load module flrdecode ] > a[?_h10419 -> ?_h10431] ? > (8) Call: (Checking against base facts) a[?_h10419 -> ?_h10431] ? > (8) Exit: (Checking against base facts) a[b -> c] ? > (8) Redo: (Checking against base facts) a[b -> c] ? > (8) Fail: (Checking against base facts) a[?_h10419 -> ?_h10431] ? > (9) Call: (Trying to derive by inheritance) a:?_h11696 ? > [ load module flrdatatype ] > (9) Exit: (Trying to derive by inheritance) a:(_symbol; ?_h11949) ? > (10) Call: (Trying to derive by inheritance) > (_symbol; ?_h11949)[?_h10419 *-> ?_h10431] ? > (10) Fail: (Trying to derive by inheritance) > (_symbol; ?_h11949)[?_h10419 *-> ?_h10431] ? > (9) Redo: (Trying to derive by inheritance) > a:(_symbol; ?_h11949) ? > (9) Exit: (Trying to derive by inheritance) a:(?_h11948; > _symbol) ? > (11) Call: (Trying to derive by inheritance) (?_h11948; > _symbol)[?_h10419 *-> ?_h10431] ? > (11) Fail: (Trying to derive by inheritance) (?_h11948; > _symbol)[?_h10419 *-> ?_h10431] ? > (9) Redo: (Trying to derive by inheritance) a:(?_h11948; > _symbol) ? > (9) Exit: (Trying to derive by inheritance) > a:_symbol ? > (12) Call: (Trying to derive by inheritance) _symbol[?_h10419 > *-> ?_h10431] ? > (12) Fail: (Trying to derive by inheritance) _symbol[?_h10419 > *-> ?_h10431] ? > (9) Redo: (Trying to derive by inheritance) > a:_symbol ? > (9) Exit: (Trying to derive by inheritance) > a:_object ? > (13) Call: (Trying to derive by inheritance) _object[?_h10419 > *-> ?_h10431] ? > (13) Fail: (Trying to derive by inheritance) _object[?_h10419 > *-> ?_h10431] ? > (9) Redo: (Trying to derive by inheritance) > a:_object ? > (9) Fail: (Trying to derive by inheritance) > a:?_h11696 ? > (7) Exit: a[b -> > c] ? > (7) Redo: a[b -> > c] ? > (7) Fail: a[?_h10419 > -> ?_h10431] ? > (1) Redo: call_goal_cut_trans(('_$_ > $_flora''silent_equal'(?_h10908,main)@_prolog, ${a[?_h10419 > -> ?_h10431]}),('_$_$_flora''silent_equal'(?_h10908,main)@_prolog, > ${a[?_h10419 > -> ?_h10431]}),1092)@_prolog ? > (1) Fail: call_goal_cut_trans(('_$_ > $_flora''silent_equal'(?_h10908,main)@_prolog, ${a[?_h10419 > -> ?_h10431]}),?_h11073,1092)@_prolog ? > > ?x = b > ?y = c > > 1 solution(s) in 0.0160 seconds > > Yes > > flora2 ?- _notrace. > (7) Call: > flora_shell_loop_handler(error(existence_error(procedure,:(usermod,_notrace / 0)@_prolog)@_prolog,[],[[155790776, 155793856, 155793784, 156237536, 156237608, 155850912, 155850912, 155850912, 155890816, 156151488, 156151104, 155890816, 155787712, 156124232, 155795192, 155890816, 155787712]])@_prolog)@_prolog ? > (8) Call: (9) Call: see(0)@_prolog ? > (9) Exit: see(0)@_prolog ? > (10) Call: (11) Call: Throw failed because no catcher for throw > Exiting XSB abnormally... > > ----------------- > > Am I doing something wrong? > > All the best, > > Markus > > -- > Markus Schatten, MSc > University of Zagreb > Faculty of Organization and Informatics > Pavlinska 2, 42000 Varazdin, Croatia > http://www.foi.hr > http://autopoiesis.foi.hr > > > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Flora-development mailing list > Flo...@li... > https://lists.sourceforge.net/lists/listinfo/flora-development > |
From: Markus S. <mar...@fo...> - 2009-11-06 11:28:05
|
Hello, whenever I trace some program and then enter _notrace XSB exits abnormally. Here's a sample session: ----------------- flora2 ?- insert{ a[ b->c ] }. [flrdbop loaded] [flrdynrule loaded] Elapsed time 0.0040 seconds Yes flora2 ?- _trace. [Preprocessing /home/mschatte/myPackages/flora2/debugger/static_data.dat] [FLORA: Static debugger data loaded] [Preprocessing /home/mschatte/myPackages/flora2/debugger/dynamic_data.dat] [FLORA: Dynamic debugger data loaded for module main] Elapsed time 0.0160 seconds Yes flora2 ?- a[ ?x->?y ]. [ load module subsumes ] (7) Call: [ load module flrdecode ] a[?_h10419 -> ?_h10431] ? (8) Call: (Checking against base facts) a[?_h10419 -> ?_h10431] ? (8) Exit: (Checking against base facts) a[b -> c] ? (8) Redo: (Checking against base facts) a[b -> c] ? (8) Fail: (Checking against base facts) a[?_h10419 -> ?_h10431] ? (9) Call: (Trying to derive by inheritance) a:?_h11696 ? [ load module flrdatatype ] (9) Exit: (Trying to derive by inheritance) a:(_symbol; ?_h11949) ? (10) Call: (Trying to derive by inheritance) (_symbol; ?_h11949)[?_h10419 *-> ?_h10431] ? (10) Fail: (Trying to derive by inheritance) (_symbol; ?_h11949)[?_h10419 *-> ?_h10431] ? (9) Redo: (Trying to derive by inheritance) a:(_symbol; ?_h11949) ? (9) Exit: (Trying to derive by inheritance) a:(?_h11948; _symbol) ? (11) Call: (Trying to derive by inheritance) (?_h11948; _symbol)[?_h10419 *-> ?_h10431] ? (11) Fail: (Trying to derive by inheritance) (?_h11948; _symbol)[?_h10419 *-> ?_h10431] ? (9) Redo: (Trying to derive by inheritance) a:(?_h11948; _symbol) ? (9) Exit: (Trying to derive by inheritance) a:_symbol ? (12) Call: (Trying to derive by inheritance) _symbol[?_h10419 *-> ?_h10431] ? (12) Fail: (Trying to derive by inheritance) _symbol[?_h10419 *-> ?_h10431] ? (9) Redo: (Trying to derive by inheritance) a:_symbol ? (9) Exit: (Trying to derive by inheritance) a:_object ? (13) Call: (Trying to derive by inheritance) _object[?_h10419 *-> ?_h10431] ? (13) Fail: (Trying to derive by inheritance) _object[?_h10419 *-> ?_h10431] ? (9) Redo: (Trying to derive by inheritance) a:_object ? (9) Fail: (Trying to derive by inheritance) a:?_h11696 ? (7) Exit: a[b -> c] ? (7) Redo: a[b -> c] ? (7) Fail: a[?_h10419 -> ?_h10431] ? (1) Redo: call_goal_cut_trans(('_$_ $_flora''silent_equal'(?_h10908,main)@_prolog, ${a[?_h10419 -> ?_h10431]}),('_$_$_flora''silent_equal'(?_h10908,main)@_prolog, ${a[?_h10419 -> ?_h10431]}),1092)@_prolog ? (1) Fail: call_goal_cut_trans(('_$_ $_flora''silent_equal'(?_h10908,main)@_prolog, ${a[?_h10419 -> ?_h10431]}),?_h11073,1092)@_prolog ? ?x = b ?y = c 1 solution(s) in 0.0160 seconds Yes flora2 ?- _notrace. (7) Call: flora_shell_loop_handler(error(existence_error(procedure,:(usermod,_notrace / 0)@_prolog)@_prolog,[],[[155790776, 155793856, 155793784, 156237536, 156237608, 155850912, 155850912, 155850912, 155890816, 156151488, 156151104, 155890816, 155787712, 156124232, 155795192, 155890816, 155787712]])@_prolog)@_prolog ? (8) Call: (9) Call: see(0)@_prolog ? (9) Exit: see(0)@_prolog ? (10) Call: (11) Call: Throw failed because no catcher for throw Exiting XSB abnormally... ----------------- Am I doing something wrong? All the best, Markus -- Markus Schatten, MSc University of Zagreb Faculty of Organization and Informatics Pavlinska 2, 42000 Varazdin, Croatia http://www.foi.hr http://autopoiesis.foi.hr |
From: Michael K. <ki...@cs...> - 2009-11-06 04:27:16
|
Didier Ptitjes <ptitjes@fr...> - 2009-01-28 14:22 wrote: > > https://sourceforge.net/mailarchive/forum.php?thread_name=49805A54.6000700%40free.fr&forum_name=flora-development Sorry Didier, I got somehow unsubscribed and missed your question. I now tried your program, and it works for me. There must be some kind of installation problem-- either with Flora or (more likely) with XSB's ODBC driver. |
From: Didier \Ptitjes\ <pt...@fr...> - 2009-01-28 14:22:20
|
Hi list! Here is a little program for which I've got problems with persistent modules from Flora CVS. ?- [persistentmodules>>pm]. ?- newmodule{contacts}. /* ?- insert{ _#:Contact[ firstname -> "John", lastname -> "Doe", nickname -> "dj" ]@contacts }. ?- insert{ _#:Contact[ firstname -> "Jo", lastname -> "Buzz", nickname -> "buzz", number("mobile") -> "1234567890", number("home") -> "0987654321", organization -> { _#[name -> "MyCorp"] } ]@contacts }. */ ?- insert{ p(a)@contacts }. Here is flora's output : didier@didier ~/travail/dev/gits/ologicd.git/src/flora $ flora [xsb_configuration loaded] [sysinitrc loaded] XSB Version 3.1 (Incognito) of August 10, 2007 [i486-pc-linux-gnu; mode: profile; engine: multi-threading; gc: indirection; scheduling: local] Evaluating command line goal: | ?- asserta(library_directory('/usr/lib/flora2')). [flora2]. flora_shell. | ?- yes | ?- [flora2 loaded] [floraInstallMode loaded] /home/didier/travail/dev/gits/ologicd.git/src /home/didier/travail/dev/gits/ologicd.git /home/didier/travail/dev/gits /home/didier/travail/dev /home/didier/travail /home/didier /home /usr/lib/flora2 yes | ?- [flrversion loaded] [p2h_config loaded] [prolog2hilog loaded] [flrshell loaded] [flrundefhook loaded] [flrutils loaded] [flranswer loaded] [flrload loaded] [flrdisplay loaded] [flrimportedcalls loaded] [trailer$eq=none+inh=flogic+cus=none_main loaded] [patch_main loaded] FLORA-2 Version 0.96devel (Callistephus Daintiness) of September 2008 Type `_help.' to display help. Type `_demo(demoName).' to run a demo. flora2 ?- flora2 ?- [test] . [FLORA: Loading /home/didier/travail/dev/gits/ologicd.git/src/flora/test.flr into module main] [test_main loaded] [Preprocessing /usr/lib/flora2/genincludes/flropposes_data.flh] [/usr/lib/flora2/genincludes/flropposes_data.flh dynamically loaded, cpu time used: 0.1210 seconds] [flrdbop loaded] [flrdynrule loaded] [flrdynrule loaded] Warning: replacing previous verify_attribute_handler for module usermod. [FLORA: Dynamically loading /home/didier/travail/dev/gits/ologicd.git/src/flora/test.fld into module main] [Preprocessing /home/didier/travail/dev/gits/ologicd.git/src/flora/test.fld] [FLORA: Done! CPU time used: 0.1340 seconds] [FLORA: Loading /usr/lib/flora2/pkgs/persistentmodules.flr into module pm] [persistentmodules_pm loaded] [Preprocessing /usr/lib/flora2/genincludes/flropposes_data.flh] [/usr/lib/flora2/genincludes/flropposes_data.flh dynamically loaded, cpu time used: 0.1560 seconds] [flrexport loaded] [flrclause loaded] [FLORA: Dynamically loading /usr/lib/flora2/pkgs/persistentmodules.fld into module pm] [Preprocessing /usr/lib/flora2/pkgs/persistentmodules.fld] [FLORA: Done! CPU time used: 0.1640 seconds] [flrpm loaded] Elapsed time 0.1670 seconds Yes Elapsed time 0.1720 seconds Yes [trailer$eq=none+inh=flogic+cus=none_contacts loaded] [patch_contacts loaded] Elapsed time 0.1860 seconds Yes Elapsed time 0.1870 seconds Yes [dbdrivers loaded] [db_interface loaded] [driver_manager loaded] [odbc loaded] [odbc_driver_config loaded] [odbc_driver loaded] Removing incomplete tables... ++Abort[FLORA]> Attempt to insert into database the fact p@contacts in module contacts failed because of the following: [SQLite]2 values for 1 columns (1) Forward Continuation... ... machine:xsb_backtrace/1 ... flrpm:db_DML_sql_internal/6 ... flrpm:insert_hook_internal/1 ... standard:call/1 flora2 ?- Now if I uncomment the commented part, I get the following error : Removing incomplete tables... ++Abort[FLORA]> Data source error (XSB_DBI_000): [SQLite]near "newoid3": syntax error (1) Forward Continuation... ... machine:xsb_backtrace/1 ... standard:catch/3 ... flrpm:insert_hook_internal/1 ... standard:call/1 Thanks for your help. Didier. |
From: <ki...@cs...> - 2007-04-24 14:02:46
|
"Markus Schatten" <mar...@fo...> wrote: > > > There are significant changes in the way molecules are written (for > > instance, no more ->> and =>>, but there are cardinality constraints) and > > the way system and prolog modules are specified. > > Some other changes as well. > > This shouldn't be a huge problem since ->> and =>> aren't used in rp. Good. But -> and => can now be multivalued. Hope this doesn't present problems. > Cardinality constraints sound interesting. Is there any documentation > about this changes available? Yes, it is in the manual in the CVS. best regards --michael > > > > When do you plan a new release? > > > Maybe in a month. > > Looking forward to it :-) > > Best regards, > > -- > Markus Schatten, dipl. inf. > e-mail: mar...@fo... > Faculty of Organization and Informatics > Varazdin, Croatia > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Flora-development mailing list > Flo...@li... > https://lists.sourceforge.net/lists/listinfo/flora-development > |
From: Markus S. <mar...@fo...> - 2007-04-20 13:22:53
|
-----Original Message----- From: "Michael Kifer"<ki...@cs...> Sent: 20.4.07 1:53:50 To: "msc...@fo..."<msc...@fo...> Cc: "Flo...@li..."<Flo...@li...> Subject: Re: [Flora-development] Reasonable Python - FLORA-2 Pythonintegration > There are significant changes in the way >molecules are written (for > instance, no more ->> and =>>, but >there are cardinality constraints) and > the way system and prolog modules are >specified. > Some other changes as well. This shouldn't be a huge problem since ->> and =>> aren't used in rp. Cardinality constraints sound interesting. Is there any documentation about this changes available? > > When do you plan a new release? > Maybe in a month. Looking forward to it :-) Best regards, -- Markus Schatten, dipl. inf. e-mail: mar...@fo... Faculty of Organization and Informatics Varazdin, Croatia |
From: <ki...@cs...> - 2007-04-19 23:56:09
|
> Quoting Michael Kifer <ki...@cs...>: >=20 > > > > Great! I'll take a look. Unfortunately I am not a Python programmer, but > > hope others on this list would be able to take advantage of it. > > More documentation would be very helpful. > > >=20 > Of course, I'll work on that ;-) >=20 > > By the way, which version of Flora-2 did you use? The 2-year old one th= at > > was released or the current one in CVS? There are significant differenc= es > > in the syntax. >=20 > Well, I used the old one. What kind of syntax differences do you mean? > Reasonable Python depends on if the way FLORA-2 loads into XSB (e.g. > asserta(library_directory( flora2_home ). [flora2]. bootstrap_flora.), th= en > flora_query of course and the way F-molecules are written in FLORA-2 synt= ax > (since Python objects are translated to F-molecules). If there has been c= hange > then I'll just have to change that in my code. There are significant changes in the way molecules are written (for instance, no more ->> and =3D>>, but there are cardinality constraints) and the way system and prolog modules are specified. Some other changes as well. > When do you plan a new release? Maybe in a month. regards --michael=20=20 > Best regrards >=20 > -- > Markus Schatten, dipl. inf. > e-mail: mar...@fo... > Faculty of Organization and Infromatics > Vara=BEdin, Croatia >=20 |
From: <msc...@fo...> - 2007-04-19 21:56:33
|
Quoting Michael Kifer <ki...@cs...>: > > Great! I'll take a look. Unfortunately I am not a Python programmer, but > hope others on this list would be able to take advantage of it. > More documentation would be very helpful. > Of course, I'll work on that ;-) > By the way, which version of Flora-2 did you use? The 2-year old one that > was released or the current one in CVS? There are significant differences > in the syntax. Well, I used the old one. What kind of syntax differences do you mean? Reasonable Python depends on if the way FLORA-2 loads into XSB (e.g. asserta(library_directory( flora2_home ). [flora2]. bootstrap_flora.), then flora_query of course and the way F-molecules are written in FLORA-2 syntax (since Python objects are translated to F-molecules). If there has been change then I'll just have to change that in my code. When do you plan a new release? Best regrards -- Markus Schatten, dipl. inf. e-mail: mar...@fo... Faculty of Organization and Infromatics Varadin, Croatia -- Ova poruka poslana je s CARNetovog webmail sustava --- http://webmail.carnet.hr/ --- |
From: <ki...@cs...> - 2007-04-19 20:50:16
|
Great! I'll take a look. Unfortunately I am not a Python programmer, but hope others on this list would be able to take advantage of it. More documentation would be very helpful. By the way, which version of Flora-2 did you use? The 2-year old one that was released or the current one in CVS? There are significant differences in the syntax. best regards --michael=20=20 > Dear sirs, >=20 > I was able to develop the FLORA-2 - Python interface which I allready pos= ted > about on this list. I started a project on Source Forge under the name > Reasonable Python (http://reasonablepy.sourceforge.net) and released my f= irst > (alfa) release (LGPL). >=20 > Just wanted to inform you about this development. Further development sho= uld > include network knowledge-base access and of course documentation. >=20 >=20 > Best regards, >=20 > -- > Markus Schatten, dipl. inf. > e-mail: mar...@fo... > Faculty of Organization and Informatics > Vara=BEdin, Croatia >=20 >=20 > --=20 > Ova poruka poslana je s CARNetovog webmail sustava > --- http://webmail.carnet.hr/ --- >=20 |
From: <msc...@fo...> - 2007-04-19 17:44:24
|
Dear sirs, I was able to develop the FLORA-2 - Python interface which I allready posted about on this list. I started a project on Source Forge under the name Reasonable Python (http://reasonablepy.sourceforge.net) and released my first (alfa) release (LGPL). Just wanted to inform you about this development. Further development should include network knowledge-base access and of course documentation. Best regards, -- Markus Schatten, dipl. inf. e-mail: mar...@fo... Faculty of Organization and Informatics Varadin, Croatia -- Ova poruka poslana je s CARNetovog webmail sustava --- http://webmail.carnet.hr/ --- |
From: Markus S. <msc...@fo...> - 2007-01-18 17:44:37
|
Dear Michael, On Thu, 18 Jan 2007, Michael Kifer wrote: > Hi Markus, > > This is very interesting. I need some time to wrap my mind around it > because of my lack of knowledge of Python. I'm sorry for not taking this into consideration. I'll try to explain further ;-) > >> For example lets say we have a python class like: >> >> class example: >> def __init__( self, a=1, b=[1,2,3] ): by specifying a=1, and b=[1,2,3] we say that the default values of the a and b attributes in class example are 1 and [1,2,3] respectively. >> self.a = a >> self.b = b >> def some_func( self ): >> print "Hello from example" >> >> to create an instance we use: >> >> ex = example() So ex = example() gives us the same like ex = example( 1, [1,2,3] ). >> >> now the power of Python lies in: >> >>>>> dir(ex) >> ['__doc__', '__init__', '__module__', 'a', 'b', 'some_func'] >>>>> ex.__dict__ >> {'a': 1, 'b': [1, 2, 3]} >>>>> > > Forgive my naive question, but what exactly does the above mean? > Nothing to forgive, this was my error. It's pretty simple: dir(ex) gives us all the names of objects which are contained inside 'ex', in our example: __doc__ <- the documentation string of the object (every object in Python has automaticly a doc-string) __init__ <- the constructor method __module__ <- in which module is this object a and b <- attributes defined in the class some_func <- method defined in the class ex.__dict__ gives us a dictionary (native type in Python; like a mapping) with the names and values of the objects attributes. It basicly means the value of a in ex is 1, the value of b in ex is [1,2,3] (where [1,2,3] is a list; also native type in python). > >> So we can query the internal structure of the 'ex' object. An algorithm I >> allmost finished tries to translate Python objects into F-molecules. >> Basicly I want it to be >> >> ex:example[ a->1, b:list->[1,2,3] ]. >> >> for now since I'm not 100% clear with the idea of using the object's >> methods at all or not. I was thinking of using boolean methods as descibed >> in the manual to have a reference in Flora-2 that a method for a given >> object exists, but I'm still not sure if it would be of any use. >> >> To go further with the concept if we have an object like described before >> and use logical variables like described in the recipes then we can do the >> following: >> >> X = Variable() >> qu = example( X, [1, 2, 3] ) >> >> so we would have a mapping to a F-molecule like >> >> qu:example[ a->X, b:list->[1, 2, 3] ] >> >> Now by using the concept of rules as described in the recipe we could say: >> >> qu << [ ex, [X, 2, 3] ] >> >> No real sense in the rule but I hope you understand the Idea. This could >> then be translated to Flora-2 like: >> >> qu:example[ a->X, b:list->[1, 2, 3] ] :- ex:example[ a->1, b:list->[1, 2, >> 3], [X, 2, 3]. >> >> So you could basicly use the Flora-2 engine to store data objects from >> Python applications and then using the concept of rules and logic >> variables query this objects. >> I also tought of making the data consisent using ZODB which allows easily >> to store Python objects. There's also an idea to make it network ready >> (e.g. to make it possible to run as a knowledge base server which any >> python program can use over the network using Python NetWork Spaces). But >> this is still a little idea in my head ;-) > > Do you need to define a priori which Python objects can be stored on the > Flora side? In the high-level Flora-Java interface one has to decide > beforehand which (Flora) classes and methods are to be reflected on the > Java side (which is a major drawback and involves a preprocessor), but then > everything is automatic. Well since Python has class factories and the (above described) means to query the structure of an object this is not necessary. So objects on the Flora side would be something like generated copies of real Python objects which can easily be reconstructed when back in Python. My idea is the following: if I pass an object from a Python program over the network to a Flora server, first a descriptor is sent (which could be for instance a F-molecule in Flora-2 sintax). The server than creates a dynamic class from the descriptor (through a class factory) which lets him construct objects on behalf of it. Then the real object is sent to the server side. The server side can then manipulate this object since it has a matching class descriptor. This issue was also a problem to me. A pretty big problem is how to use internal methods of a Python object as in Flora-2 as well as in a client-server architecture. There are two ways (as I figured out) to do this: one would be to integrate Flora-2 and Python more closely (e.g. manipulate Flora-2 so it can access Python methods), and the second would be to let the queries (e.g. some_object[ X(1,2,3) -> 4].) be evaluated partly by the Flora-2 engine partly by Python. The first solution could be pretty much work but possible and after all probably much faster than the other. The second would be probably easier to implement but possibly slow and maybe not satisfactory (e.g. there would be some constraints on using such queries for the user). This is why I'm now thinking of letting the methods out until I figure out a better solution. > >> As soon as I have a little bit more usable version of the Python interface >> I'll let you know. If you have any comments, suggestions, critiques etc. >> they are very wellcome since I'm not 100% sure that I'm doing thigs right >> ;-) > > Good. When you will have a more self-contained description of the idea I > would like to see it. Meanwhile I will try to understand the recipes better. As soon as I find some time I'll try to translate the concept. The reciepes just describe how to use logic programming concepts in Python. The most valuable idea there is to introduce the concept of logical variables into an imperative language like Python. I'm not realy satisfied with the concepts of facts and rules described there. But (since Python is weakly typed e.g. types are assigned to variables at runtime) it is pretty easy to assing logical variables to attributes of objects and use such pseudo-objects in queries and rules. Best regards -- Markus Schatten, dipl. inf. e-mail: mar...@fo... http://www.tiaktiv.hr |
From: <ki...@cs...> - 2007-01-18 16:13:58
|
> Dear Michael, > > I'll try to coordinate with Goncalo (seems he run into the same problem I > did). BTW. here's my code: > http://arka.foi.hr/~mschatten/xsb/XSB.NET.v.0.01.zip > I didn't try the code with Mono just on MSVS.NET but if Gonzalo and me are > able to coordinate I'll surely try to make it work with Mono. > > Regarding the Python interface here some basic ideas on how to use Logic > Programming concepts in Python: > http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/303057 > http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/360698 > > My idea is to extend these recipes with F-logic and OO (e.g. use Python > objects as facts, Python objects with some logical variables as their > attributes for queries and rule heads and bodies). Python has very nice > fetaures which let you query the internal structure of an object. In this > manner its straight forward to map Python objects to F-molecules and use > them in the Flora-2 engine. I've written a paper about this concept (for > now only in croatian). As soon as I finish this inteface I'll probably > publish it on some conference. Hi Markus, This is very interesting. I need some time to wrap my mind around it because of my lack of knowledge of Python. > For example lets say we have a python class like: > > class example: > def __init__( self, a=1, b=[1,2,3] ): > self.a = a > self.b = b > def some_func( self ): > print "Hello from example" > > to create an instance we use: > > ex = example() > > now the power of Python lies in: > > >>> dir(ex) > ['__doc__', '__init__', '__module__', 'a', 'b', 'some_func'] > >>> ex.__dict__ > {'a': 1, 'b': [1, 2, 3]} > >>> Forgive my naive question, but what exactly does the above mean? > So we can query the internal structure of the 'ex' object. An algorithm I > allmost finished tries to translate Python objects into F-molecules. > Basicly I want it to be > > ex:example[ a->1, b:list->[1,2,3] ]. > > for now since I'm not 100% clear with the idea of using the object's > methods at all or not. I was thinking of using boolean methods as descibed > in the manual to have a reference in Flora-2 that a method for a given > object exists, but I'm still not sure if it would be of any use. > > To go further with the concept if we have an object like described before > and use logical variables like described in the recipes then we can do the > following: > > X = Variable() > qu = example( X, [1, 2, 3] ) > > so we would have a mapping to a F-molecule like > > qu:example[ a->X, b:list->[1, 2, 3] ] > > Now by using the concept of rules as described in the recipe we could say: > > qu << [ ex, [X, 2, 3] ] > > No real sense in the rule but I hope you understand the Idea. This could > then be translated to Flora-2 like: > > qu:example[ a->X, b:list->[1, 2, 3] ] :- ex:example[ a->1, b:list->[1, 2, > 3], [X, 2, 3]. > > So you could basicly use the Flora-2 engine to store data objects from > Python applications and then using the concept of rules and logic > variables query this objects. > I also tought of making the data consisent using ZODB which allows easily > to store Python objects. There's also an idea to make it network ready > (e.g. to make it possible to run as a knowledge base server which any > python program can use over the network using Python NetWork Spaces). But > this is still a little idea in my head ;-) Do you need to define a priori which Python objects can be stored on the Flora side? In the high-level Flora-Java interface one has to decide beforehand which (Flora) classes and methods are to be reflected on the Java side (which is a major drawback and involves a preprocessor), but then everything is automatic. > As soon as I have a little bit more usable version of the Python interface > I'll let you know. If you have any comments, suggestions, critiques etc. > they are very wellcome since I'm not 100% sure that I'm doing thigs right > ;-) Good. When you will have a more self-contained description of the idea I would like to see it. Meanwhile I will try to understand the recipes better. regards --michael > > Best regards > > -- > Markus Schatten, dipl. inf. > e-mail: mar...@fo... > http://www.tiaktiv.hr > > > On Wed, 17 Jan 2007, Michael Kifer wrote: > > > > > Hi Markus, > > > > It looks very promising. I think it is best if you could coordinate > > with Goncalo on the xsb.dll wrapper. > >> From what he described, it looks like he is using the same model as the > > Interprolog's Java interface, which is very convenient. > > > > Regarding Python, it all looks very interesting. I would like to see a more > > detailed description of how rules can be used from within > > Python. Unfortunately, I am Python-illiterate right now, but would like to > > learn. > > > > You probably know that we now have a high-level interface from Java to > > Flora where one can create Java proxy objects for Flora objects and then > > manipulate them from within Java through get/set style methods. > > This is far from seamless, so I would like to learn more on your design. > > > > Does your code work with Linux through Mono? > > > > > > best regards > > --michael > > > > > >> Dear Michael > >> > >> I'm fully dedicated to OpenSource and have allready added LGPL headers to= > >> > >> my source, so thats no problem. The wrapper is a .NET class library which= > >> > >> exports allmost all functions which are exported in xsb.dll (xsb_query,=20 > >> xsb_init, is_functor etc.). I have also included some examples for using=20 > >> the wrapper in VB.NET, C#.NET (using a simple Prolog program and a simple > >> > >> Flora-2 knowledge base). So it's just an export of the functions provided > >> > >> in xsb.dll (and since Flora-2 uses=20 > >> asserta(library_directory('C:\Flora2\dir')). and [flora2].=20 > >> bootrstrap_flora. I used xsb_command_string and xsb_query_string to load > >> Flora-2). So far for the .NET wrapper. The Python wrapper I'm now working > >> > >> on should make it more intuitive for Python programmers to use Flora-2 as > >> > >> a knowledge base engine (e.g. translation of Python objects directly into > >> Flora-2 F-molecules, using of queries and rules inside Python etc.) If you > >> want to take a look at the code be it for the .NET wrapper or for the > >> Python interface (done so far) just tell me where to send it :-) > >> > >> Best regards > >> > >> -- > >> Markus Schatten, dipl. inf. > >> e-mail: mar...@fo... > >> http://www.tiaktiv.hr > >> > >> > >> On Tue, 16 Jan 2007, Michael Kifer wrote: > >> > >>> > >>> Dear Markus, > >>> Thank you very much for the contribution. > >>> To be included in either XSB or Flora-2, your files have to be released > >>> under LGPL. > >>> > >>> I didn't quite understand what the wrapper around xsb.dll does. > >>> Is it exporting things like xsb_query to .NET languages > >>> (in this case it should be really part of XSB)? > >>> > >>> Or is it an object-oriented interface, which can talk to Flora-2 directly= > >> ? > >>> You alluded to this in connection with the Python wrapper, which is very > >>> interesting. > >>> > >>> > >>> =09regards > >>> =09 --michael > >>> > >>>> Dear sirs, > >>>> > >>>> my name is Markus Schatten, I'm an assistant on the Faculty of Organizat= > >> ion > >>>> and Informatics in Vara=C5=BEdin, Croatia in Databases and Formal Metho= > >> ds. One of > >>>> my professors (dr.sc. Mirko =C4?ubrilo) asked me to develop a XSB and F= > >> lora-2 > >>>> dll-wrapper for MS Visual Studio.NET, which I have developed using the > >>>> C-binding of XSB. I'm not a .NET professional so there are probably some= > >> bugs > >>>> in the solution, but it works fine, and since I'm not sure if I will hav= > >> e > >>>> time to develop it further I'd like to contribute it to your projects, o= > >> f > >>>> course if there is interest in such a contribution. > >>>> I've created a C# class which wraps around the xsb.dll and makes allmost= > >> all > >>>> functions exported in the dll available to all other .NET languages. I'v= > >> e > >>>> also implemented two methods for converting prolog terms to strings and > >>>> printing of terms (allmost direct translation of printpterm in cmain2.c)= > >> =2E > >>>> Since my primary programming language is Python I also created a wrapper= > >> for > >>>> Python (using SWIG http://www.swig.org) which could be used to wrap XSB = > >> and > >>>> Flora-2 to all the other scripting languages supported by SWIG. The Pyth= > >> on > >>>> wrapper is not fully implemented by now since I'd like to make the inter= > >> face > >>>> more intuitive to Python programmers and will probably try to combine th= > >> e > >>>> power of Flora-2 and ZODB (http://www.zope.org/Products/ZODB3.3). > >>>> So if there's any interest I'll be very happy if I can contribute to you= > >> r > >>>> projects. > >>>> > >>>> Best regards > >>>> > >>>> -- > >>>> Markus Schatten, dipl. inf. > >>>> Faculty of Organization and Informatics > >>>> Vara=C5=BEdin, Croatia > >>>> e-mail: mar...@fo... > >>>> http://www.foi.hr > >>>> > >>>> ------------------------------------------------------------------------= > >> - > >>>> Take Surveys. Earn Cash. Influence the Future of IT > >>>> Join SourceForge.net's Techsay panel and you'll get the chance to share = > >> your > >>>> opinions on IT & business topics through brief surveys - and earn cash > >>>> http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID= > >> =3DDEVDEV > >>>> _______________________________________________ > >>>> Flora-development mailing list > >>>> Flo...@li... > >>>> https://lists.sourceforge.net/lists/listinfo/flora-development > > > |
From: <gon...@gm...> - 2007-01-18 09:05:10
|
Dear Markus, I'll be happy to coordinate my project with yours. In fact, since I'm already hosting a version control server and a project management page, I'll create an account so you can also commit code and edit wiki pages on the project. I'll be adding LGPL headers to my source code as well and we can then work out how to merge our examples and source. It seems like an excellent idea. Please send me an individual mail or other contact so we can set up details of your account like username and password. Regarding the problem I'm facing... I finally managed to track it down. I haven't yet tried it on VB.NET, but XSB output can be silenced if you pass it the command-line options "-n --quietload". However, on VC# it's a bit more tricky, but I think I figured it out. Apparently it has to do with loading the XSB dll and the unmanaged code debugger. It seems that there are different behaviours in the .NET debugger for managed vs. unmanaged code. In C++, since it's more easy to deal with unmanaged code, the debugger always has this option turned on. On C# it appears it's off by default. On Visual Studio 2005, you solve this by just going to the Project Settings -> Debug and checking "Enable unmanaged code debugger". However, on the VC# Express edition this option isn't available! I'm yet to understand exactly why this happens, since this option should be for stepping out through unmanaged code and not for when you just want to debug managed DLLs, but apparently it influences how XSB's dll is loaded... I'll post some messages around Microsoft's newsgroups to see if I can get to grips with some way to deal with this. For now, Visual Studio 2005 users will have no problem debugging it. Best regards, Gon=E7alo On 1/18/07, Markus Schatten <msc...@fo...> wrote: > Dear Gon=E7alo, > > I had a similar problem (Memory Access Violation error) when I tried to > run xsb_init from a windows application (VB.NET) without a console > window. After hours and hours of searching without any success I started = a > long try-fail approach. After playing with the code I figured out that > xsb_init tries to write some messages to standard output (console) and > .NET didn't allow that if there was no console present. After starting th= e > app from console all errors where gone. I don't know if this fixes your > problem but I hope it helps. > > I wanted to ask you if you were maybe interested in coordinating our two > projects to create a wrapper for XSB and Flora-2? I took a look at your > code, and since you took a different approach (I created a C# Class > Library which imports functions exported in xsb.dll) and I think your one > is more intuitive for .NET programmers I propose I change my examples in > VB.NET and C# to use your interface and add them to the wrapper. Maybe it > would be a good idea to create a more intuitive way of using Flora-2 from > .NET (not through flora_query/4 etc. but through an interface like the on= e > you created for XSB). So what do you say? > > Best regards > > -- > Markus Schatten, dipl. inf. > e-mail: mar...@fo... > http://www.tiaktiv.hr > > > On Wed, 17 Jan 2007, Gon=E7alo Lopes wrote: > > > Dear all, > > > > Now for the single issue with XSBDotNet so far. Apparently, when > > running a debug session of a XSBDotNet application in Visual Studio C# > > Express, there is a memory access violation when calling xsb_init. I > > don't know why this happens, but it is very specific, in that if you > > run the executable there is no problem, if running the Visual C++ > > Express debugger things also work fine. > > > > I don't understand why it would crash specifically with this debugger > > environment, but maybe it has something to do with the C# debugger > > changing specific parameters that influence some behaviour on the XSB > > side, causing it to crash (i.e. changing some stack sizes). > > > > I'm sorry for the technical blowout, but I can't seem to workaround > > this very specific issue. Otherwise, all XSBDotNet applications work > > fine on every environment. > > > > Best regards, > > > > Gon=E7alo > > > > > > On 1/17/07, Gon=E7alo Lopes <gon...@gm...> wrote: > >> Dear Markus, David et al, > >> > >> It's great to find growing support and interest on a .NET interface. > >> I've set up a management page for my current source code at > >> http://articaserv.ath.cx/XSBDotNet. The SVN code can be offloaded from > >> the repository using any SVN client at > >> svn://articaserv.ath.cx/XSBDotNet. I can also make a binary release > >> available to those who just want to try it out "out-of-the-box". I'll > >> definitely work on proper documentation and usually I try to use a > >> unit testing methodology. > >> > >> So far, all the tests I've made have been successful, but there are > >> bound to be issues, especially where the multithreaded engine is > >> concerned. I'll post one of these issues in the following e-mail. > >> Right now, I'll just post two small code snippets of what XSBDotNet > >> offers so far for the .NET programmer (in C#): > >> > >> static void Main(string[] args) > >> { > >> XSBPrologEngine engine =3D XSBPrologEngine.Instance; > >> engine.Command("consult(basics)."); > >> QueryHandle handle =3D engine.Query("member(X,[1,2,3])."); > >> foreach (PrologAnswer answer in handle) > >> { > >> PrologTerm groundedTerm =3D answer.QueryTerm; > >> System.Console.Out.WriteLine( > >> "Answer: {0}", > >> groundedTerm.GetFunctorArgument(1).GetIntValue() > >> ); > >> } > >> } > >> > >> As you can see, the PrologEngine instance is a singleton, since for > >> now you can only call xsb_init once. There is support for commands and > >> queries, supporting both strings and PrologTerms built from C#. The > >> result from a query is in fact an enumeration of all the possible > >> answers, containing both the terms from reg1 and reg2. At each step of > >> the foreach cycle, a backtrack is issued and a new answer, if any, is > >> produced. It is also possible to terminate the enumeration at any > >> given time by just closing the handle. > >> > >> Now a small example of defining a C# method to run as a XSB predicate: > >> > >> static bool HelloFromDotNet(PrologTerm[] arguments) > >> { > >> if (arguments.Length !=3D 0) > >> { > >> arguments[0].BindAtom("hello"); > >> return true; > >> } > >> else return false; > >> } > >> > >> static void Main(string[] args) > >> { > >> XSBPrologEngine engine =3D XSBPrologEngine.Instance; > >> engine.RegisterManagedPredicate("hellodotnet", HelloFromDo= tNet); > >> QueryHandle hello =3D engine.Query("managed(hellodotnet(X)= )."); > >> foreach (PrologAnswer answer in hello) > >> { > >> System.Console.Out.WriteLine( > >> "Echo: {0}", > >> answer.QueryTerm.GetFunctorArgument(1).GetAtomName= () > >> ); > >> } > >> } > >> > >> As you see, the only requirement for the C# method is that it returns > >> bool and receives an array of PrologTerm representing the arguments of > >> the goal. Then, it's only necessary to register the function with the > >> XSBPrologEngine, passing it the name of the Prolog predicate being > >> implemented by the function. > >> > >> engine.RegisterManagedPredicate("hellodotnet", HelloFromDotNet); > >> > >> After that, the method can be called from XSB by use of the managed/1 > >> predicate, which receives a goal to execute inside .NET framework: > >> > >> QueryHandle hello =3D engine.Query("managed(hellodotnet(X))."); > >> > >> It is of course admissible to "inline" the predicate with something li= ke: > >> > >> hellodotnet(X) :- managed(hellodotnet(X)). > >> > >> for greater declarativity (there are some other solutions to go around > >> this, but I aimed for implementation simplicity first). > >> > >> That's it for now. > >> > >> Best regards, > >> > >> Gon=E7alo > >> > >> > >> On 1/17/07, David Warren <wa...@cs...> wrote: > >>> Markus and Gon=E7alo (et al.), > >>> > >>> I really appreciate your willingness to contribute to the XSB effort. > >>> I have essentially no knowledge of .NET, so we'll have to depend on > >>> you two. And it's good that there are two of you with knowledge and > >>> interest to determine the best interface. > >>> > >>> One important thing to keep in mind is that XSB, and the environments > >>> in which it runs, are both evolving. So code that works today may no= t > >>> work tomorrow. The best solution is to make the code transparent and > >>> to incorporate tests of it somehow into the XSB testsuite. Then > >>> changes that affect your code can be caught early and they (or your > >>> code) can be fixed before problems accumulate. We will have to think > >>> about how to include your subsystem in the XSB system. We don't like > >>> to distribute broken code, which means we will need to find a way to > >>> ensure that it stays up-to-date. > >>> > >>> Of course, good documentation is also a requirement :-). > >>> > >>> Good luck and keep us posted on your progress, > >>> -David > >>> > >>> ---------------------------------------------------------------------= ---- > >>> Take Surveys. Earn Cash. Influence the Future of IT > >>> Join SourceForge.net's Techsay panel and you'll get the chance to sha= re your > >>> opinions on IT & business topics through brief surveys - and earn cas= h > >>> http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CI= D=3DDEVDEV > >>> _______________________________________________ > >>> Xsb-development mailing list > >>> Xsb...@li... > >>> https://lists.sourceforge.net/lists/listinfo/xsb-development > >>> > >> > > > > -----------------------------------------------------------------------= -- > > Take Surveys. Earn Cash. Influence the Future of IT > > Join SourceForge.net's Techsay panel and you'll get the chance to share= your > > opinions on IT & business topics through brief surveys - and earn cash > > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID= =3DDEVDEV > > _______________________________________________ > > Flora-development mailing list > > Flo...@li... > > https://lists.sourceforge.net/lists/listinfo/flora-development > > > |
From: Markus S. <msc...@fo...> - 2007-01-18 00:50:02
|
Dear Gon=E7alo, I had a similar problem (Memory Access Violation error) when I tried to=20 run xsb_init from a windows application (VB.NET) without a console=20 window. After hours and hours of searching without any success I started a= =20 long try-fail approach. After playing with the code I figured out that=20 xsb_init tries to write some messages to standard output (console) and=20 =2ENET didn't allow that if there was no console present. After starting th= e=20 app from console all errors where gone. I don't know if this fixes your=20 problem but I hope it helps. I wanted to ask you if you were maybe interested in coordinating our two=20 projects to create a wrapper for XSB and Flora-2? I took a look at your=20 code, and since you took a different approach (I created a C# Class=20 Library which imports functions exported in xsb.dll) and I think your one= =20 is more intuitive for .NET programmers I propose I change my examples in=20 VB.NET and C# to use your interface and add them to the wrapper. Maybe it= =20 would be a good idea to create a more intuitive way of using Flora-2 from= =20 =2ENET (not through flora_query/4 etc. but through an interface like the on= e=20 you created for XSB). So what do you say? Best regards -- Markus Schatten, dipl. inf. e-mail: mar...@fo... http://www.tiaktiv.hr On Wed, 17 Jan 2007, Gon=E7alo Lopes wrote: > Dear all, > > Now for the single issue with XSBDotNet so far. Apparently, when > running a debug session of a XSBDotNet application in Visual Studio C# > Express, there is a memory access violation when calling xsb_init. I > don't know why this happens, but it is very specific, in that if you > run the executable there is no problem, if running the Visual C++ > Express debugger things also work fine. > > I don't understand why it would crash specifically with this debugger > environment, but maybe it has something to do with the C# debugger > changing specific parameters that influence some behaviour on the XSB > side, causing it to crash (i.e. changing some stack sizes). > > I'm sorry for the technical blowout, but I can't seem to workaround > this very specific issue. Otherwise, all XSBDotNet applications work > fine on every environment. > > Best regards, > > Gon=E7alo > > > On 1/17/07, Gon=E7alo Lopes <gon...@gm...> wrote: >> Dear Markus, David et al, >> >> It's great to find growing support and interest on a .NET interface. >> I've set up a management page for my current source code at >> http://articaserv.ath.cx/XSBDotNet. The SVN code can be offloaded from >> the repository using any SVN client at >> svn://articaserv.ath.cx/XSBDotNet. I can also make a binary release >> available to those who just want to try it out "out-of-the-box". I'll >> definitely work on proper documentation and usually I try to use a >> unit testing methodology. >> >> So far, all the tests I've made have been successful, but there are >> bound to be issues, especially where the multithreaded engine is >> concerned. I'll post one of these issues in the following e-mail. >> Right now, I'll just post two small code snippets of what XSBDotNet >> offers so far for the .NET programmer (in C#): >> >> static void Main(string[] args) >> { >> XSBPrologEngine engine =3D XSBPrologEngine.Instance; >> engine.Command("consult(basics)."); >> QueryHandle handle =3D engine.Query("member(X,[1,2,3])."); >> foreach (PrologAnswer answer in handle) >> { >> PrologTerm groundedTerm =3D answer.QueryTerm; >> System.Console.Out.WriteLine( >> "Answer: {0}", >> groundedTerm.GetFunctorArgument(1).GetIntValue() >> ); >> } >> } >> >> As you can see, the PrologEngine instance is a singleton, since for >> now you can only call xsb_init once. There is support for commands and >> queries, supporting both strings and PrologTerms built from C#. The >> result from a query is in fact an enumeration of all the possible >> answers, containing both the terms from reg1 and reg2. At each step of >> the foreach cycle, a backtrack is issued and a new answer, if any, is >> produced. It is also possible to terminate the enumeration at any >> given time by just closing the handle. >> >> Now a small example of defining a C# method to run as a XSB predicate: >> >> static bool HelloFromDotNet(PrologTerm[] arguments) >> { >> if (arguments.Length !=3D 0) >> { >> arguments[0].BindAtom("hello"); >> return true; >> } >> else return false; >> } >> >> static void Main(string[] args) >> { >> XSBPrologEngine engine =3D XSBPrologEngine.Instance; >> engine.RegisterManagedPredicate("hellodotnet", HelloFromDotN= et); >> QueryHandle hello =3D engine.Query("managed(hellodotnet(X)).= "); >> foreach (PrologAnswer answer in hello) >> { >> System.Console.Out.WriteLine( >> "Echo: {0}", >> answer.QueryTerm.GetFunctorArgument(1).GetAtomName() >> ); >> } >> } >> >> As you see, the only requirement for the C# method is that it returns >> bool and receives an array of PrologTerm representing the arguments of >> the goal. Then, it's only necessary to register the function with the >> XSBPrologEngine, passing it the name of the Prolog predicate being >> implemented by the function. >> >> engine.RegisterManagedPredicate("hellodotnet", HelloFromDotNet); >> >> After that, the method can be called from XSB by use of the managed/1 >> predicate, which receives a goal to execute inside .NET framework: >> >> QueryHandle hello =3D engine.Query("managed(hellodotnet(X))."); >> >> It is of course admissible to "inline" the predicate with something like= : >> >> hellodotnet(X) :- managed(hellodotnet(X)). >> >> for greater declarativity (there are some other solutions to go around >> this, but I aimed for implementation simplicity first). >> >> That's it for now. >> >> Best regards, >> >> Gon=E7alo >> >> >> On 1/17/07, David Warren <wa...@cs...> wrote: >>> Markus and Gon=E7alo (et al.), >>> >>> I really appreciate your willingness to contribute to the XSB effort. >>> I have essentially no knowledge of .NET, so we'll have to depend on >>> you two. And it's good that there are two of you with knowledge and >>> interest to determine the best interface. >>> >>> One important thing to keep in mind is that XSB, and the environments >>> in which it runs, are both evolving. So code that works today may not >>> work tomorrow. The best solution is to make the code transparent and >>> to incorporate tests of it somehow into the XSB testsuite. Then >>> changes that affect your code can be caught early and they (or your >>> code) can be fixed before problems accumulate. We will have to think >>> about how to include your subsystem in the XSB system. We don't like >>> to distribute broken code, which means we will need to find a way to >>> ensure that it stays up-to-date. >>> >>> Of course, good documentation is also a requirement :-). >>> >>> Good luck and keep us posted on your progress, >>> -David >>> >>> -----------------------------------------------------------------------= -- >>> Take Surveys. Earn Cash. Influence the Future of IT >>> Join SourceForge.net's Techsay panel and you'll get the chance to share= your >>> opinions on IT & business topics through brief surveys - and earn cash >>> http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID= =3DDEVDEV >>> _______________________________________________ >>> Xsb-development mailing list >>> Xsb...@li... >>> https://lists.sourceforge.net/lists/listinfo/xsb-development >>> >> > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share y= our > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV > _______________________________________________ > Flora-development mailing list > Flo...@li... > https://lists.sourceforge.net/lists/listinfo/flora-development > |
From: Markus S. <msc...@fo...> - 2007-01-18 00:30:16
|
Dear Michael, I'll try to coordinate with Goncalo (seems he run into the same problem I did). BTW. here's my code: http://arka.foi.hr/~mschatten/xsb/XSB.NET.v.0.01.zip I didn't try the code with Mono just on MSVS.NET but if Gonzalo and me are able to coordinate I'll surely try to make it work with Mono. Regarding the Python interface here some basic ideas on how to use Logic Programming concepts in Python: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/303057 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/360698 My idea is to extend these recipes with F-logic and OO (e.g. use Python objects as facts, Python objects with some logical variables as their attributes for queries and rule heads and bodies). Python has very nice fetaures which let you query the internal structure of an object. In this manner its straight forward to map Python objects to F-molecules and use them in the Flora-2 engine. I've written a paper about this concept (for now only in croatian). As soon as I finish this inteface I'll probably publish it on some conference. For example lets say we have a python class like: class example: def __init__( self, a=1, b=[1,2,3] ): self.a = a self.b = b def some_func( self ): print "Hello from example" to create an instance we use: ex = example() now the power of Python lies in: >>> dir(ex) ['__doc__', '__init__', '__module__', 'a', 'b', 'some_func'] >>> ex.__dict__ {'a': 1, 'b': [1, 2, 3]} >>> So we can query the internal structure of the 'ex' object. An algorithm I allmost finished tries to translate Python objects into F-molecules. Basicly I want it to be ex:example[ a->1, b:list->[1,2,3] ]. for now since I'm not 100% clear with the idea of using the object's methods at all or not. I was thinking of using boolean methods as descibed in the manual to have a reference in Flora-2 that a method for a given object exists, but I'm still not sure if it would be of any use. To go further with the concept if we have an object like described before and use logical variables like described in the recipes then we can do the following: X = Variable() qu = example( X, [1, 2, 3] ) so we would have a mapping to a F-molecule like qu:example[ a->X, b:list->[1, 2, 3] ] Now by using the concept of rules as described in the recipe we could say: qu << [ ex, [X, 2, 3] ] No real sense in the rule but I hope you understand the Idea. This could then be translated to Flora-2 like: qu:example[ a->X, b:list->[1, 2, 3] ] :- ex:example[ a->1, b:list->[1, 2, 3], [X, 2, 3]. So you could basicly use the Flora-2 engine to store data objects from Python applications and then using the concept of rules and logic variables query this objects. I also tought of making the data consisent using ZODB which allows easily to store Python objects. There's also an idea to make it network ready (e.g. to make it possible to run as a knowledge base server which any python program can use over the network using Python NetWork Spaces). But this is still a little idea in my head ;-) As soon as I have a little bit more usable version of the Python interface I'll let you know. If you have any comments, suggestions, critiques etc. they are very wellcome since I'm not 100% sure that I'm doing thigs right ;-) Best regards -- Markus Schatten, dipl. inf. e-mail: mar...@fo... http://www.tiaktiv.hr On Wed, 17 Jan 2007, Michael Kifer wrote: > > Hi Markus, > > It looks very promising. I think it is best if you could coordinate > with Goncalo on the xsb.dll wrapper. >> From what he described, it looks like he is using the same model as the > Interprolog's Java interface, which is very convenient. > > Regarding Python, it all looks very interesting. I would like to see a more > detailed description of how rules can be used from within > Python. Unfortunately, I am Python-illiterate right now, but would like to > learn. > > You probably know that we now have a high-level interface from Java to > Flora where one can create Java proxy objects for Flora objects and then > manipulate them from within Java through get/set style methods. > This is far from seamless, so I would like to learn more on your design. > > Does your code work with Linux through Mono? > > > best regards > --michael > > >> Dear Michael >> >> I'm fully dedicated to OpenSource and have allready added LGPL headers to= >> >> my source, so thats no problem. The wrapper is a .NET class library which= >> >> exports allmost all functions which are exported in xsb.dll (xsb_query,=20 >> xsb_init, is_functor etc.). I have also included some examples for using=20 >> the wrapper in VB.NET, C#.NET (using a simple Prolog program and a simple >> >> Flora-2 knowledge base). So it's just an export of the functions provided >> >> in xsb.dll (and since Flora-2 uses=20 >> asserta(library_directory('C:\Flora2\dir')). and [flora2].=20 >> bootrstrap_flora. I used xsb_command_string and xsb_query_string to load >> Flora-2). So far for the .NET wrapper. The Python wrapper I'm now working >> >> on should make it more intuitive for Python programmers to use Flora-2 as >> >> a knowledge base engine (e.g. translation of Python objects directly into >> Flora-2 F-molecules, using of queries and rules inside Python etc.) If you >> want to take a look at the code be it for the .NET wrapper or for the >> Python interface (done so far) just tell me where to send it :-) >> >> Best regards >> >> -- >> Markus Schatten, dipl. inf. >> e-mail: mar...@fo... >> http://www.tiaktiv.hr >> >> >> On Tue, 16 Jan 2007, Michael Kifer wrote: >> >>> >>> Dear Markus, >>> Thank you very much for the contribution. >>> To be included in either XSB or Flora-2, your files have to be released >>> under LGPL. >>> >>> I didn't quite understand what the wrapper around xsb.dll does. >>> Is it exporting things like xsb_query to .NET languages >>> (in this case it should be really part of XSB)? >>> >>> Or is it an object-oriented interface, which can talk to Flora-2 directly= >> ? >>> You alluded to this in connection with the Python wrapper, which is very >>> interesting. >>> >>> >>> =09regards >>> =09 --michael >>> >>>> Dear sirs, >>>> >>>> my name is Markus Schatten, I'm an assistant on the Faculty of Organizat= >> ion >>>> and Informatics in Vara=C5=BEdin, Croatia in Databases and Formal Metho= >> ds. One of >>>> my professors (dr.sc. Mirko =C4?ubrilo) asked me to develop a XSB and F= >> lora-2 >>>> dll-wrapper for MS Visual Studio.NET, which I have developed using the >>>> C-binding of XSB. I'm not a .NET professional so there are probably some= >> bugs >>>> in the solution, but it works fine, and since I'm not sure if I will hav= >> e >>>> time to develop it further I'd like to contribute it to your projects, o= >> f >>>> course if there is interest in such a contribution. >>>> I've created a C# class which wraps around the xsb.dll and makes allmost= >> all >>>> functions exported in the dll available to all other .NET languages. I'v= >> e >>>> also implemented two methods for converting prolog terms to strings and >>>> printing of terms (allmost direct translation of printpterm in cmain2.c)= >> =2E >>>> Since my primary programming language is Python I also created a wrapper= >> for >>>> Python (using SWIG http://www.swig.org) which could be used to wrap XSB = >> and >>>> Flora-2 to all the other scripting languages supported by SWIG. The Pyth= >> on >>>> wrapper is not fully implemented by now since I'd like to make the inter= >> face >>>> more intuitive to Python programmers and will probably try to combine th= >> e >>>> power of Flora-2 and ZODB (http://www.zope.org/Products/ZODB3.3). >>>> So if there's any interest I'll be very happy if I can contribute to you= >> r >>>> projects. >>>> >>>> Best regards >>>> >>>> -- >>>> Markus Schatten, dipl. inf. >>>> Faculty of Organization and Informatics >>>> Vara=C5=BEdin, Croatia >>>> e-mail: mar...@fo... >>>> http://www.foi.hr >>>> >>>> ------------------------------------------------------------------------= >> - >>>> Take Surveys. Earn Cash. Influence the Future of IT >>>> Join SourceForge.net's Techsay panel and you'll get the chance to share = >> your >>>> opinions on IT & business topics through brief surveys - and earn cash >>>> http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID= >> =3DDEVDEV >>>> _______________________________________________ >>>> Flora-development mailing list >>>> Flo...@li... >>>> https://lists.sourceforge.net/lists/listinfo/flora-development > |
From: <ki...@cs...> - 2007-01-17 21:25:29
|
Hi Markus, It looks very promising. I think it is best if you could coordinate with Goncalo on the xsb.dll wrapper. >From what he described, it looks like he is using the same model as the Interprolog's Java interface, which is very convenient. Regarding Python, it all looks very interesting. I would like to see a more detailed description of how rules can be used from within Python. Unfortunately, I am Python-illiterate right now, but would like to learn. You probably know that we now have a high-level interface from Java to Flora where one can create Java proxy objects for Flora objects and then manipulate them from within Java through get/set style methods. This is far from seamless, so I would like to learn more on your design. Does your code work with Linux through Mono? best regards --michael > Dear Michael > > I'm fully dedicated to OpenSource and have allready added LGPL headers to= > > my source, so thats no problem. The wrapper is a .NET class library which= > > exports allmost all functions which are exported in xsb.dll (xsb_query,=20 > xsb_init, is_functor etc.). I have also included some examples for using=20 > the wrapper in VB.NET, C#.NET (using a simple Prolog program and a simple > > Flora-2 knowledge base). So it's just an export of the functions provided > > in xsb.dll (and since Flora-2 uses=20 > asserta(library_directory('C:\Flora2\dir')). and [flora2].=20 > bootrstrap_flora. I used xsb_command_string and xsb_query_string to load > Flora-2). So far for the .NET wrapper. The Python wrapper I'm now working > > on should make it more intuitive for Python programmers to use Flora-2 as > > a knowledge base engine (e.g. translation of Python objects directly into > Flora-2 F-molecules, using of queries and rules inside Python etc.) If you > want to take a look at the code be it for the .NET wrapper or for the > Python interface (done so far) just tell me where to send it :-) > > Best regards > > -- > Markus Schatten, dipl. inf. > e-mail: mar...@fo... > http://www.tiaktiv.hr > > > On Tue, 16 Jan 2007, Michael Kifer wrote: > > > > > Dear Markus, > > Thank you very much for the contribution. > > To be included in either XSB or Flora-2, your files have to be released > > under LGPL. > > > > I didn't quite understand what the wrapper around xsb.dll does. > > Is it exporting things like xsb_query to .NET languages > > (in this case it should be really part of XSB)? > > > > Or is it an object-oriented interface, which can talk to Flora-2 directly= > ? > > You alluded to this in connection with the Python wrapper, which is very > > interesting. > > > > > > =09regards > > =09 --michael > > > >> Dear sirs, > >> > >> my name is Markus Schatten, I'm an assistant on the Faculty of Organizat= > ion > >> and Informatics in Vara=C5=BEdin, Croatia in Databases and Formal Metho= > ds. One of > >> my professors (dr.sc. Mirko =C4?ubrilo) asked me to develop a XSB and F= > lora-2 > >> dll-wrapper for MS Visual Studio.NET, which I have developed using the > >> C-binding of XSB. I'm not a .NET professional so there are probably some= > bugs > >> in the solution, but it works fine, and since I'm not sure if I will hav= > e > >> time to develop it further I'd like to contribute it to your projects, o= > f > >> course if there is interest in such a contribution. > >> I've created a C# class which wraps around the xsb.dll and makes allmost= > all > >> functions exported in the dll available to all other .NET languages. I'v= > e > >> also implemented two methods for converting prolog terms to strings and > >> printing of terms (allmost direct translation of printpterm in cmain2.c)= > =2E > >> Since my primary programming language is Python I also created a wrapper= > for > >> Python (using SWIG http://www.swig.org) which could be used to wrap XSB = > and > >> Flora-2 to all the other scripting languages supported by SWIG. The Pyth= > on > >> wrapper is not fully implemented by now since I'd like to make the inter= > face > >> more intuitive to Python programmers and will probably try to combine th= > e > >> power of Flora-2 and ZODB (http://www.zope.org/Products/ZODB3.3). > >> So if there's any interest I'll be very happy if I can contribute to you= > r > >> projects. > >> > >> Best regards > >> > >> -- > >> Markus Schatten, dipl. inf. > >> Faculty of Organization and Informatics > >> Vara=C5=BEdin, Croatia > >> e-mail: mar...@fo... > >> http://www.foi.hr > >> > >> ------------------------------------------------------------------------= > - > >> Take Surveys. Earn Cash. Influence the Future of IT > >> Join SourceForge.net's Techsay panel and you'll get the chance to share = > your > >> opinions on IT & business topics through brief surveys - and earn cash > >> http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID= > =3DDEVDEV > >> _______________________________________________ > >> Flora-development mailing list > >> Flo...@li... > >> https://lists.sourceforge.net/lists/listinfo/flora-development |
From: <gon...@gm...> - 2007-01-17 18:00:30
|
Hello Terry, I'll try to compile XSB in debug configuration as you say, although I begin to suspect that this has something to do with the loading of the XSB dll in the C# debugger, independently of the function called. It's really some creepy black-magic from the .NET framework, and I would have to get into excessive technical details about .NET. I'll do some more experiments and I'll let you know what I find. I have found a way to debug it in Visual Studio, but it envolves some strange phenomenons... I'll eventually sort it out, I hope. Best regards, Gon=E7alo On 1/17/07, Terrance Swift <ts...@cs...> wrote: > > > > Do you know what line in xsb_init() (or called function) that it > breaks down on? Also, are you using a version from before last > weekends updates, or after? > > I know nothing about the VS C# debugger, but XSB compiled with > the default settings does not include all symbol information (it > doesnt use -g). So if you haven't already, it might be > worthwhile compiling XSB in debug mode, then seeing if it also > crashes in the C# debugger (if it does, this might provide extra > information). > > Terry > > > On Wed, 17 Jan 2007, [ISO-8859-1] Gon=E7alo Lopes wrote: > > > Dear all, > > > > Now for the single issue with XSBDotNet so far. Apparently, when > > running a debug session of a XSBDotNet application in Visual Studio C# > > Express, there is a memory access violation when calling xsb_init. I > > don't know why this happens, but it is very specific, in that if you > > run the executable there is no problem, if running the Visual C++ > > Express debugger things also work fine. > > > > I don't understand why it would crash specifically with this debugger > > environment, but maybe it has something to do with the C# debugger > > changing specific parameters that influence some behaviour on the XSB > > side, causing it to crash (i.e. changing some stack sizes). > > > > I'm sorry for the technical blowout, but I can't seem to workaround > > this very specific issue. Otherwise, all XSBDotNet applications work > > fine on every environment. > > > > Best regards, > > > > Gon=E7alo > > > > > > On 1/17/07, Gon=E7alo Lopes <gon...@gm...> wrote: > > > Dear Markus, David et al, > > > > > > It's great to find growing support and interest on a .NET interface. > > > I've set up a management page for my current source code at > > > http://articaserv.ath.cx/XSBDotNet. The SVN code can be offloaded fro= m > > > the repository using any SVN client at > > > svn://articaserv.ath.cx/XSBDotNet. I can also make a binary release > > > available to those who just want to try it out "out-of-the-box". I'll > > > definitely work on proper documentation and usually I try to use a > > > unit testing methodology. > > > > > > So far, all the tests I've made have been successful, but there are > > > bound to be issues, especially where the multithreaded engine is > > > concerned. I'll post one of these issues in the following e-mail. > > > Right now, I'll just post two small code snippets of what XSBDotNet > > > offers so far for the .NET programmer (in C#): > > > > > > static void Main(string[] args) > > > { > > > XSBPrologEngine engine =3D XSBPrologEngine.Instance; > > > engine.Command("consult(basics)."); > > > QueryHandle handle =3D engine.Query("member(X,[1,2,3]).")= ; > > > foreach (PrologAnswer answer in handle) > > > { > > > PrologTerm groundedTerm =3D answer.QueryTerm; > > > System.Console.Out.WriteLine( > > > "Answer: {0}", > > > groundedTerm.GetFunctorArgument(1).GetIntValue() > > > ); > > > } > > > } > > > > > > As you can see, the PrologEngine instance is a singleton, since for > > > now you can only call xsb_init once. There is support for commands an= d > > > queries, supporting both strings and PrologTerms built from C#. The > > > result from a query is in fact an enumeration of all the possible > > > answers, containing both the terms from reg1 and reg2. At each step o= f > > > the foreach cycle, a backtrack is issued and a new answer, if any, is > > > produced. It is also possible to terminate the enumeration at any > > > given time by just closing the handle. > > > > > > Now a small example of defining a C# method to run as a XSB predicate= : > > > > > > static bool HelloFromDotNet(PrologTerm[] arguments) > > > { > > > if (arguments.Length !=3D 0) > > > { > > > arguments[0].BindAtom("hello"); > > > return true; > > > } > > > else return false; > > > } > > > > > > static void Main(string[] args) > > > { > > > XSBPrologEngine engine =3D XSBPrologEngine.Instance; > > > engine.RegisterManagedPredicate("hellodotnet", HelloFromD= otNet); > > > QueryHandle hello =3D engine.Query("managed(hellodotnet(X= ))."); > > > foreach (PrologAnswer answer in hello) > > > { > > > System.Console.Out.WriteLine( > > > "Echo: {0}", > > > answer.QueryTerm.GetFunctorArgument(1).GetAtomNam= e() > > > ); > > > } > > > } > > > > > > As you see, the only requirement for the C# method is that it returns > > > bool and receives an array of PrologTerm representing the arguments o= f > > > the goal. Then, it's only necessary to register the function with the > > > XSBPrologEngine, passing it the name of the Prolog predicate being > > > implemented by the function. > > > > > > engine.RegisterManagedPredicate("hellodotnet", HelloFromDotNet); > > > > > > After that, the method can be called from XSB by use of the managed/1 > > > predicate, which receives a goal to execute inside .NET framework: > > > > > > QueryHandle hello =3D engine.Query("managed(hellodotnet(X))."); > > > > > > It is of course admissible to "inline" the predicate with something l= ike: > > > > > > hellodotnet(X) :- managed(hellodotnet(X)). > > > > > > for greater declarativity (there are some other solutions to go aroun= d > > > this, but I aimed for implementation simplicity first). > > > > > > That's it for now. > > > > > > Best regards, > > > > > > Gon=E7alo > > > > > > > > > On 1/17/07, David Warren <wa...@cs...> wrote: > > > > Markus and Gon=E7alo (et al.), > > > > > > > > I really appreciate your willingness to contribute to the XSB effor= t. > > > > I have essentially no knowledge of .NET, so we'll have to depend on > > > > you two. And it's good that there are two of you with knowledge an= d > > > > interest to determine the best interface. > > > > > > > > One important thing to keep in mind is that XSB, and the environmen= ts > > > > in which it runs, are both evolving. So code that works today may = not > > > > work tomorrow. The best solution is to make the code transparent a= nd > > > > to incorporate tests of it somehow into the XSB testsuite. Then > > > > changes that affect your code can be caught early and they (or your > > > > code) can be fixed before problems accumulate. We will have to thi= nk > > > > about how to include your subsystem in the XSB system. We don't li= ke > > > > to distribute broken code, which means we will need to find a way t= o > > > > ensure that it stays up-to-date. > > > > > > > > Of course, good documentation is also a requirement :-). > > > > > > > > Good luck and keep us posted on your progress, > > > > -David > > > > > > > > -------------------------------------------------------------------= ------ > > > > Take Surveys. Earn Cash. Influence the Future of IT > > > > Join SourceForge.net's Techsay panel and you'll get the chance to s= hare your > > > > opinions on IT & business topics through brief surveys - and earn c= ash > > > > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&= CID=3DDEVDEV > > > > _______________________________________________ > > > > Xsb-development mailing list > > > > Xsb...@li... > > > > https://lists.sourceforge.net/lists/listinfo/xsb-development > > > > > > > > > > > -----------------------------------------------------------------------= -- > > Take Surveys. Earn Cash. Influence the Future of IT > > Join SourceForge.net's Techsay panel and you'll get the chance to share= your > > opinions on IT & business topics through brief surveys - and earn cash > > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID= =3DDEVDEV > > _______________________________________________ > > Xsb-development mailing list > > Xsb...@li... > > https://lists.sourceforge.net/lists/listinfo/xsb-development > > > > > |
From: Terrance S. <ts...@cs...> - 2007-01-17 17:25:54
|
Do you know what line in xsb_init() (or called function) that it breaks down on? Also, are you using a version from before last weekends updates, or after? I know nothing about the VS C# debugger, but XSB compiled with the default settings does not include all symbol information (it doesnt use -g). So if you haven't already, it might be worthwhile compiling XSB in debug mode, then seeing if it also crashes in the C# debugger (if it does, this might provide extra information). Terry On Wed, 17 Jan 2007, [ISO-8859-1] Gon=E7alo Lopes wrote: > Dear all, > > Now for the single issue with XSBDotNet so far. Apparently, when > running a debug session of a XSBDotNet application in Visual Studio C# > Express, there is a memory access violation when calling xsb_init. I > don't know why this happens, but it is very specific, in that if you > run the executable there is no problem, if running the Visual C++ > Express debugger things also work fine. > > I don't understand why it would crash specifically with this debugger > environment, but maybe it has something to do with the C# debugger > changing specific parameters that influence some behaviour on the XSB > side, causing it to crash (i.e. changing some stack sizes). > > I'm sorry for the technical blowout, but I can't seem to workaround > this very specific issue. Otherwise, all XSBDotNet applications work > fine on every environment. > > Best regards, > > Gon=E7alo > > > On 1/17/07, Gon=E7alo Lopes <gon...@gm...> wrote: > > Dear Markus, David et al, > > > > It's great to find growing support and interest on a .NET interface. > > I've set up a management page for my current source code at > > http://articaserv.ath.cx/XSBDotNet. The SVN code can be offloaded from > > the repository using any SVN client at > > svn://articaserv.ath.cx/XSBDotNet. I can also make a binary release > > available to those who just want to try it out "out-of-the-box". I'll > > definitely work on proper documentation and usually I try to use a > > unit testing methodology. > > > > So far, all the tests I've made have been successful, but there are > > bound to be issues, especially where the multithreaded engine is > > concerned. I'll post one of these issues in the following e-mail. > > Right now, I'll just post two small code snippets of what XSBDotNet > > offers so far for the .NET programmer (in C#): > > > > static void Main(string[] args) > > { > > XSBPrologEngine engine =3D XSBPrologEngine.Instance; > > engine.Command("consult(basics)."); > > QueryHandle handle =3D engine.Query("member(X,[1,2,3])."); > > foreach (PrologAnswer answer in handle) > > { > > PrologTerm groundedTerm =3D answer.QueryTerm; > > System.Console.Out.WriteLine( > > "Answer: {0}", > > groundedTerm.GetFunctorArgument(1).GetIntValue() > > ); > > } > > } > > > > As you can see, the PrologEngine instance is a singleton, since for > > now you can only call xsb_init once. There is support for commands and > > queries, supporting both strings and PrologTerms built from C#. The > > result from a query is in fact an enumeration of all the possible > > answers, containing both the terms from reg1 and reg2. At each step of > > the foreach cycle, a backtrack is issued and a new answer, if any, is > > produced. It is also possible to terminate the enumeration at any > > given time by just closing the handle. > > > > Now a small example of defining a C# method to run as a XSB predicate: > > > > static bool HelloFromDotNet(PrologTerm[] arguments) > > { > > if (arguments.Length !=3D 0) > > { > > arguments[0].BindAtom("hello"); > > return true; > > } > > else return false; > > } > > > > static void Main(string[] args) > > { > > XSBPrologEngine engine =3D XSBPrologEngine.Instance; > > engine.RegisterManagedPredicate("hellodotnet", HelloFromDot= Net); > > QueryHandle hello =3D engine.Query("managed(hellodotnet(X))= =2E"); > > foreach (PrologAnswer answer in hello) > > { > > System.Console.Out.WriteLine( > > "Echo: {0}", > > answer.QueryTerm.GetFunctorArgument(1).GetAtomName(= ) > > ); > > } > > } > > > > As you see, the only requirement for the C# method is that it returns > > bool and receives an array of PrologTerm representing the arguments of > > the goal. Then, it's only necessary to register the function with the > > XSBPrologEngine, passing it the name of the Prolog predicate being > > implemented by the function. > > > > engine.RegisterManagedPredicate("hellodotnet", HelloFromDotNet); > > > > After that, the method can be called from XSB by use of the managed/1 > > predicate, which receives a goal to execute inside .NET framework: > > > > QueryHandle hello =3D engine.Query("managed(hellodotnet(X))."); > > > > It is of course admissible to "inline" the predicate with something lik= e: > > > > hellodotnet(X) :- managed(hellodotnet(X)). > > > > for greater declarativity (there are some other solutions to go around > > this, but I aimed for implementation simplicity first). > > > > That's it for now. > > > > Best regards, > > > > Gon=E7alo > > > > > > On 1/17/07, David Warren <wa...@cs...> wrote: > > > Markus and Gon=E7alo (et al.), > > > > > > I really appreciate your willingness to contribute to the XSB effort. > > > I have essentially no knowledge of .NET, so we'll have to depend on > > > you two. And it's good that there are two of you with knowledge and > > > interest to determine the best interface. > > > > > > One important thing to keep in mind is that XSB, and the environments > > > in which it runs, are both evolving. So code that works today may no= t > > > work tomorrow. The best solution is to make the code transparent and > > > to incorporate tests of it somehow into the XSB testsuite. Then > > > changes that affect your code can be caught early and they (or your > > > code) can be fixed before problems accumulate. We will have to think > > > about how to include your subsystem in the XSB system. We don't like > > > to distribute broken code, which means we will need to find a way to > > > ensure that it stays up-to-date. > > > > > > Of course, good documentation is also a requirement :-). > > > > > > Good luck and keep us posted on your progress, > > > -David > > > > > > ---------------------------------------------------------------------= ---- > > > Take Surveys. Earn Cash. Influence the Future of IT > > > Join SourceForge.net's Techsay panel and you'll get the chance to sha= re your > > > opinions on IT & business topics through brief surveys - and earn cas= h > > > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CI= D=3DDEVDEV > > > _______________________________________________ > > > Xsb-development mailing list > > > Xsb...@li... > > > https://lists.sourceforge.net/lists/listinfo/xsb-development > > > > > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share y= our > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV > _______________________________________________ > Xsb-development mailing list > Xsb...@li... > https://lists.sourceforge.net/lists/listinfo/xsb-development > > |
From: <gon...@gm...> - 2007-01-17 16:20:49
|
Dear all, Now for the single issue with XSBDotNet so far. Apparently, when running a debug session of a XSBDotNet application in Visual Studio C# Express, there is a memory access violation when calling xsb_init. I don't know why this happens, but it is very specific, in that if you run the executable there is no problem, if running the Visual C++ Express debugger things also work fine. I don't understand why it would crash specifically with this debugger environment, but maybe it has something to do with the C# debugger changing specific parameters that influence some behaviour on the XSB side, causing it to crash (i.e. changing some stack sizes). I'm sorry for the technical blowout, but I can't seem to workaround this very specific issue. Otherwise, all XSBDotNet applications work fine on every environment. Best regards, Gon=E7alo On 1/17/07, Gon=E7alo Lopes <gon...@gm...> wrote: > Dear Markus, David et al, > > It's great to find growing support and interest on a .NET interface. > I've set up a management page for my current source code at > http://articaserv.ath.cx/XSBDotNet. The SVN code can be offloaded from > the repository using any SVN client at > svn://articaserv.ath.cx/XSBDotNet. I can also make a binary release > available to those who just want to try it out "out-of-the-box". I'll > definitely work on proper documentation and usually I try to use a > unit testing methodology. > > So far, all the tests I've made have been successful, but there are > bound to be issues, especially where the multithreaded engine is > concerned. I'll post one of these issues in the following e-mail. > Right now, I'll just post two small code snippets of what XSBDotNet > offers so far for the .NET programmer (in C#): > > static void Main(string[] args) > { > XSBPrologEngine engine =3D XSBPrologEngine.Instance; > engine.Command("consult(basics)."); > QueryHandle handle =3D engine.Query("member(X,[1,2,3])."); > foreach (PrologAnswer answer in handle) > { > PrologTerm groundedTerm =3D answer.QueryTerm; > System.Console.Out.WriteLine( > "Answer: {0}", > groundedTerm.GetFunctorArgument(1).GetIntValue() > ); > } > } > > As you can see, the PrologEngine instance is a singleton, since for > now you can only call xsb_init once. There is support for commands and > queries, supporting both strings and PrologTerms built from C#. The > result from a query is in fact an enumeration of all the possible > answers, containing both the terms from reg1 and reg2. At each step of > the foreach cycle, a backtrack is issued and a new answer, if any, is > produced. It is also possible to terminate the enumeration at any > given time by just closing the handle. > > Now a small example of defining a C# method to run as a XSB predicate: > > static bool HelloFromDotNet(PrologTerm[] arguments) > { > if (arguments.Length !=3D 0) > { > arguments[0].BindAtom("hello"); > return true; > } > else return false; > } > > static void Main(string[] args) > { > XSBPrologEngine engine =3D XSBPrologEngine.Instance; > engine.RegisterManagedPredicate("hellodotnet", HelloFromDotNe= t); > QueryHandle hello =3D engine.Query("managed(hellodotnet(X))."= ); > foreach (PrologAnswer answer in hello) > { > System.Console.Out.WriteLine( > "Echo: {0}", > answer.QueryTerm.GetFunctorArgument(1).GetAtomName() > ); > } > } > > As you see, the only requirement for the C# method is that it returns > bool and receives an array of PrologTerm representing the arguments of > the goal. Then, it's only necessary to register the function with the > XSBPrologEngine, passing it the name of the Prolog predicate being > implemented by the function. > > engine.RegisterManagedPredicate("hellodotnet", HelloFromDotNet); > > After that, the method can be called from XSB by use of the managed/1 > predicate, which receives a goal to execute inside .NET framework: > > QueryHandle hello =3D engine.Query("managed(hellodotnet(X))."); > > It is of course admissible to "inline" the predicate with something like: > > hellodotnet(X) :- managed(hellodotnet(X)). > > for greater declarativity (there are some other solutions to go around > this, but I aimed for implementation simplicity first). > > That's it for now. > > Best regards, > > Gon=E7alo > > > On 1/17/07, David Warren <wa...@cs...> wrote: > > Markus and Gon=E7alo (et al.), > > > > I really appreciate your willingness to contribute to the XSB effort. > > I have essentially no knowledge of .NET, so we'll have to depend on > > you two. And it's good that there are two of you with knowledge and > > interest to determine the best interface. > > > > One important thing to keep in mind is that XSB, and the environments > > in which it runs, are both evolving. So code that works today may not > > work tomorrow. The best solution is to make the code transparent and > > to incorporate tests of it somehow into the XSB testsuite. Then > > changes that affect your code can be caught early and they (or your > > code) can be fixed before problems accumulate. We will have to think > > about how to include your subsystem in the XSB system. We don't like > > to distribute broken code, which means we will need to find a way to > > ensure that it stays up-to-date. > > > > Of course, good documentation is also a requirement :-). > > > > Good luck and keep us posted on your progress, > > -David > > > > -----------------------------------------------------------------------= -- > > Take Surveys. Earn Cash. Influence the Future of IT > > Join SourceForge.net's Techsay panel and you'll get the chance to share= your > > opinions on IT & business topics through brief surveys - and earn cash > > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID= =3DDEVDEV > > _______________________________________________ > > Xsb-development mailing list > > Xsb...@li... > > https://lists.sourceforge.net/lists/listinfo/xsb-development > > > |
From: <gon...@gm...> - 2007-01-17 15:33:14
|
Dear Markus, David et al, It's great to find growing support and interest on a .NET interface. I've set up a management page for my current source code at http://articaserv.ath.cx/XSBDotNet. The SVN code can be offloaded from the repository using any SVN client at svn://articaserv.ath.cx/XSBDotNet. I can also make a binary release available to those who just want to try it out "out-of-the-box". I'll definitely work on proper documentation and usually I try to use a unit testing methodology. So far, all the tests I've made have been successful, but there are bound to be issues, especially where the multithreaded engine is concerned. I'll post one of these issues in the following e-mail. Right now, I'll just post two small code snippets of what XSBDotNet offers so far for the .NET programmer (in C#): static void Main(string[] args) { XSBPrologEngine engine =3D XSBPrologEngine.Instance; engine.Command("consult(basics)."); QueryHandle handle =3D engine.Query("member(X,[1,2,3])."); foreach (PrologAnswer answer in handle) { PrologTerm groundedTerm =3D answer.QueryTerm; System.Console.Out.WriteLine( "Answer: {0}", groundedTerm.GetFunctorArgument(1).GetIntValue() ); } } As you can see, the PrologEngine instance is a singleton, since for now you can only call xsb_init once. There is support for commands and queries, supporting both strings and PrologTerms built from C#. The result from a query is in fact an enumeration of all the possible answers, containing both the terms from reg1 and reg2. At each step of the foreach cycle, a backtrack is issued and a new answer, if any, is produced. It is also possible to terminate the enumeration at any given time by just closing the handle. Now a small example of defining a C# method to run as a XSB predicate: static bool HelloFromDotNet(PrologTerm[] arguments) { if (arguments.Length !=3D 0) { arguments[0].BindAtom("hello"); return true; } else return false; } static void Main(string[] args) { XSBPrologEngine engine =3D XSBPrologEngine.Instance; engine.RegisterManagedPredicate("hellodotnet", HelloFromDotNet)= ; QueryHandle hello =3D engine.Query("managed(hellodotnet(X))."); foreach (PrologAnswer answer in hello) { System.Console.Out.WriteLine( "Echo: {0}", answer.QueryTerm.GetFunctorArgument(1).GetAtomName() ); } } As you see, the only requirement for the C# method is that it returns bool and receives an array of PrologTerm representing the arguments of the goal. Then, it's only necessary to register the function with the XSBPrologEngine, passing it the name of the Prolog predicate being implemented by the function. engine.RegisterManagedPredicate("hellodotnet", HelloFromDotNet); After that, the method can be called from XSB by use of the managed/1 predicate, which receives a goal to execute inside .NET framework: QueryHandle hello =3D engine.Query("managed(hellodotnet(X))."); It is of course admissible to "inline" the predicate with something like: hellodotnet(X) :- managed(hellodotnet(X)). for greater declarativity (there are some other solutions to go around this, but I aimed for implementation simplicity first). That's it for now. Best regards, Gon=E7alo On 1/17/07, David Warren <wa...@cs...> wrote: > Markus and Gon=E7alo (et al.), > > I really appreciate your willingness to contribute to the XSB effort. > I have essentially no knowledge of .NET, so we'll have to depend on > you two. And it's good that there are two of you with knowledge and > interest to determine the best interface. > > One important thing to keep in mind is that XSB, and the environments > in which it runs, are both evolving. So code that works today may not > work tomorrow. The best solution is to make the code transparent and > to incorporate tests of it somehow into the XSB testsuite. Then > changes that affect your code can be caught early and they (or your > code) can be fixed before problems accumulate. We will have to think > about how to include your subsystem in the XSB system. We don't like > to distribute broken code, which means we will need to find a way to > ensure that it stays up-to-date. > > Of course, good documentation is also a requirement :-). > > Good luck and keep us posted on your progress, > -David > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share y= our > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV > _______________________________________________ > Xsb-development mailing list > Xsb...@li... > https://lists.sourceforge.net/lists/listinfo/xsb-development > |
From: David W. <wa...@cs...> - 2007-01-17 15:07:04
|
Markus and Gon=E7alo (et al.), I really appreciate your willingness to contribute to the XSB effort. I have essentially no knowledge of .NET, so we'll have to depend on you two. And it's good that there are two of you with knowledge and interest to determine the best interface. One important thing to keep in mind is that XSB, and the environments in which it runs, are both evolving. So code that works today may not work tomorrow. The best solution is to make the code transparent and to incorporate tests of it somehow into the XSB testsuite. Then changes that affect your code can be caught early and they (or your code) can be fixed before problems accumulate. We will have to think about how to include your subsystem in the XSB system. We don't like to distribute broken code, which means we will need to find a way to ensure that it stays up-to-date. Of course, good documentation is also a requirement :-). Good luck and keep us posted on your progress, -David |
From: Markus S. <msc...@fo...> - 2007-01-17 13:16:00
|
Dear Gon=E7alo, Well, this is great! It's funny that at a pretty much same time two people= =20 do allmost the same thing in different parts of the world (except you live= =20 in my neighbourhood) :-) As I see it from your message it seems that you=20 have put more time into your .NET wrapper and are more familiar with .NET= =20 then me. What regards the Flora-2 interface it's pretty simple to add it=20 to a XSB wrapper if you export functions like xsb_command_string and=20 xsb_query_string since Flora-2 can be loaded this way. Maybe we should=20 exchange our solutions and see if we can work out whats the best for the=20 community (e.g. combine ideas and concepts) to faciliate the community=20 with a good and working .NET interface to XSB and Flora-2? Best regards -- Markus Schatten, dipl. inf. e-mail: mar...@fo... http://www.tiaktiv.hr On Wed, 17 Jan 2007, Gon=E7alo Lopes wrote: > Dear Markus, > > I think your contribution is very interesting as well. I myself have > finished recently a .NET interface to XSB and was also thinking of > submitting it to the community, but maybe we should compare some notes > first. > > I'm not very familiar with Flora-2, and I'm just focusing on bringing > XSB's expressive power over to the .NET domain, so maybe your wrapper > has more to offer on this regard. On the other hand, I've also focused > on making my wrapper something more than a dll wrapper. Here are some > of the current features so far: > > - Complete .NET classes for XSBPrologEngine and PrologTerm (making it > much more elegant to handle terms in an object-oriented manner) > - Integration made through C++/CLI in order to take advantage of XSB's > configuration macros (future multithreading support...) > - Possibility to register .NET delegates as managed XSB predicates, so > some Prolog predicates can be properly implemented by managed code. > > I'll be submitting my source code soon with a more detailed > explanation of the features as long as some working examples. I hope > we can both get feedback in order to supply the best possible .NET > wrapper to the XSB community. > > Best regards, > > Gon=E7alo > > > On 1/16/07, Michael Kifer <ki...@cs...> wrote: >> >> Dear Markus, >> Thank you very much for the contribution. >> To be included in either XSB or Flora-2, your files have to be released >> under LGPL. >> >> I didn't quite understand what the wrapper around xsb.dll does. >> Is it exporting things like xsb_query to .NET languages >> (in this case it should be really part of XSB)? >> >> Or is it an object-oriented interface, which can talk to Flora-2 directl= y? >> You alluded to this in connection with the Python wrapper, which is very >> interesting. >> >> >> regards >> --michael >> >>> Dear sirs, >>> >>> my name is Markus Schatten, I'm an assistant on the Faculty of Organiza= tion >>> and Informatics in Vara=C5=BEdin, Croatia in Databases and Formal Meth= ods. One of >>> my professors (dr.sc. Mirko =C4?ubrilo) asked me to develop a XSB and = Flora-2 >>> dll-wrapper for MS Visual Studio.NET, which I have developed using the >>> C-binding of XSB. I'm not a .NET professional so there are probably som= e bugs >>> in the solution, but it works fine, and since I'm not sure if I will ha= ve >>> time to develop it further I'd like to contribute it to your projects, = of >>> course if there is interest in such a contribution. >>> I've created a C# class which wraps around the xsb.dll and makes allmos= t all >>> functions exported in the dll available to all other .NET languages. I'= ve >>> also implemented two methods for converting prolog terms to strings and >>> printing of terms (allmost direct translation of printpterm in cmain2.c= ). >>> Since my primary programming language is Python I also created a wrappe= r for >>> Python (using SWIG http://www.swig.org) which could be used to wrap XSB= and >>> Flora-2 to all the other scripting languages supported by SWIG. The Pyt= hon >>> wrapper is not fully implemented by now since I'd like to make the inte= rface >>> more intuitive to Python programmers and will probably try to combine t= he >>> power of Flora-2 and ZODB (http://www.zope.org/Products/ZODB3.3). >>> So if there's any interest I'll be very happy if I can contribute to yo= ur >>> projects. >>> >>> Best regards >>> >>> -- >>> Markus Schatten, dipl. inf. >>> Faculty of Organization and Informatics >>> Vara=C5=BEdin, Croatia >>> e-mail: mar...@fo... >>> http://www.foi.hr >>> >>> -----------------------------------------------------------------------= -- >>> Take Surveys. Earn Cash. Influence the Future of IT >>> Join SourceForge.net's Techsay panel and you'll get the chance to share= your >>> opinions on IT & business topics through brief surveys - and earn cash >>> http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID= =3DDEVDEV >>> _______________________________________________ >>> Flora-development mailing list >>> Flo...@li... >>> https://lists.sourceforge.net/lists/listinfo/flora-development >>> >>> >> >> >> >> ------------------------------------------------------------------------= - >> Take Surveys. Earn Cash. Influence the Future of IT >> Join SourceForge.net's Techsay panel and you'll get the chance to share = your >> opinions on IT & business topics through brief surveys - and earn cash >> http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID= =3DDEVDEV >> _______________________________________________ >> Xsb-development mailing list >> Xsb...@li... >> https://lists.sourceforge.net/lists/listinfo/xsb-development >> > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share y= our > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV > _______________________________________________ > Flora-development mailing list > Flo...@li... > https://lists.sourceforge.net/lists/listinfo/flora-development > |