以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Web Services & Semantic Web Services 』  (http://bbs.xml.org.cn/list.asp?boardid=10)
----  利用API对OWL-S描述的服务进行操作 ---[经典转贴]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=10&rootid=&id=46104)


--  作者:timothy
--  发布时间:4/27/2007 10:04:00 AM

--  利用API对OWL-S描述的服务进行操作 ---[经典转贴]
下面这篇文章转自:http://blog.csdn.net/Pottercn/archive/2006/07/24/970088.aspx
查询邮政编码的服务用OWL-S描述,位于http://www.mindswap.org/2004/owl-s/1.1/ZipCodeFinder.owl

对该文件调用API中的类库进行操作,最重要的是如下几段代码:
  
OWLKnowledgeBase kb = OWLFactory.createKB();

service = kb.readService("http://www.mindswap.org/2004/owl-s/1.1/ZipCodeFinder.owl");
  
process = service.getProcess();     // 读取服务的process

// 输入初始值为0,输入值为"College Park"和"MD",函数values.setDataValue得到这两个值,调用服务,并将结果输出。

values = new ValueMap();
  
values.setDataValue(process.getInput("City"), "College Park");  

values.setDataValue(process.getInput("State"), "MD");  

values = exec.execute(process, values);

完整代码如下:


import org.mindswap.owl.OWLFactory;
import org.mindswap.owl.OWLIndividual;
import org.mindswap.owl.OWLKnowledgeBase;
import org.mindswap.owls.OWLSFactory;
import org.mindswap.owls.process.AtomicProcess;
import org.mindswap.owls.process.Process;
import org.mindswap.owls.process.execution.ProcessExecutionEngine;
import org.mindswap.owls.process.execution.ProcessExecutionListener;
import org.mindswap.owls.profile.Profile;
import org.mindswap.owls.service.Service;
import org.mindswap.query.ValueMap;
import org.mindswap.utils.Utils;
import org.mindswap.wsdl.WSDLOperation;
import org.mindswap.wsdl.WSDLService;


public class RunService {
Service service;
Profile profile;
Process process;
WSDLService s;
WSDLOperation op;
String inValue;
String outValue;
ValueMap values;
ProcessExecutionEngine exec;

public RunService() {
  // create an execution engine
  exec = OWLSFactory.createExecutionEngine();
  
  // Attach a listener to the execution engine
  exec.addExecutionListener(new ProcessExecutionListener() {

   public void setCurrentExecuteService(Process p) {
    System.out.println("Start executing process " + p);
   }
   
   public void printMessage(String message) {
   }

   public void finishExecution(int retCode) {
    System.out.println("Finished execution " +
        ((retCode == ProcessExecutionListener.EXEC_ERROR)
        ? "with errors" : "successfully"));  
   }   
  });
}

public void runZipCode() throws Exception {
     OWLKnowledgeBase kb = OWLFactory.createKB();

     service = kb.readService("http://www.mindswap.org/2004/owl-s/1.1/ZipCodeFinder.owl");
  process = service.getProcess();  

  // initialize the input values to be empty
  values = new ValueMap();
  
  values.setDataValue(process.getInput("City"), "College Park");  
  values.setDataValue(process.getInput("State"), "MD");  

  values = exec.execute(process, values);

  // get the result
  OWLIndividual out = values.getIndividualValue(process.getOutput());
    
  // display the results
  System.out.println("Executed service '" + service + "'");
  System.out.println("Grounding WSDL: " +
      ((AtomicProcess) process).getGrounding().getDescriptionURL());
  System.out.println("City   = " + "College Park");
  System.out.println("State  = " + "MD");
  System.out.println("Output = ");
  System.out.println(Utils.formatRDF(out.toRDF()));
  System.out.println();
}


public static void main(String[] args) throws Exception {  
  RunService test = new RunService();
  

  try {
   test.runZipCode();
        } catch(Exception e) {
            e.printStackTrace();
        }

}

}


在ECLISPE下运行,得到输出:

Start executing process http://www.mindswap.org/2004/owl-s/1.1/ZipCodeFinder.owl#ZipCodeFinderProcess
Finished execution successfully
Executed service 'http://www.mindswap.org/2004/owl-s/1.1/ZipCodeFinder.owl#ZipCodeFinderService'
Grounding WSDL: http://www.tilisoft.com/ws/LocInfo/ZipCode.asmx?WSDL
City   = College Park
State  = MD
Output =
   ZipCode:
     zip: 20740


同样,对http://www.mindswap.org/2004/owl-s/1.1/BookFinder.owl和http://www.mindswap.org/2004/owl-s/1.1/Dictionary.owl等描述的服务进行操作,也可以得到正确的输出。


--  作者:MerryZhang
--  发布时间:6/4/2007 2:00:00 PM

--  
感觉到这些OWL-S的描述还是构建在WSDL的基础上,并没有体现出语义来
--  作者:timothy
--  发布时间:6/4/2007 8:44:00 PM

--  
这只是对API进行操作嘛,语义体现在构建的模型里!
--  作者:ricky_lxl
--  发布时间:6/5/2007 9:09:00 PM

--  
不太懂,楼主能把代码详细解释一下吗,如何体现语义?
--  作者:nicholas628
--  发布时间:7/3/2007 8:38:00 PM

--  
LZ怎么配置的ECLISPE?我的导入OWLS API 还是有错误,编译不了啊。
--  作者:zhouwei_ouc
--  发布时间:8/7/2007 8:17:00 PM

--  
谢谢分享
--  作者:thinking11
--  发布时间:8/13/2007 6:07:00 PM

--  
学习中
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms