damloaa.java
来自「SRI international 发布的OAA框架软件」· Java 代码 · 共 265 行
JAVA
265 行
//java -classpath ../ARP/arp-1_0_3/src/:../lib/xerces.jar:/homes/atallah/oaa2/src/java/oaalib/:./ com.hp.hpl.mesa.rdf.jena.oaadaml.DamlOAA http://www.daml.org/2001/03/daml+oil-ex.daml
//javac -classpath ../../../../../../../:/homes/atallah/jena/ARP/arp-1_0_3/src/:/homes/atallah/jena/lib/xerces.jar:/homes/atallah/oaa2/src/java/oaalib/:./ DamlOAA.java
package com.sri.oaa2.agt.oaadaml;
import com.sri.oaa2.lib.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import com.sri.oaa2.com.*;
import com.sri.oaa2.icl.*;
import com.hp.hpl.jena.rdf.arp.JenaReader; //using the ARP reader
import com.hp.hpl.mesa.rdf.jena.mem.ModelMem;
import com.hp.hpl.mesa.rdf.jena.model.*;
import com.hp.hpl.mesa.rdf.jena.common.*;
import com.hp.hpl.mesa.rdf.jena.vocabulary.RDFS;
import java.io.*;
import java.lang.Object;
/**
* This class is responsable of creating a jena model from a daml input given here in the
* command line by specifying its URL.
* Once the model is created, it extracts from it the daml data : classes and properties,
* to form OAA solvables with them.
* For that daml input it creates a DAML agent that is going to register these solvables in
* the facilitator.
*/
public class DamlOAA extends Object{
static DamlAgent agent;
static Model model;
static HashSet properties,classes;
static String defaultNs = null;
static String url;
public static void main(String args[]) {
IclTerm synonyms =
LibComUtils.oaaResolveVariable("create_synonyms", args);
IclTerm printTriples =
LibComUtils.oaaResolveVariable("print_triples", args);
IclTerm cmdLineDefaultNs =
LibComUtils.oaaResolveVariable("default_namespace", args);
String objProp = "http://www.daml.org/2001/03/daml+oil#ObjectProperty";
String uniProp = "http://www.daml.org/2001/03/daml+oil#UniqueProperty";
String dataProp = "http://www.daml.org/2001/03/daml+oil#DatatypeProperty";
String transitiveProp = "http://www.daml.org/2001/03/daml+oil#TransitiveProperty";
// TBD: what about rdfs:class??? - same issue for rdf:property
String ontologyClass = "http://www.daml.org/2001/03/daml+oil#Class";
StringBuffer solvables = new StringBuffer("[solvable('Class'(Id),[callback('DamlClass_Handler')]), solvable('Property'(Id), [callback('Prop_Handler')], []), solvable(subClassOf(Id1,Id2), [callback('RDFprop_Handler')], []),solvable(sameClassAs(Id1,Id2),[callback('Damlprop_Handler')], []),solvable(samePropertyAs(Id1,Id2),[callback('Damlprop_Handler')], []), solvable(subPropertyOf(Id1, Id2), [callback('RDFprop_Handler')], []), solvable(inverseOf(Id1,Id2),[callback('Damlprop_Handler')], []), solvable(complementOf(Id1, Id2),[callback('Damlprop_Handler')], []), solvable(intersectionOf(Id1, List),[callback('List_Handler')], []), solvable(disjointWith(Id1, Id2), [callback('RDFprop_Handler')], []), solvable(unionOf(Id,List), [callback('List_Handler')], []),solvable(disjointUnionOf(Id,List), [callback('List_Handler')], []), solvable('UniqueProperty'(Id),[callback('DamlClass_Handler')], []), solvable('ObjectProperty'(Id),[callback('DamlClass_Handler')], []), solvable('DatatypeProperty'(Id),[callback('DamlClass_Handler')], []),solvable('UnambiguousProperty'(Id),[callback('DamlClass_Handler')], []), solvable('TransitiveProperty'(Id),[callback('DamlClass_Handler')], []), solvable(domain(Id, classId), [callback('RDFprop_Handler')], []), solvable(range(Id, classId), [callback('RDFprop_Handler')], []), solvable(comment(Id, String),[callback('RDFprop_Handler')], []), solvable(daml_triple(Id1, Id2, Id3),[callback('damlTriple_Handler')], [])");
StmtIterator stmts;
NsIterator nsIter;
try {
JenaReader reader = new JenaReader();
model= reader.memModel();
if (args.length < 1 ) {
System.out.println("usage : DamlOAA.java [-create_synonyms] [-print_triples] URL ");
System.exit(0);
}
else
{
System.out.println("Attempting to read URL : ");
System.out.println(args[args.length - 1]);
url= new String(args[args.length - 1]);
reader.read(model, url);
stmts = model.listStatements();
if (printTriples != null) {
System.out.println("************** Begin Triples Table **************");
while(stmts.hasNext()){
System.out.println(stmts.next());
}
System.out.println("************** End Triples Table **************");
}
// TBD: We need a more reliable way to select the
// default namespace:
if (cmdLineDefaultNs == null) {
/*
nsIter = model.listNameSpaces();
if (nsIter.hasNext()){
String nextNs = nsIter.next();
// TBD: are there always quotes to remove?:
defaultNs = nextNs.substring(0,nextNs.length()-1);
// System.out.println(nextNs);
}
*/
} else {
defaultNs = cmdLineDefaultNs.toString();
// Remove single quotes (if any):
defaultNs = IclString.iclStRemoveQuotes(defaultNs);
}
System.out.println("Default namespace is : "+defaultNs);
if (synonyms != null)
System.out.println("Creating synonyms (short forms)");
//Collecting the user defined classes from the model
SelectorImpl selectClass = new SelectorImpl(null,null,model.createResource(ontologyClass));
StmtIterator classIterator = model.listStatements(selectClass);
classes = new HashSet();
while (classIterator.hasNext()){
classes.add(classIterator.next().getSubject());
}
if (classes.size() > 0) {
// Adding the user defined classes to the solvable Buffer
Object[] classArray = classes.toArray();
solvables.append(", solvable('");
for (int i =0;i<classes.size()-1;i++){
String longform= classArray[i].toString();
// System.out.println("longform is "+longform);
// System.out.println("index of # is "+longform.indexOf("#"));
int index = longform.indexOf("#");
// System.out.println("length of longform is "+longform.length());
solvables.append(longform+"'(Id), [callback('OntologyClass_Handler')]), solvable('");
if (args.length >=2) {
if (synonyms != null) {
if (longform.length()>defaultNs.length()) {
String shortform = longform.substring(index+1,longform.length());
// System.out.println("short solvable: " +shortform);
//solvables.append(shortform+"'(Id),[synonym('"+shortform+"'(Id),'"+longform+"'(Id))]), solvable('");
solvables.append(shortform+"'(Id),[callback('OntologyClass_Handler')]), solvable('");
}
}
}
}
//solvables.append(classArray[classes.size()-1]+"'(Id),[callback('OntologyClass_Handler')]), solvable('");
solvables.append(classArray[classes.size()-1]+"'(Id),[callback('OntologyClass_Handler')])");
if (args.length >=2) {
if (synonyms != null) {
String longform = classArray[classes.size()-1].toString();
int index = longform.indexOf("#");
if (longform.length()>defaultNs.length()) {
String shortform = longform.substring(index+1,longform.length());
//solvables.append(shortform+"'(Id),[callback('"+shortform+"'(Id),'"+longform+"'(Id))]), solvable('");
//solvables.append(shortform+"'(Id),[callback('OntologyClass_Handler')]), solvable('");
solvables.append(", solvable('"+shortform+"'(Id),[callback('OntologyClass_Handler')])");
}
}
}
}
// Collecting the user defined properties from the model
StmtIterator objPropIter = model.listStatements(new SelectorImpl(null,null,model.createResource(objProp)));
StmtIterator unicPropIter = model.listStatements(new SelectorImpl(null,null,model.createResource(uniProp)));
StmtIterator dataPropIter = model.listStatements(new SelectorImpl(null,null,model.createResource(dataProp)));
properties = new HashSet();
while (objPropIter.hasNext()) {
properties.add(objPropIter.next().getSubject());
}
while(unicPropIter.hasNext()){
properties.add(unicPropIter.next().getSubject());
}
while(dataPropIter.hasNext()){
properties.add(dataPropIter.next().getSubject());
}
Object[] propArray = properties.toArray();
// Adding the user defined properties to the solvable Buffer
//Using short forms has to be fixed.
//Here it's working only for the daml example of march 2001
// System.out.println("Size of properties: " + properties.size());
if(properties.isEmpty())
solvables.append("]");
else {
solvables.append(",solvable('");
for (int i=0;i<(properties.size()-1);i++){
String longform= propArray[i].toString();
int index = longform.indexOf("#");
solvables.append(longform+"'(Id1,Id2), [callback('OntologyProp_Handler')]), solvable('");
if (args.length >=2) {
if (synonyms != null) {
if (longform.length()>defaultNs.length()) {
String shortform= longform.substring(index+1,longform.length());
// System.out.println("short form is " +shortform);
//solvables.append(shortform+"'(Id1,Id2),[synonym('"+shortform+"'(Id1,Id2),'"+longform+"'(Id1,Id2))]), solvable('");
solvables.append(shortform+"'(Id1,Id2),[callback('OntologyProp_Handler')]), solvable('");
}
}
}
}
solvables.append(propArray[properties.size()-1]+"'(Id1,Id2),[callback('OntologyProp_Handler')])");
if (args.length >=2) {
if (synonyms != null) {
String longform = propArray[properties.size()-1].toString();
int index = longform.indexOf("#");
if (longform.length()>defaultNs.length()) {
String shortform = longform.substring(index+1,longform.length());
solvables.append(", solvable('"+shortform+"'(Id1,Id2),[callback('OntologyProp_Handler')])");
//solvables.append(shortform+"'(Id1,Id2)),[synonym('"+shortform+"'(Id1,Id2),'"+longform+"'(Id1,Id2))]);
}
}
}
solvables.append("]");
}
}
} catch (Exception e) {
// System.out.println("Failed: " + e);
System.out.println("Failed: " + e.getMessage());
e.printStackTrace();
}
// Creating a DAMLAgent instance
agent = new DamlAgent(model,defaultNs,properties, classes);
System.out.println("OAA DAML Bridge Agent ready : " +agent.toString());
// Connects the damlAgent to the facilitator
try {
agent.oaaConnect("OAA_DAML_Bridge",solvables.toString());
} catch (Exception e) {
System.out.println("Agent conection failed: "+e);
}
// register the callbacks
agent.oaaRegisterCallback("DamlClass_Handler", new DamlListener(agent, "DamlClass_Handler"));
agent.oaaRegisterCallback("OntologyClass_Handler", new DamlListener(agent, "OntologyClass_Handler"));
agent.oaaRegisterCallback("Damlprop_Handler", new DamlListener(agent, "Damlprop_Handler"));
agent.oaaRegisterCallback("RDFprop_Handler", new DamlListener(agent, "RDFprop_Handler"));
agent.oaaRegisterCallback("OntologyProp_Handler", new DamlListener(agent, "OntologyProp_Handler"));
agent.oaaRegisterCallback("List_Handler", new DamlListener(agent, "List_Handler"));
agent.oaaRegisterCallback("Prop_Handler", new DamlListener(agent, "Prop_Handler"));
agent.oaaRegisterCallback("damlTriple_Handler", new DamlListener(agent, "damlTriple_Handler"));
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?