Hello everybody,

We are using jess to develop an access control system. The access control
rule has been translated to a jess rule as shown below. We notice that
adding one of such rule consumes 500K - 1MB more memory. I wonder if it is
normal. Do you have any suggestion to reduce the memory usage by either
changing the rule format or changing jess/java VM configuration?

Here is an example of such rule. dynamic_triple and authorized_triple use
backward chaining.

(defrule rule1192814601 (declare (salience 50))

  (or

    (need-authorized_triple
     (predicate "http://mycampus.cs.cmu.edu/ontology#has_location";)
     (subject   ?owner)
     (object    ?location)
    )
    (need-authorized_triple
     (predicate "http://mycampus.cs.cmu.edu/ontology#has_location";)
     (subject   nil)
     (object    ?location)
    )
    (need-authorized_triple
     (predicate "http://mycampus.cs.cmu.edu/ontology#has_location";)
     (subject   ?owner)
     (object    nil)
    )
    (need-authorized_triple
     (predicate "http://mycampus.cs.cmu.edu/ontology#has_location";)
     (subject   nil)
     (object    nil)
    )

  )

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?owner)
   (object    "http://mycampus.cs.cmu.edu/ontology#Person";)
  )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/ontology#has_location";)
   (subject   ?owner)
   (object    ?location)

   )

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?location)
   (object    "http://mycampus.cs.cmu.edu/ontology#Location";)
  )

 (and

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?query)
   (object    "http://mycampus.cs.cmu.edu/QOWL#Query";)
  )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/QOWL#querytime";)
   (subject   ?query)
   (object    ?querytime)

   )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/QOWL#gpstime";)
   (subject   ?query)
   (object    ?gpstime)

   )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/QOWL#sender";)
   (subject   ?query)
   (object    ?sender)

   )

 )

 (and

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?querytime)
   (object    "http://mycampus.cs.cmu.edu/QOWL#Datetime";)
  )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/QOWL#hasDay";)
   (subject   ?querytime)
   (object    ?day)

   )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/QOWL#hasTime";)
   (subject   ?querytime)
   (object    ?time)

   )

 )

 (and

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?gpstime)
   (object    "http://mycampus.cs.cmu.edu/QOWL#Datetime";)
  )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/QOWL#hasDay";)
   (subject   ?gpstime)
   (object    ?gpsday)

   )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/QOWL#hasTime";)
   (subject   ?gpstime)
   (object    ?gpshourmin)

   )

 )

 (or

 (and

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   "http://www-2.cs.cmu.edu/Group/rule1192814601";)
   (object    "http://mycampus.cs.cmu.edu/ontology#Group";)
  )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/ontology#include";)
   (subject   "http://www-2.cs.cmu.edu/Group/rule1192814601";)
   (object    ?sender)

   )

 )

 (and

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   "http://www-2.cs.cmu.edu/Group/rule1192814601";)
   (object    "http://mycampus.cs.cmu.edu/ontology#Group";)
  )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/ontology#include";)
   (subject   "http://www-2.cs.cmu.edu/Group/rule1192814601";)
   (object    "http://www-2.cs.cmu.edu/People/Anybody";)

   )

 )

 )

 (or

 (and

 (and

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?day)
   (object    "http://mycampus.cs.cmu.edu/QOWL#Day";)
  )

   (test (member$ ?day (create$ "http://mycampus.cs.cmu.edu/day#Tuesday"; "
http://mycampus.cs.cmu.edu/day#Wednesday"; "
http://mycampus.cs.cmu.edu/day#Thursday"; "
http://mycampus.cs.cmu.edu/day#Saturday"; )))

 )

 (and

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?time)
   (object    "http://mycampus.cs.cmu.edu/QOWL#Time";)
  )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/ROWL#any";)
   (subject   ?time)
   (object    "false")

   )

   (test (> ?time "0400"))

   (test (< ?time "0700"))

 )

 )

 )

 (or

 (and

 (and

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?gpsday)
   (object    "http://mycampus.cs.cmu.edu/QOWL#Day";)
  )

   (test (member$ ?gpsday (create$ "http://mycampus.cs.cmu.edu/day#Tuesday";
"http://mycampus.cs.cmu.edu/day#Wednesday"; "
http://mycampus.cs.cmu.edu/day#Thursday"; "
http://mycampus.cs.cmu.edu/day#Saturday"; )))

 )

 (and

  (dynamic_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?gpshourmin)
   (object    "http://mycampus.cs.cmu.edu/QOWL#Time";)
  )

   (dynamic_triple
   (predicate "http://mycampus.cs.cmu.edu/ROWL#any";)
   (subject   ?gpshourmin)
   (object    "false")

   )

   (test (> ?gpshourmin "0400"))

   (test (< ?gpshourmin "0700"))

 )

 )

 )


  =>

 (assert
  (authorized_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?owner)
   (object    "http://mycampus.cs.cmu.edu/ontology#Person";)
  )
   )
 (assert
   (authorized_triple
   (predicate "http://mycampus.cs.cmu.edu/ontology#has_location";)
   (subject   ?owner)
   (object    ?location)

   )
       )
 (assert
  (authorized_triple
   (predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";)
   (subject   ?location)
   (object    "http://mycampus.cs.cmu.edu/ontology#Location";)
  )
   )
    (add-to-log ruleID rule1192814601 conversationID ?query location
?location)
)


Thank you very much.

Jinghai





-- 
------------------------------------
Jinghai Rao
Project Scientist

Institute for Software Research International
School of Computer Science
Carnegie Mellon University
5000 Forbes Avenue, 234 Smith Hall,
Pittsburgh, PA 15213

Telephone: +1 412 268 1357
Fax: +1 412 268 7287
Mobile: +1 412 580 9756
http://www.cs.cmu.edu/~jinghai

Reply via email to