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