1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.deri.wsmo4j.validator;
17
18 import java.util.Iterator;
19 import java.util.List;
20
21 import org.deri.wsmo4j.io.serializer.wsml.LogExprSerializerWSML;
22 import org.deri.wsmo4j.logicalexpression.AbstractVisitor;
23 import org.omwg.logicalexpression.Atom;
24 import org.omwg.logicalexpression.AttributeConstraintMolecule;
25 import org.omwg.logicalexpression.AttributeInferenceMolecule;
26 import org.omwg.logicalexpression.AttributeValueMolecule;
27 import org.omwg.logicalexpression.CompoundMolecule;
28 import org.omwg.logicalexpression.LogicalExpression;
29 import org.omwg.logicalexpression.MembershipMolecule;
30 import org.omwg.logicalexpression.Molecule;
31 import org.omwg.logicalexpression.SubConceptMolecule;
32 import org.omwg.logicalexpression.terms.BuiltInConstructedTerm;
33 import org.omwg.logicalexpression.terms.ConstructedTerm;
34 import org.omwg.logicalexpression.terms.Term;
35 import org.omwg.ontology.Axiom;
36 import org.wsmo.validator.ValidationError;
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public class FunctionSymbolHelper extends AbstractVisitor{
53
54 private Axiom axiom = null;
55
56 private List <ValidationError> errors = null;
57
58 private String variant = null;
59
60 private LogExprSerializerWSML leSerializer = null;
61
62
63 protected FunctionSymbolHelper(Axiom axiom, List <ValidationError> errors, String variant, WsmlFullValidator validator) {
64 leSerializer = validator.leSerializer;
65 this.axiom = axiom;
66 this.errors = errors;
67 this.variant = variant;
68 }
69
70 public void visitAtom(Atom expr) {
71 Iterator it = expr.listParameters().iterator();
72 while (it.hasNext()) {
73 Term t = (Term) it.next();
74 if (t instanceof ConstructedTerm && !(t instanceof BuiltInConstructedTerm)) {
75 addError(expr, ValidationErrorImpl.AX_ATOMIC_ERR + ": function symbols are not " +
76 "allowed\n" + leSerializer.serialize(expr));
77 }
78 }
79 }
80
81 public void visitAttributeContraintMolecule(AttributeConstraintMolecule expr) {
82 checkTerm(expr.getRightParameter(),expr);
83 checkTerm(expr.getLeftParameter(), expr);
84 checkTerm(expr.getAttribute(), expr);
85 }
86
87 public void visitAttributeInferenceMolecule(AttributeInferenceMolecule expr) {
88 checkTerm(expr.getRightParameter(),expr);
89 checkTerm(expr.getLeftParameter(), expr);
90 checkTerm(expr.getAttribute(), expr);
91 }
92
93 public void visitAttributeValueMolecule(AttributeValueMolecule expr) {
94 checkTerm(expr.getRightParameter(),expr);
95 checkTerm(expr.getLeftParameter(), expr);
96 checkTerm(expr.getAttribute(), expr);
97 }
98
99 public void visitCompoundMolecule(CompoundMolecule expr) {
100 Iterator it = expr.listOperands().iterator();
101 while(it.hasNext()){
102 ((Molecule)it.next()).accept(this);
103 }
104 }
105
106 public void visitMemberShipMolecule(MembershipMolecule expr) {
107 checkTerm(expr.getRightParameter(),expr);
108 checkTerm(expr.getLeftParameter(), expr);
109 }
110
111 public void visitSubConceptMolecule(SubConceptMolecule expr) {
112 checkTerm(expr.getRightParameter(), expr);
113 checkTerm(expr.getLeftParameter(), expr);
114 }
115
116 private void checkTerm(Term t, LogicalExpression expr){
117 if (t instanceof ConstructedTerm && !(t instanceof BuiltInConstructedTerm)) {
118 addError(expr, ValidationErrorImpl.AX_ATOMIC_ERR + ": function symbols are not " +
119 "allowed\n" + leSerializer.serialize(expr));
120 }
121 }
122
123
124
125
126 public List getErrors() {
127 return errors;
128 }
129
130
131 private void addError(LogicalExpression logexp, String msg) {
132 errors.add(new LogicalExpressionErrorImpl(axiom, logexp, msg, variant));
133 }
134 }
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151