Импорт базы знаний журнала данных в Racket

#import #racket #datalog

#импорт #racket #журнал данных

Вопрос:

Возможно ли в Datalog Racket импортировать и использовать базу знаний, определенную в файле x, объявленном как «#lang datalog», в другой файл y, объявленный как «#lang racket»?

пример:

 ;; x.rkt

#lang datalog

parent(john, douglas).


;; y.rkt

#lang racket

(require datalog)

(require "x.rkt")

;;(datalog parent (? (X douglas)))  DOES NOT WORK
  

Ответ №1:

Экспортируемая теория из #lang datalog всегда именуется theory , поэтому ваша y.rkt должна быть:

 #lang racket

(require datalog
         "x.rkt")

(datalog theory (? (parent X douglas)))
  

Обратите внимание, что мы запрашиваем parent таблицу, поэтому нам нужно указать ее как (? (parent X douglas)) . (? (X douglas)) неверно.

Наконец, если вы хотите переименовать экспортированную теорию из x.rkt , вы можете использовать rename-in :

 #lang racket

(require datalog
         (rename-in "x.rkt" [theory my-thy]))

(datalog my-thy (? (parent X douglas)))