修订版 | 394 (tree) |
---|---|
时间 | 2010-05-21 15:39:49 |
作者 | ksaito0717 |
fix.
@@ -173,6 +173,7 @@ | ||
173 | 173 | engine.registerBuiltin(new SMailBuiltin()); |
174 | 174 | engine.registerBuiltin(new Long2DateTimeBuiltin()); |
175 | 175 | engine.registerBuiltin(new DateTime2LongBuiltin()); |
176 | + engine.registerBuiltin(new UriTailBuiltin()); | |
176 | 177 | // Axis2に依存するビルトイン |
177 | 178 | engine.registerBuiltin(new SendN3Builtin()); |
178 | 179 | engine.registerBuiltin(new SendN3RESTBuiltin()); |
@@ -54,7 +54,7 @@ | ||
54 | 54 | // Exceptionを出すので、とりあえずnullに |
55 | 55 | // しておく。 |
56 | 56 | System.setSecurityManager(null); |
57 | - final String argsCopy[] = args; | |
57 | + //final String argsCopy[] = args; | |
58 | 58 | java.awt.EventQueue.invokeLater(new Runnable() { |
59 | 59 | public void run() { |
60 | 60 | JenaCheck jc = new JenaCheck(); |
@@ -26,8 +26,7 @@ | ||
26 | 26 | public boolean bodyCall(Node[] args, int length, RuleContext context) { |
27 | 27 | if (length != 2) |
28 | 28 | return false; |
29 | - doKeitaiso(args,length,context); | |
30 | - return true; | |
29 | + return doKeitaiso(args,length,context); | |
31 | 30 | } |
32 | 31 | |
33 | 32 | public void headAction(Node[] args, int length, RuleContext context) { |
@@ -34,15 +33,15 @@ | ||
34 | 33 | doKeitaiso(args,length,context); |
35 | 34 | } |
36 | 35 | |
37 | - void doKeitaiso(Node[] args,int length,RuleContext context) { | |
36 | + boolean doKeitaiso(Node[] args,int length,RuleContext context) { | |
38 | 37 | try { |
39 | 38 | String inStr = ((Node_Literal) args[0]).getLiteralLexicalForm(); |
40 | 39 | StringTagger tagger = StringTagger.getInstance(); |
41 | 40 | Token[] token = tagger.analyze(inStr); |
42 | 41 | |
43 | - Node first = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
44 | - Node rest = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
45 | - Node list = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
42 | + Node first = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
43 | + Node rest = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
44 | + Node list = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
46 | 45 | for (int i=(token.length-1);i>=0;i--) { |
47 | 46 | Node t = Node.createLiteral(token[i].getBasicString()); |
48 | 47 | Node tail = list; |
@@ -51,9 +50,10 @@ | ||
51 | 50 | context.add(new Triple(list,rest,tail)); |
52 | 51 | } |
53 | 52 | BindingEnvironment env = context.getEnv(); |
54 | - env.bind(args[1],list); | |
53 | + return env.bind(args[1],list); | |
55 | 54 | } catch(Exception e) { |
56 | 55 | e.printStackTrace(); |
56 | + return false; | |
57 | 57 | } |
58 | 58 | } |
59 | 59 | } |
@@ -33,6 +33,8 @@ | ||
33 | 33 | |
34 | 34 | boolean change(Node args[]) { |
35 | 35 | A3NewBuiltin.MyFrame f = A3NewBuiltin.hash.get(args[0]); |
36 | + if (f==null) | |
37 | + return false; | |
36 | 38 | String v = ((Node_Literal) args[1]).getLiteralLexicalForm(); |
37 | 39 | v.trim(); |
38 | 40 | try { |
@@ -24,8 +24,7 @@ | ||
24 | 24 | public boolean bodyCall(Node[] args, int length, RuleContext context) { |
25 | 25 | if (length == 0) |
26 | 26 | return false; |
27 | - makeListAndBind(args,length,context); | |
28 | - return true; | |
27 | + return makeListAndBind(args,length,context); | |
29 | 28 | } |
30 | 29 | |
31 | 30 | public void headAction(Node[] args, int length, RuleContext context) { |
@@ -32,10 +31,10 @@ | ||
32 | 31 | makeListAndBind(args,length,context); |
33 | 32 | } |
34 | 33 | |
35 | - void makeListAndBind(Node[] args,int length,RuleContext context) { | |
36 | - Node first = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
37 | - Node rest = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
38 | - Node list = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
34 | + boolean makeListAndBind(Node[] args,int length,RuleContext context) { | |
35 | + Node first = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
36 | + Node rest = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
37 | + Node list = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
39 | 38 | for (int i=(length-1);i>0;i--) { |
40 | 39 | Node tail = list; |
41 | 40 | list = Node.createAnon(); |
@@ -43,6 +42,6 @@ | ||
43 | 42 | context.add(new Triple(list,rest,tail)); |
44 | 43 | } |
45 | 44 | BindingEnvironment env = context.getEnv(); |
46 | - env.bind(args[0],list); | |
45 | + return env.bind(args[0],list); | |
47 | 46 | } |
48 | 47 | } |
@@ -25,8 +25,7 @@ | ||
25 | 25 | public boolean bodyCall(Node[] args, int length, RuleContext context) { |
26 | 26 | if (length != 2) |
27 | 27 | return false; |
28 | - list2string(args,length,context); | |
29 | - return true; | |
28 | + return list2string(args,length,context); | |
30 | 29 | } |
31 | 30 | |
32 | 31 | public void headAction(Node[] args, int length, RuleContext context) { |
@@ -33,16 +32,16 @@ | ||
33 | 32 | list2string(args,length,context); |
34 | 33 | } |
35 | 34 | |
36 | - void list2string(Node[] args,int length,RuleContext context) { | |
35 | + boolean list2string(Node[] args,int length,RuleContext context) { | |
37 | 36 | String ret = list2stringR(args[0],context); |
38 | 37 | BindingEnvironment env = context.getEnv(); |
39 | - env.bind(args[1],Node.createLiteral(ret)); | |
38 | + return env.bind(args[1],Node.createLiteral(ret)); | |
40 | 39 | } |
41 | 40 | String list2stringR(Node n,RuleContext context) { |
42 | 41 | String ret = ""; |
43 | - Node first = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
44 | - Node rest = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
45 | - Node nil = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
42 | + Node first = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
43 | + Node rest = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
44 | + Node nil = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
46 | 45 | ArrayList<Node> al = new ArrayList<Node>(); |
47 | 46 | Node tmpN = n; |
48 | 47 | while (!tmpN.equals(nil)) { |
@@ -36,9 +36,9 @@ | ||
36 | 36 | System.out.println(); |
37 | 37 | } |
38 | 38 | void printListR(Node n,RuleContext context) { |
39 | - Node first = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
40 | - Node rest = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
41 | - Node nil = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
39 | + Node first = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
40 | + Node rest = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
41 | + Node nil = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
42 | 42 | ArrayList<Node> al = new ArrayList<Node>(); |
43 | 43 | Node tmpN = n; |
44 | 44 | while (!tmpN.equals(nil)) { |
@@ -4,6 +4,8 @@ | ||
4 | 4 | import com.hp.hpl.jena.reasoner.rulesys.builtins.BaseBuiltin; |
5 | 5 | import com.hp.hpl.jena.reasoner.rulesys.RuleContext; |
6 | 6 | import com.hp.hpl.jena.reasoner.rulesys.BindingEnvironment; |
7 | +import com.hp.hpl.jena.reasoner.rulesys.Util; | |
8 | + | |
7 | 9 | import java.text.SimpleDateFormat; |
8 | 10 | import java.util.Date; |
9 | 11 |
@@ -24,14 +26,13 @@ | ||
24 | 26 | public boolean bodyCall(Node[] args, int length, RuleContext context) { |
25 | 27 | if (length != 2) |
26 | 28 | return false; |
27 | - datetime2long(args,length,context); | |
28 | - return true; | |
29 | + return datetime2long(args,length,context); | |
29 | 30 | } |
30 | 31 | |
31 | 32 | public void headAction(Node[] args, int length, RuleContext context) { |
32 | 33 | datetime2long(args,length,context); |
33 | 34 | } |
34 | - void datetime2long(Node[] args, int length, RuleContext context) { | |
35 | + boolean datetime2long(Node[] args, int length, RuleContext context) { | |
35 | 36 | String s = ((Node_Literal)args[0]).getLiteralLexicalForm(); |
36 | 37 | SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); |
37 | 38 | Date date = null; |
@@ -42,8 +43,8 @@ | ||
42 | 43 | date = new Date(0l); |
43 | 44 | } |
44 | 45 | long l = date.getTime(); |
45 | - Node n = Node.create(""+l); | |
46 | + Node n = Util.makeLongNode(l); | |
46 | 47 | BindingEnvironment env = context.getEnv(); |
47 | - env.bind(args[1],n); | |
48 | + return env.bind(args[1],n); | |
48 | 49 | } |
49 | 50 | } |
@@ -22,17 +22,16 @@ | ||
22 | 22 | public boolean bodyCall(Node[] args, int length, RuleContext context) { |
23 | 23 | if (length != 2) |
24 | 24 | return false; |
25 | - int2string(args,length,context); | |
26 | - return true; | |
25 | + return int2string(args,length,context); | |
27 | 26 | } |
28 | 27 | |
29 | 28 | public void headAction(Node[] args, int length, RuleContext context) { |
30 | 29 | int2string(args,length,context); |
31 | 30 | } |
32 | - void int2string(Node[] args, int length, RuleContext context) { | |
31 | + boolean int2string(Node[] args, int length, RuleContext context) { | |
33 | 32 | String s = ((Node_Literal)args[0]).getLiteralLexicalForm(); |
34 | 33 | Node n = Node.createLiteral(s); |
35 | 34 | BindingEnvironment env = context.getEnv(); |
36 | - env.bind(args[1],n); | |
35 | + return env.bind(args[1],n); | |
37 | 36 | } |
38 | 37 | } |
@@ -5,7 +5,6 @@ | ||
5 | 5 | import com.hp.hpl.jena.graph.*; |
6 | 6 | import com.hp.hpl.jena.reasoner.rulesys.builtins.BaseBuiltin; |
7 | 7 | import com.hp.hpl.jena.reasoner.rulesys.RuleContext; |
8 | -import com.hp.hpl.jena.reasoner.rulesys.BindingEnvironment; | |
9 | 8 | |
10 | 9 | /** |
11 | 10 | * SMTPでメールを出すためのビルトイン。ビルトインの名前は'smail'。 |
@@ -38,8 +38,7 @@ | ||
38 | 38 | public boolean bodyCall(Node[] args, int length, RuleContext context) { |
39 | 39 | if (length != 2) |
40 | 40 | return false; |
41 | - doKeitaisokaiseki(args,length,context); | |
42 | - return true; | |
41 | + return doKeitaisokaiseki(args,length,context); | |
43 | 42 | } |
44 | 43 | |
45 | 44 | public void headAction(Node[] args, int length, RuleContext context) { |
@@ -46,7 +45,7 @@ | ||
46 | 45 | doKeitaisokaiseki(args,length,context); |
47 | 46 | } |
48 | 47 | |
49 | - void doKeitaisokaiseki(Node[] args,int length,RuleContext context) { | |
48 | + boolean doKeitaisokaiseki(Node[] args,int length,RuleContext context) { | |
50 | 49 | try { |
51 | 50 | String inStr = ((Node_Literal) args[0]).getLiteralLexicalForm(); |
52 | 51 | StringTagger tagger = StringTagger.getInstance(); |
@@ -61,9 +60,10 @@ | ||
61 | 60 | Node list = makeList(nodes,context); |
62 | 61 | |
63 | 62 | BindingEnvironment env = context.getEnv(); |
64 | - env.bind(args[1],list); | |
63 | + return env.bind(args[1],list); | |
65 | 64 | } catch(Exception e) { |
66 | 65 | e.printStackTrace(); |
66 | + return false; | |
67 | 67 | } |
68 | 68 | } |
69 | 69 | Node doKeitaisokaiseki2(Token t,RuleContext context) { |
@@ -77,9 +77,9 @@ | ||
77 | 77 | return makeList(nodes,context); |
78 | 78 | } |
79 | 79 | Node makeList(Node nodes[],RuleContext context) { |
80 | - Node first = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
81 | - Node rest = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
82 | - Node list = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
80 | + Node first = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
81 | + Node rest = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
82 | + Node list = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
83 | 83 | for (int i=(nodes.length-1);i>=0;i--) { |
84 | 84 | Node tail = list; |
85 | 85 | list = Node.createAnon(); |
@@ -0,0 +1,47 @@ | ||
1 | +package jp.ac.do_johodai.j314.sw.je; | |
2 | + | |
3 | +import com.hp.hpl.jena.graph.*; | |
4 | +import com.hp.hpl.jena.reasoner.rulesys.builtins.BaseBuiltin; | |
5 | +import com.hp.hpl.jena.reasoner.rulesys.RuleContext; | |
6 | +import com.hp.hpl.jena.reasoner.rulesys.BindingEnvironment; | |
7 | + | |
8 | +/** | |
9 | + * 第1引数(URI)の最後のスラッシュ以降の文字列を取り出して | |
10 | + * 第2引数の変数に代入する。 | |
11 | + * ビルトインの名前は'uri_tail'。 | |
12 | + */ | |
13 | +public class UriTailBuiltin extends BaseBuiltin { | |
14 | + public String getName() { | |
15 | + return "uri_tail"; | |
16 | + } | |
17 | + | |
18 | + public int getArgLength() { | |
19 | + return 2; | |
20 | + } | |
21 | + | |
22 | + public boolean bodyCall(Node[] args, int length, RuleContext context) { | |
23 | + if (length != 2) | |
24 | + return false; | |
25 | + return uri_tail(args,length,context); | |
26 | + } | |
27 | + | |
28 | + public void headAction(Node[] args, int length, RuleContext context) { | |
29 | + uri_tail(args,length,context); | |
30 | + } | |
31 | + boolean uri_tail(Node[] args, int length, RuleContext context) { | |
32 | + try { | |
33 | + String s = args[0].getURI(); | |
34 | + BindingEnvironment env = context.getEnv(); | |
35 | + if (s.lastIndexOf('/')==-1) { | |
36 | + Node n = Node.createLiteral(s); | |
37 | + return env.bind(args[1],n); | |
38 | + } else { | |
39 | + Node n = Node.createLiteral(s.substring(s.lastIndexOf('/')+1)); | |
40 | + return env.bind(args[1],n); | |
41 | + } | |
42 | + } catch(Exception e) { | |
43 | + System.out.println("uri_tail error! "+e.getClass().getName()); | |
44 | + return false; | |
45 | + } | |
46 | + } | |
47 | +} |
@@ -29,8 +29,7 @@ | ||
29 | 29 | String s = br.readLine(); |
30 | 30 | Node n = Node.createLiteral(s); |
31 | 31 | BindingEnvironment env = context.getEnv(); |
32 | - env.bind(args[0], n); | |
33 | - return true; | |
32 | + return env.bind(args[0], n); | |
34 | 33 | } catch (IOException e) { |
35 | 34 | e.printStackTrace(); |
36 | 35 | return false; |
@@ -13,7 +13,6 @@ | ||
13 | 13 | import com.hp.hpl.jena.reasoner.rulesys.GenericRuleReasoner; |
14 | 14 | import com.hp.hpl.jena.reasoner.rulesys.Rule; |
15 | 15 | import com.hp.hpl.jena.reasoner.rulesys.BuiltinRegistry; |
16 | -import com.hp.hpl.jena.reasoner.rulesys.RuleReasoner; | |
17 | 16 | import com.hp.hpl.jena.query.*; |
18 | 17 | import com.hp.hpl.jena.graph.*; |
19 | 18 | import com.hp.hpl.jena.reasoner.InfGraph; |
@@ -28,7 +27,7 @@ | ||
28 | 27 | ArrayList<JEMessage> requestQueue; |
29 | 28 | Timer timer = new Timer(); |
30 | 29 | |
31 | - List rules = new ArrayList(); | |
30 | + List<Rule> rules = new ArrayList<Rule>(); | |
32 | 31 | boolean enableOWLDL = false; |
33 | 32 | boolean trace = false; |
34 | 33 | String reasonerMode = "hybrid"; |
@@ -37,7 +37,6 @@ | ||
37 | 37 | String s = String.format(f,ss); |
38 | 38 | Node n = Node.createLiteral(s); |
39 | 39 | BindingEnvironment env = context.getEnv(); |
40 | - env.bind(args[1],n); | |
41 | - return true; | |
40 | + return env.bind(args[1],n); | |
42 | 41 | } |
43 | 42 | } |
@@ -36,6 +36,8 @@ | ||
36 | 36 | |
37 | 37 | boolean print(Node args[]) { |
38 | 38 | A3NewBuiltin.MyFrame f = A3NewBuiltin.hash.get(args[0]); |
39 | + if (f==null) | |
40 | + return false; | |
39 | 41 | String v = ""; |
40 | 42 | for (int i=1;i<args.length;i++) { |
41 | 43 | v = v + ((Node_Literal) args[i]).getLiteralLexicalForm(); |
@@ -11,13 +11,7 @@ | ||
11 | 11 | * ビルトインの名前は'state_get'。 |
12 | 12 | * 状態を保存しておくための特別の変数領域を確保するビルトイン。 |
13 | 13 | * 論理学的には禁断のビルトインになるかもしれない。 |
14 | - * | |
15 | - * 第1引数は、代入された変数を指定しても良い。でも、たぶん、 | |
16 | - * bindビルトインやlistEntryビルトインなどで代入された変数では | |
17 | - * だめで、ルールの条件部で当てはめられた変数でないとだめっぽい。 | |
18 | - * それと、第二引数の変数もbindと同じ方法で代入しているので、 | |
19 | - * state_getにより代入された変数も危険。 | |
20 | - * このへんはJenaの実装依存みたいで、ちょっと気持わるい。 | |
14 | + * 第1引数は、代入された変数を指定しても良い。 | |
21 | 15 | */ |
22 | 16 | public class StateGetBuiltin extends BaseBuiltin { |
23 | 17 |
@@ -36,6 +36,8 @@ | ||
36 | 36 | |
37 | 37 | boolean yesNo(Node args[], RuleContext context) { |
38 | 38 | A3NewBuiltin.MyFrame f = A3NewBuiltin.hash.get(args[0]); |
39 | + if (f==null) | |
40 | + return false; | |
39 | 41 | String v = f.yesNo(); |
40 | 42 | Node n = Node.createLiteral(v); |
41 | 43 | BindingEnvironment env = context.getEnv(); |
@@ -10,11 +10,7 @@ | ||
10 | 10 | * ビルトインの名前は'state_set'。 |
11 | 11 | * 状態を保存しておくための特別の変数領域を確保するビルトイン。 |
12 | 12 | * 論理学的には禁断のビルトインになるかもしれない。 |
13 | - * | |
14 | - * 第1、第2引数とも、代入された変数を指定しても良い。でも、たぶん、 | |
15 | - * bindビルトインやlistEntryビルトインなどで代入された変数では | |
16 | - * だめで、ルールの条件部で当てはめられた変数でないとだめっぽい。 | |
17 | - * このへんはJenaの実装依存みたいで、ちょっと気持わるい。 | |
13 | + * 第1、第2引数とも、代入された変数を指定しても良い。 | |
18 | 14 | */ |
19 | 15 | public class StateSetBuiltin extends BaseBuiltin { |
20 | 16 | static HashMap<Node,Node> map = new HashMap<Node,Node>(); |
@@ -34,6 +34,8 @@ | ||
34 | 34 | |
35 | 35 | boolean setVisible(Node[] args) { |
36 | 36 | A3NewBuiltin.MyFrame f = A3NewBuiltin.hash.get(args[0]); |
37 | + if (f==null) | |
38 | + return false; | |
37 | 39 | String v = ((Node_Literal) args[1]).getLiteralLexicalForm(); |
38 | 40 | v.trim(); |
39 | 41 | int i = Integer.parseInt(v); |
@@ -32,7 +32,6 @@ | ||
32 | 32 | } |
33 | 33 | Node n = Node.createLiteral(s); |
34 | 34 | BindingEnvironment env = context.getEnv(); |
35 | - env.bind(args[0],n); | |
36 | - return true; | |
35 | + return env.bind(args[0],n); | |
37 | 36 | } |
38 | 37 | } |
@@ -25,14 +25,13 @@ | ||
25 | 25 | public boolean bodyCall(Node[] args, int length, RuleContext context) { |
26 | 26 | if (length != 2) |
27 | 27 | return false; |
28 | - long2datetime(args,length,context); | |
29 | - return true; | |
28 | + return long2datetime(args,length,context); | |
30 | 29 | } |
31 | 30 | |
32 | 31 | public void headAction(Node[] args, int length, RuleContext context) { |
33 | 32 | long2datetime(args,length,context); |
34 | 33 | } |
35 | - void long2datetime(Node[] args, int length, RuleContext context) { | |
34 | + boolean long2datetime(Node[] args, int length, RuleContext context) { | |
36 | 35 | String s = ((Node_Literal)args[0]).getLiteralLexicalForm(); |
37 | 36 | long l = Long.parseLong(s); |
38 | 37 | Date date = new Date(l); |
@@ -40,6 +39,6 @@ | ||
40 | 39 | String d = sdf.format(date); |
41 | 40 | Node n = Node.createLiteral(d,null,XSDDatatype.XSDdateTime); |
42 | 41 | BindingEnvironment env = context.getEnv(); |
43 | - env.bind(args[1],n); | |
42 | + return env.bind(args[1],n); | |
44 | 43 | } |
45 | 44 | } |
@@ -23,8 +23,7 @@ | ||
23 | 23 | public boolean bodyCall(Node[] args, int length, RuleContext context) { |
24 | 24 | if (length != 3) |
25 | 25 | return false; |
26 | - makeListAndBind(args,length,context); | |
27 | - return true; | |
26 | + return makeListAndBind(args,length,context); | |
28 | 27 | } |
29 | 28 | |
30 | 29 | public void headAction(Node[] args, int length, RuleContext context) { |
@@ -31,13 +30,13 @@ | ||
31 | 30 | makeListAndBind(args,length,context); |
32 | 31 | } |
33 | 32 | |
34 | - void makeListAndBind(Node[] args,int length,RuleContext context) { | |
35 | - Node first = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
36 | - Node rest = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
33 | + boolean makeListAndBind(Node[] args,int length,RuleContext context) { | |
34 | + Node first = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
35 | + Node rest = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
37 | 36 | Node bNode = Node.createAnon(); |
38 | 37 | context.add(new Triple(bNode,first,args[0])); |
39 | 38 | context.add(new Triple(bNode,rest,args[1])); |
40 | 39 | BindingEnvironment env = context.getEnv(); |
41 | - env.bind(args[2],bNode); | |
40 | + return env.bind(args[2],bNode); | |
42 | 41 | } |
43 | 42 | } |
@@ -24,8 +24,7 @@ | ||
24 | 24 | public boolean bodyCall(Node[] args, int length, RuleContext context) { |
25 | 25 | if (length != 3) |
26 | 26 | return false; |
27 | - listAppend(args,length,context); | |
28 | - return true; | |
27 | + return listAppend(args,length,context); | |
29 | 28 | } |
30 | 29 | |
31 | 30 | public void headAction(Node[] args, int length, RuleContext context) { |
@@ -32,10 +31,10 @@ | ||
32 | 31 | listAppend(args,length,context); |
33 | 32 | } |
34 | 33 | |
35 | - void listAppend(Node[] args,int length,RuleContext context) { | |
36 | - Node first = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
37 | - Node rest = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
38 | - Node nil = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
34 | + boolean listAppend(Node[] args,int length,RuleContext context) { | |
35 | + Node first = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"); | |
36 | + Node rest = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"); | |
37 | + Node nil = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
39 | 38 | ArrayList<Node> al = new ArrayList<Node>(); |
40 | 39 | Node n = args[0]; |
41 | 40 | while (!n.equals(nil)) { |
@@ -54,7 +53,7 @@ | ||
54 | 53 | n = ((Triple)ci.next()).getObject(); |
55 | 54 | } |
56 | 55 | Node nn[] = al.toArray(new Node[0]); |
57 | - Node list = Node.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
56 | + Node list = Node.createURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"); | |
58 | 57 | for (int i=nn.length-1;i>=0;i--) { |
59 | 58 | Node tail = list; |
60 | 59 | list = Node.createAnon(); |
@@ -62,6 +61,6 @@ | ||
62 | 61 | context.add(new Triple(list,rest,tail)); |
63 | 62 | } |
64 | 63 | BindingEnvironment env = context.getEnv(); |
65 | - env.bind(args[2],list); | |
64 | + return env.bind(args[2],list); | |
66 | 65 | } |
67 | 66 | } |
@@ -4,6 +4,7 @@ | ||
4 | 4 | import com.hp.hpl.jena.reasoner.rulesys.builtins.BaseBuiltin; |
5 | 5 | import com.hp.hpl.jena.reasoner.rulesys.RuleContext; |
6 | 6 | import com.hp.hpl.jena.reasoner.rulesys.BindingEnvironment; |
7 | +import com.hp.hpl.jena.reasoner.rulesys.Util; | |
7 | 8 | |
8 | 9 | /** |
9 | 10 | * 第1引数(文字列)を整数に変換して第2引数(整数)の変数に |
@@ -22,18 +23,17 @@ | ||
22 | 23 | public boolean bodyCall(Node[] args, int length, RuleContext context) { |
23 | 24 | if (length != 2) |
24 | 25 | return false; |
25 | - string2int(args,length,context); | |
26 | - return true; | |
26 | + return string2int(args,length,context); | |
27 | 27 | } |
28 | 28 | |
29 | 29 | public void headAction(Node[] args, int length, RuleContext context) { |
30 | 30 | string2int(args,length,context); |
31 | 31 | } |
32 | - void string2int(Node[] args, int length, RuleContext context) { | |
32 | + boolean string2int(Node[] args, int length, RuleContext context) { | |
33 | 33 | String s = ((Node_Literal)args[0]).getLiteralLexicalForm(); |
34 | 34 | long l = Long.parseLong(s); |
35 | - Node n = Node.create(""+l); | |
35 | + Node n = Util.makeLongNode(l); | |
36 | 36 | BindingEnvironment env = context.getEnv(); |
37 | - env.bind(args[1],n); | |
37 | + return env.bind(args[1],n); | |
38 | 38 | } |
39 | 39 | } |