01: /******************************************************************
02: * File: MakeTemp.java
03: * Created by: Dave Reynolds
04: * Created on: 13-Apr-03
05: *
06: * (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
07: * [See end of file]
08: * $Id: MakeTemp.java,v 1.10 2008/01/02 12:06:20 andy_seaborne Exp $
09: *****************************************************************/package com.hp.hpl.jena.reasoner.rulesys.builtins;
10:
11: import com.hp.hpl.jena.reasoner.rulesys.*;
12: import com.hp.hpl.jena.graph.*;
13:
14: /**
15: * Create a new anonymous node and bind it to the each argument
16: *
17: * @author <a href="mailto:der@hplb.hpl.hp.com">Dave Reynolds</a>
18: * @version $Revision: 1.10 $ on $Date: 2008/01/02 12:06:20 $
19: */
20: public class MakeTemp extends BaseBuiltin {
21:
22: /**
23: * Return a name for this builtin, normally this will be the name of the
24: * functor that will be used to invoke it.
25: */
26: public String getName() {
27: return "makeTemp";
28: }
29:
30: /**
31: * This method is invoked when the builtin is called in a rule body.
32: * @param args the array of argument values for the builtin, this is an array
33: * of Nodes, some of which may be Node_RuleVariables.
34: * @param length the length of the argument list, may be less than the length of the args array
35: * for some rule engines
36: * @param context an execution context giving access to other relevant data
37: * @return return true if the buildin predicate is deemed to have succeeded in
38: * the current environment
39: */
40: public boolean bodyCall(Node[] args, int length, RuleContext context) {
41: for (int i = 0; i < length; i++) {
42: if (!context.getEnv().bind(args[i], Node.createAnon()))
43: return false;
44: }
45: return true;
46: }
47:
48: /**
49: * This method is invoked when the builtin is called in a rule head.
50: * Such a use is only valid in a forward rule.
51: * Exected args are the instance to be annotated, the property to use and the type
52: * of the resulting bNode.
53: * @param args the array of argument values for the builtin, this is an array
54: * of Nodes.
55: * @param context an execution context giving access to other relevant data
56: */
57: public void headAction(Node[] args, RuleContext context) {
58: // Can't be used in the head
59: throw new BuiltinException(this , context, "can't do "
60: + getName() + " in rule heads");
61: }
62: }
63:
64: /*
65: (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
66: All rights reserved.
67:
68: Redistribution and use in source and binary forms, with or without
69: modification, are permitted provided that the following conditions
70: are met:
71:
72: 1. Redistributions of source code must retain the above copyright
73: notice, this list of conditions and the following disclaimer.
74:
75: 2. Redistributions in binary form must reproduce the above copyright
76: notice, this list of conditions and the following disclaimer in the
77: documentation and/or other materials provided with the distribution.
78:
79: 3. The name of the author may not be used to endorse or promote products
80: derived from this software without specific prior written permission.
81:
82: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
83: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
84: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
85: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
86: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
87: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
88: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
89: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
90: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
91: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
92: */
|