2016-04-04 16 views
0

Ich habe mehr als 150 Themen und jedes Thema hat die folgenden Informationen, die ich in meinem deffacts setzen wollenKönnen Fakten in JESS Unter-Fakten haben?

> Subject: CS222 
> Pre-requisite: CS111 
> Units: 4 
> Priority-lvl: 3 
> Semester-offered: 2 
> Class: A 
>  Schedule: 9:00am - 10:00am (Mon & Wed) 
>  Slots Available: 30 
> Class: B 
>  Schedule: 9:00am - 10:00am (Tue - Thurs) 
>  Slots Available: 26 
> Class: C 
>  Schedule: 12:00nn - 01:30pm (Mon - Wed) 
>  Slots Available: 10 

Ich weiß, wie deffacts zu schreiben, aber das Problem hier ist, dass ich für jede Klasse zwei Informationen haben (was eindeutig subfact wird) und ich weiß nicht, wie ich diese Information in deffacts umwandeln kann.

Ich weiß, ich kann 4 deffacts mit solchen Informationen wie unten machen, aber ich finde den Code nicht effizient. Gibt es eine andere Möglichkeit, die obigen Informationen zu dekffizieren?

(Deffacts subject 
    (subject-information 
      (name CS222) 
      (identifier 1) 
      (pre-requisite CS111) 
      (priority-lvl 3) 
      (units 4) 
      (semester-offered 2))) 

(Deffacts Ident 
    (ident-class 
       (identifier 1) 
       (class A) 
       (schedule 0900-1000MW) 
       (stud-avail 30))) 

(Deffacts Ident 
    (ident-class 
       (identifier 1) 
       (class B) 
       (schedule 0900-1000TTH) 
       (stud-avail 26))) 

(Deffacts Ident 
    (ident-class 
       (identifier 1) 
       (class C) 
       (schedule 1200-0130MW) 
       (stud-avail 10))) 
+0

Fügen Sie keine Tags "Shell" zu Ihren Fragen hinzu. – laune

+0

Ich habe es hinzugefügt, weil ich dachte, dass JESS selbst Shell war. –

Antwort

0

Wenn Sie sich über den Speicherverbrauch sind besorgt: 150 Themen und ein paar Klassen für jeden ist überall keine OutOfMemory Ausnahme in der Nähe verursacht.

Wenn Sie über "Effizienz" in Bezug auf die Ausführungszeit besorgt sind, kann ich nicht sagen - es hängt von den Regeln ab, die auf diese Tatsachen zugreifen. Ob zwei unterschiedliche Formatierungen verwendet werden oder ob sie in eine einzige Komprimierung gequetscht werden, hängt davon ab, was Sie in den Regeln tun wollen, die auf die Daten zugreifen. Normalerweise ist es am besten, Listen als Eigenschaften zu vermeiden und sich an das relationale Modell, d. H. Was Sie haben, zu halten.

Der Steckplatz "Bezeichner" erscheint nicht in den Rohdaten. Ich nehme an, Sie haben es eingeführt, um die Klassentatsachen mit dem Subjekt in Zusammenhang zu bringen. Es könnte besser sein, stattdessen den Namen des Betreffs zu verwenden.

+0

Ich denke, ich werde nur mit Ihrem Weg folgen und die Kennung entfernen, so dass ich nicht 4 deffacts brauche. Vielen Dank! –

+0

Das habe ich * nicht * empfohlen - Sie werden noch 4 Fakten haben. Und (zumindest nicht ohne die Regeln für die Verarbeitung zu kennen) * * * nicht, * wiederhole: nicht, schlage vor, alles in einen großen Datenklumpen zu schreiben (durch Verwendung von Mehrfachschlitzen). – laune

+0

Nein, Ma'am, was ich meinte ist, ich werde den Identifikator entfernen und stattdessen den Subjektnamen verwenden. Das würde mich immer noch mit 3 Fakten belassen. –