This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
R++: Adding Path-Based Rules to C++
May/June 2002 (vol. 14 no. 3)
pp. 638-658

Abstract—Object-oriented languages and rule-based languages offer two distinct and useful programming abstractions. However, previous attempts to integrate data-driven rules into object-oriented languages have typically achieved an uneasy union at best. R++ is a new, closer integration of the rule-based and object-oriented paradigms that extends C++ with a single programming construct, the path-based rule, as a new kind of class member. Path-based rules—data-driven rules that are restricted to following pointers between objects—are like automatic methods that are triggered by changes to the objects they monitor. Path-based rules provide a useful level of abstraction that encourages a more declarative style of programming and are valuable in object-oriented designs as a means of modeling dynamic collections of interdependent objects. Unlike more traditional pattern-matching rules, path-based rules are not at odds with the object-oriented paradigm and offer performance advantages for many natural applications.

[1] T.A. Cooper and N. Wogrin, Rule-Based Programming with OPS5. San Mateo, Calif.: Morgan Kaufmann, 1988.
[2] Proc. OOPSLA'94 Workshop Embedded Object-Oriented Production Systems (EOOPS), F. Pachet ed., Technical Report LAFORIA 94/24, Institut Blaise Pascal, 1994.
[3] Inference Corp., Art Reference Manual, 1987.
[4] D.P. Miranker, F.H. Burke, J.J. Steele, D.R. Haug, and J. Kolts, “The C++ Embeddable Rule System,” Int'l J. Artificial Intelligence Tools, vol. 2, no. 1, pp. 33-46, 1993.
[5] P. Albert, “ILog Rules, Embedding Rules in C++: Results and Limits,” Proc. OOPSLA '94 Workshop Embedded Object-Oriented Production Systems (EOOPS), Technical Report LAFORIA 94/24, Institut Blaise Pascal, 1994.
[6] C.L. Forgy, “RAL/C and RAL/C++: Rule-Based Extensions to C and C++,” Proc. OOPSLA '94 Workshop Embedded Object-Oriented Production Systems (EOOPS), F. Pachet, ed., Technical Report LAFORIA 94/24, Institut Blaise Pascal, 1994.
[7] The Haley Enterprise, Rete++: Seamless Integration of Rules and Objects Using the Rete Algorithm and C++, 1993.
[8] B. Stroustrup,The C++ Programming Language. Reading MA: Addison-Wesley, 1991, 2nd ed.
[9] USL, C++ Standard Components Release 3.0 Documentation, 1992.
[10] ObjectSpace, STL Toolkit, Version 2. 0. 1996.
[11] J. Crawford, D. Dvorak, D. Litman, A. Mishra, and P.F. Patel-Schneider, “Device Representation and Reasoning with Affective Relations,” Proc. 14th Int'l Joint Conf. Artificial Intelligence, pp. 1814-1820, Aug. 1995.
[12] A. Mishra, D. Litman, P. Patel-Schneider, J.P. Ros, A. Singhal, G. Weiss, J. Crawford, and D. Dvorak, “R++: Using Rules in Object-Oriented Designs,” Experience Report, Addendum to the Proc. OOPSLA '96 Conf. Object-Oriented Programming Systems, Languages, and Applications, 1996.
[13] G. Weiss, J.P. Ros, and A. Singhal, “Answer: Network Monitoring Using Object-Oriented Rules,” Proc. 10th Conf. Innovative Applications of Artificial Intelligence, 1998.
[14] G. Weiss, J.P. Ros, and A. Singhal, “Implementing Design Patterns with Object-Oriented Rules,” J. Object-Oriented Programming, to appear.
[15] J.M. Crawford and B. Kuipers, “Negation and Proof by Contradiction in Access-Limited Logic,” Proc. Ninth Nat'l Conf. Artificial Intelligence, pp. 897-903, July 1991.
[16] J.M. Crawford, “Access-Limited Logic—A Language for Knowledge Representation,” PhD thesis, Dept. of Computer Sciences, Univ. of Texas at Austin, 1990, also published as Technical Report AI 90-141, Artificial Intelligence Lab., Univ. of Texas at Austin.
[17] D.J. Litman, A.K. Mishra, and P.F. Patel-Schneider, “Modeling Dynamic Collections of Interdependent Objects Using Path-Based Rules,” Proc. OOPSLA '97 Conf. Object-Oriented Programming Systems, Languages, and Applications, 1997.
[18] C.L. Forgy, “RETE: A Fast Algorithm for the Many Pattern/Many Object Pattern Matching Problem,” Artificial Intelligence, vol. 19, pp. 17-37, 1982.
[19] D.P. Miranker, D.A. Brant, B. Lofaso, and D. Gadbois, “On the Performance of Lazy Matching in Production Systems,” Proc. Am. Assoc. of Artifical Intelligence '90, pp. 685-692, 1990.
[20] Production Systems Tech nology, RAL Language Guide, version 1, 1991.
[21] R. Agrawal and N.H.Gehani, “ODE (Object Database and Environment): The Language and The Data Model,” Proc. SIGMOD, ACM Press, New York, 1989, pp. 36-45.
[22] S. Dar, R. Agrawal, and N.H. Gehani, “The O++ Database Programming Language: Implementation and Experience,” Proc. Ninth IEEE Int'l Conf. Data Eng., 1993.
[23] D.P. Miranker and B.J. Lofaso,"The organization and performance of a TREAT-based production system compiler," IEEE Trans. Knowledge and Data Engineering, vol. 3, no. 1, pp. 3-10, Mar. 1991.
[24] A.J. Pasik, "A Source-to-Source Transformation for Increasing Rule-Based System Parallelism," IEEE Trans. Knowledge and Data Eng., vol. 4, no. 4, pp. 336-343, Aug. 1992.
[25] P.H. Winston, Artificial Intelligence. Reading, Mass.: Addison-Wesley, 1984.
[26] D.A. Brant, T. Grose, B. Lofaso, and D.P. Miranker, “Effects of Database Size on Rule System Performance: Five Case Studies,” Proc. 17th Int'l Conf. Very Large Databases, 1991.
[27] E. Anwar, L. Maugis, and S. Chakravarthy, “A New Perspective on Rule Support for Object-Oriented Databases,” Proc. ACM SIGMOD Int'l Conf. Management of Data, P. Buneman and S. Jajodia, eds., pp. 99–108, 1993.
[28] J. Thien, “R++,” AT&T Internal Memorandum, June 1996.
[29] L. Warshaw and D. Miranker, “A Case Study of Venus and a Declarative Basis for Rule Modules,” Proc. Fifth Int'l Conf. Information and Knowledge Management (CIKM-96), 1996.
[30] S. Correl and D.P. Miranker, “On Isolation, Concurrency, and the Venus Rule Language,” Proc. Fourth Int'l Conf. Information and Knowledge Management (CIKM'95), 1995.
[31] N. Gehani and H. Jagadish,"Ode as an active database: Constraints and triggers," Proc. 17th Int'l Conf. Very Large Data Bases, Sept. 1991.
[32] N. Gehani and H. Jagadish,"Ode as an active database: Constraints and triggers," Proc. 17th Int'l Conf. Very Large Data Bases, Sept. 1991.
[33] O. Diaz,N. Paton,, and P. Gray,“Rule management in object-oriented databases: A unified approach,” Proc. 17th Int’l Conf. Very Large Data Bases,Barcelona, Spain, Sept. 1991.
[34] A.P. Buchmann, J. Zimmermann, J.A. Blakeley, and D.L. Wells, “Building an Integrated Active Oodbms: Requirements, Architecture, and Design Decisions,” Proc. 11th Int'l Conf. Data Eng., 1995.
[35] S. Gatziu and K.R. Dittrich, “Events in an Active Object-Oriented Database System,” Proc. First Int'l Workshop Rules in Database Systems, 1993.
[36] U. Dayal,B. Blaustein,A. Buchmann et al., , "The HiPAC project: Combining active databases and timing constraints," SIGMOD Record, vol. 17, no. 1, pp. 51-70, Mar. 1988.
[37] N.H. Gehani, H.V. Jagadish, and O. Shmueli, "Event Specification in an Object-Oriented Database," Proc. ACM SIGMOD Int'l Conf. Management of Data, pp. 81-90, 1992.
[38] S. Potamianos and M. Stonebraker, “The POSTGRES Rule System,” Active Database Systems: Triggers and Rules for Advanced Database Processing. J. Widom and S. Ceri, eds., San Francisco: Morgan Kaufmann, 1996.
[39] J. Widom, “The Starburst Rule System,” Active Database Systems: Triggers and Rules for Advanced Database Processing. J. Widom and S. Ceri, eds., San Francisco: Morgan Kaufmann, 1996.
[40] D. Srivastava, R. Ramakrishnan, S. Sudarshan, and P. Seshadri, “Coral++: Adding Object-Orientation to a Logic Database Language,” Proc. 19th Int'l Conf. Very Large Databases, 1993.
[41] B. Freeman-Benson, G. Lopez, and A. Borning, “Implementing Constraint Imperative Programming Languages: The Kaleidoscope'93 Virtual Machine,” Proc. OOPSLA '94 Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 23-27, Oct. 1994.
[42] J. Crawford, D. Dvorak, D. Litman, A. Mishra, and P.F. Patel-Schneider, “Path-Based Rules in Object-Oriented Programming,” Proc. 13th Nat'l Conf. Artificial Intelligence, pp. 490-497, Aug. 1996.
[43] Active Database Systems: Triggers and Rules for Advanced Database Processing. J. Widom and S. Ceri, eds., San Francisco: Morgan Kaufmann, 1996.

Index Terms:
Object-oriented models and systems, rule-based processing and systems, C++, knowledge-based systems, expert systems
Citation:
D. Litman, P.F. Patel-Schneider, A. Mishra, J. Crawford, D. Dvorak, "R++: Adding Path-Based Rules to C++," IEEE Transactions on Knowledge and Data Engineering, vol. 14, no. 3, pp. 638-658, May-June 2002, doi:10.1109/TKDE.2002.1000347
Usage of this product signifies your acceptance of the Terms of Use.