01: /******************************************************************
02: * File: RuleProprocessHook.java
03: * Created by: Dave Reynolds
04: * Created on: 18-Jun-2003
05: *
06: * (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
07: * [See end of file]
08: * $Id: RulePreprocessHook.java,v 1.9 2008/01/02 12:07:47 andy_seaborne Exp $
09: *****************************************************************/package com.hp.hpl.jena.reasoner.rulesys;
10:
11: import com.hp.hpl.jena.graph.Graph;
12: import com.hp.hpl.jena.graph.Triple;
13: import com.hp.hpl.jena.reasoner.Finder;
14:
15: /**
16: * Implementors of this interface can be used as proprocessing passes
17: * during intialization of (hybrid) rule systems. They are typically
18: * used to generate additional data-dependent rules or additional
19: * deductions (normally from comprehension axioms) which are cheaper
20: * this way than using the generic rule engines.
21: *
22: * @author <a href="mailto:der@hplb.hpl.hp.com">Dave Reynolds</a>
23: * @version $Revision: 1.9 $ on $Date: 2008/01/02 12:07:47 $
24: */
25: public interface RulePreprocessHook {
26:
27: /**
28: * Invoke the preprocessing hook. This will be called during the
29: * preparation time of the hybrid reasoner.
30: * @param infGraph the inference graph which is being prepared,
31: * the hook code can use this to add pure deductions or add additional
32: * rules (using addRuleDuringPrepare).
33: * @param dataFind the finder which packages up the raw data (both
34: * schema and data bind) and any cached transitive closures.
35: * @param inserts a temporary graph into which the hook should insert
36: * all new deductions that should be seen by the rules.
37: */
38: public void run(FBRuleInfGraph infGraph, Finder dataFind,
39: Graph inserts);
40:
41: /**
42: * Validate a triple add to see if it should reinvoke the hook. If so
43: * then the inference will be restarted at next prepare time. Incremental
44: * re-processing is not yet supported.
45: */
46: public boolean needsRerun(FBRuleInfGraph infGraph, Triple t);
47:
48: }
49:
50: /*
51: (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
52: All rights reserved.
53:
54: Redistribution and use in source and binary forms, with or without
55: modification, are permitted provided that the following conditions
56: are met:
57:
58: 1. Redistributions of source code must retain the above copyright
59: notice, this list of conditions and the following disclaimer.
60:
61: 2. Redistributions in binary form must reproduce the above copyright
62: notice, this list of conditions and the following disclaimer in the
63: documentation and/or other materials provided with the distribution.
64:
65: 3. The name of the author may not be used to endorse or promote products
66: derived from this software without specific prior written permission.
67:
68: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
69: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
70: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
71: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
72: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
73: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
74: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
75: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
76: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
77: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
78: */
|