+ " (?standard qa:Ҫ���� ?key) "
+ " (?answer qa:Ҫ���� ?key) "
+ " noValue(?key qa:�÷�) " + " -> "
+ " (?key qa:�÷� ?points)" + "]";
List rules = Rule.parseRules(ruleSrc);
Reasoner reasoner = new GenericRuleReasoner(rules);
InfModel inf = ModelFactory.createInfModel(reasoner,
model);
StmtIterator it = inf.getDeductionsModel()
.listStatements();
while (it.hasNext()) {
Statement stmt = it.nextStatement();
Literal obj = (Literal) stmt.getObject();
docList.append(stmt.getSubject().getLocalName()
+ "\t" + stmt.getPredicate().getLocalName()
+ "\t " + obj.getString() + "��ȫ�֣�\n");
}
ruleSrc = "[rule2: (?keya rdf:type qa:����Ҫ��) "
+ " (?keyb rdf:type qa:����Ҫ��) "
+ " (?keyb qa:��ֵ ?points) "
+ " (?keya ?p ?keyb)"
+ " (?answer rdf:type qa:�Ծ�����Ļش�) "
+ " (?question rdf:type qa:�Ծ�����) "
+ " (?standard rdf:type qa:����) "
+ " (?answer qa:�Ծ������� ?question)"
+ " (?question qa:������ ?standard) "
+ " (?standard qa:Ҫ���� ?keya) "
+ " (?standard qa:Ҫ���� ?keyb) "
+ " (?answer qa:Ҫ���� ?keya) "
+ " noValue(?answer qa:Ҫ���� ?keyb) "
+ " product(?points, 0.5, ?wpoints ) " + " -> "
+ " (?keyb qa:�÷� ?wpoints) " + " ]";
rules = Rule.parseRules(ruleSrc);
reasoner = new GenericRuleReasoner(rules);
InfModel inf2 = ModelFactory.createInfModel(reasoner,
inf);
it = inf2.getDeductionsModel().listStatements();
while (it.hasNext()) {
Statement stmt = it.nextStatement();
Literal obj = (Literal) stmt.getObject();
docList.append(stmt.getSubject().getLocalName()
+ "\t" + stmt.getPredicate().getLocalName()
+ "\t" + obj.getString() + "����֣�\n");
}
ruleSrc = "[rule3: (?key rdf:type qa:����Ҫ��) noValue(?key qa:�÷�) -> (?key qa:�÷� 0.0) ]";
rules = Rule.parseRules(ruleSrc);
reasoner = new GenericRuleReasoner(rules);
InfModel inf3 = ModelFactory.createInfModel(reasoner,
inf2);
it = inf3.getDeductionsModel().listStatements();
while (it.hasNext()) {
Statement stmt = it.nextStatement();
Literal obj = (Literal) stmt.getObject();
docList.append(stmt.getSubject().getLocalName()
+ "\t" + stmt.getPredicate().getLocalName()
+ "\t" + obj.getString() + "����֣�\n");
}
docList
.append("------------------------------------------------------------\n");
ruleSrc = "[rule4: (qa:�Ӱ� qa:�÷� ?jbpoints) "
+ " (qa:��������λ�� qa:�÷� ?wzpoints) "
+ " (qa:н�� qa:�÷� ?xcpoints) "
+ " (qa:�������� qa:�÷� ?hjpoints ) "
+ " sum(?jbpoints, ?wzpoints, ?temp1) "
+ " sum(?temp1, ?xcpoints, ?temp2) "
+ " sum(?temp2, ?hjpoints, ?score) "
+ " (?answer rdf:type qa:�Ծ�����Ļش�) "
+ " (?question rdf:type qa:�Ծ�����) "
+ " (?standard rdf:type qa:����) "
+ " (?answer qa:�Ծ������� ?question)"
+ " (?question qa:������ ?standard) " + " -> "
+ " (?answer qa:�÷� ?score) " + "]";
rules = Rule.parseRules(ruleSrc);
reasoner = new GenericRuleReasoner(rules);
InfModel inf4 = ModelFactory.createInfModel(reasoner,
inf3);
it = inf4.getDeductionsModel().listStatements();
while (it.hasNext()) {
Statement stmt = it.nextStatement();
Literal obj = (Literal) stmt.getObject();
docList.append(stmt.getSubject().getLocalName()
+ "\t" + stmt.getPredicate().getLocalName()
+ "\t" + obj.getString() + "\n");
}
docList.append("�������");
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(frame,
"�����ر���⣬��ȷ��qa.owl������ڵ�ǰĿ¼�¡�", "Error!",
JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
} catch (Exception ex) {
JOptionPane.showMessageDialog(frame,
"���������鿴error.log�ļ���", "Error!",
JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
}
}
}
});
run.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Thread() {
public void run() {
docList.setText("");
docList.append("��ʼ����\n");
OntModel model = ModelFactory
.createOntologyModel(OntModelSpec.OWL_DL_MEM);
try {
model.read(new FileInputStream(new File("qa.owl")),
null);
String prefix = "http://www.example.com/qa.owl#";
PrintUtil.registerPrefix("qa", prefix);
OntClass hd_c = model.getOntClass(prefix
+ "�Ծ�����Ļش�");
Individual zshd_i = hd_c.createIndividual(prefix
+ "�����Ļش�");
Individual wt_i = model.getIndividual(prefix
+ "ͨ���������������Լ��Ĺ������");
OntProperty wts_p = model.getOntProperty(prefix
+ "�Ծ�������");
zshd_i.addProperty(wts_p, wt_i);
OntProperty ydy_p = model.getObjectProperty(prefix
+ "Ҫ����");
for (int i = 0; i < boxes.length; i++) {
if (boxes[i].isSelected()) {
Individual yd_i = model
.getIndividual(prefix
+ boxes[i].getLabel());
zshd_i.addProperty(ydy_p, yd_i);
}
}
String ruleSrc = "[rule1: (?key rdf:type qa:����Ҫ��) "
+ " (?key qa:��ֵ ?points) "
+ " (?answer rdf:type qa:�Ծ�����Ļش�) "
+ " (?question rdf:type qa:�Ծ�����) "
+ " (?standard rdf:type qa:����) "
+ " (?answer qa:�Ծ������� ?question)"
+ " (?question qa:������ ?standard) "
+ " (?standard qa:Ҫ���� ?key) "
+ " (?answer qa:Ҫ���� ?key) "
+ " noValue(?key qa:�÷�) "
+ " -> "
+ " (?key qa:�÷� ?points)" + "]";
List rules = Rule.parseRules(ruleSrc);
Reasoner reasoner = new GenericRuleReasoner(rules);
InfModel inf = ModelFactory.createInfModel(
reasoner, model);
StmtIterator it = inf.getDeductionsModel()
.listStatements();
while (it.hasNext()) {
Statement stmt = it.nextStatement();
Literal obj = (Literal) stmt.getObject();
docList.append(stmt.getSubject().getLocalName()
+ "\t"
+ stmt.getPredicate().getLocalName()
+ "\t " + obj.getString() + "��ȫ�֣�\n");
}
ruleSrc = "[rule2: (?keya rdf:type qa:����Ҫ��) "
+ " (?keyb rdf:type qa:����Ҫ��) "
+ " (?keyb qa:��ֵ ?points) "
+ " (?keya ?p ?keyb)"
+ " (?answer rdf:type qa:�Ծ�����Ļش�) "
+ " (?question rdf:type qa:�Ծ�����) "
+ " (?standard rdf:type qa:����) "
+ " (?answer qa:�Ծ������� ?question)"
+ " (?question qa:������ ?standard) "
+ " (?standard qa:Ҫ���� ?keya) "
+ " (?standard qa:Ҫ���� ?keyb) "
+ " (?answer qa:Ҫ���� ?keya) "
+ " noValue(?answer qa:Ҫ���� ?keyb) "
+ " product(?points, 0.5, ?wpoints ) "
+ " -> " + " (?keyb qa:�÷� ?wpoints) "
+ " ]";
rules = Rule.parseRules(ruleSrc);
reasoner = new GenericRuleReasoner(rules);
InfModel inf2 = ModelFactory.createInfModel(
reasoner, inf);
it = inf2.getDeductionsModel().listStatements();
while (it.hasNext()) {
Statement stmt = it.nextStatement();
Literal obj = (Literal) stmt.getObject();
docList.append(stmt.getSubject().getLocalName()
+ "\t"
+ stmt.getPredicate().getLocalName()
+ "\t" + obj.getString() + "����֣�\n");
}
ruleSrc = "[rule3: (?key rdf:type qa:����Ҫ��) noValue(?key qa:�÷�) -> (?key qa:�÷� 0.0) ]";
rules = Rule.parseRules(ruleSrc);
reasoner = new GenericRuleReasoner(rules);
InfModel inf3 = ModelFactory.createInfModel(
reasoner, inf2);
it = inf3.getDeductionsModel().listStatements();
while (it.hasNext()) {
Statement stmt = it.nextStatement();
Literal obj = (Literal) stmt.getObject();
docList.append(stmt.getSubject().getLocalName()
+ "\t"
+ stmt.getPredicate().getLocalName()
+ "\t" + obj.getString() + "����֣�\n");
}
docList
.append("------------------------------------------------------------\n");
ruleSrc = "[rule4: (qa:�Ӱ� qa:�÷� ?jbpoints) "
+ " (qa:��������λ�� qa:�÷� ?wzpoints) "
+ " (qa:н�� qa:�÷� ?xcpoints) "
+ " (qa:�������� qa:�÷� ?hjpoints ) "
+ " sum(?jbpoints, ?wzpoints, ?temp1) "
+ " sum(?temp1, ?xcpoints, ?temp2) "
+ " sum(?temp2, ?hjpoints, ?score) "
+ " (?answer rdf:type qa:�Ծ�����Ļش�) "
+ " (?question rdf:type qa:�Ծ�����) "
+ " (?standard rdf:type qa:����) "
+ " (?answer qa:�Ծ������� ?question)"
+ " (?question qa:������ ?standard) "
+ " -> " + " (?answer qa:�÷� ?score) " + "]";
rules = Rule.parseRules(ruleSrc);
reasoner = new GenericRuleReasoner(rules);
InfModel inf4 = ModelFactory.createInfModel(
reasoner, inf3);
it = inf4.getDeductionsModel().listStatements();
while (it.hasNext()) {
Statement stmt = it.nextStatement();