45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var session = logic.create(null , function (msg) {
 | 
						|
  console.log(msg);
 | 
						|
});
 | 
						|
 | 
						|
var db = [
 | 
						|
'event(music).',
 | 
						|
'event(theatre).',
 | 
						|
'event(poetry).',
 | 
						|
'event(stage).',
 | 
						|
'event(guided_tour).',
 | 
						|
'music(ev0001).',
 | 
						|
'music(ev0002).',
 | 
						|
'theatre(ev0003).',
 | 
						|
'ort(ev0001,bremen).',
 | 
						|
'ort(ev0003,bremen).',
 | 
						|
'ort(ev0002,hamburg).',
 | 
						|
'event_in(Ort,X) :- (music(X);theatre(X)),ort(X,Ort).', 
 | 
						|
]
 | 
						|
var t0=time();
 | 
						|
var parsed=session.consult(db.join('\n'));
 | 
						|
print('consult',time()-t0,'ms');
 | 
						|
print(parsed);
 | 
						|
function answer(query) {
 | 
						|
  parsed=session.query(query);
 | 
						|
  print(parsed);
 | 
						|
  var result,results=[],error;
 | 
						|
  do { 
 | 
						|
   session.answer(function (_result) { 
 | 
						|
    result=_result;
 | 
						|
    if (result) {
 | 
						|
      var output=result.toString();
 | 
						|
      if (output.contains('throw(error')) {
 | 
						|
        return error=result.args[0].args;          
 | 
						|
      }
 | 
						|
      if (output=='{}') output='true';
 | 
						|
      else output=output.replace(/{|}/g,'').replace(/\//,' = ');
 | 
						|
      results.push(output);
 | 
						|
    } 
 | 
						|
   });
 | 
						|
  } while (result);
 | 
						|
  return results;
 | 
						|
}
 | 
						|
print(answer('event(X).'))
 | 
						|
print(answer('event_in(bremen,X).'))
 |