以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Web Services & Semantic Web Services 』  (http://bbs.xml.org.cn/list.asp?boardid=10)
----  求助:owl-s api 中的matchmaker 例子出错,高人请指教  (http://bbs.xml.org.cn/dispbbs.asp?boardid=10&rootid=&id=70122)


--  作者:tianshiwgq
--  发布时间:12/5/2008 12:05:00 PM

--  求助:owl-s api 中的matchmaker 例子出错,高人请指教
修改后的原代码:
public class Matchmaker {    
    OWLKnowledgeBase kb;
    
    public static class Match {
        public static String[] MATCHES = {"EXACT", "SUBSUME", "RELAXED", "FAIL"};
        public static int EXACT   = 0;
        public static int SUBSUME = 1;
        public static int RELAXED = 2;
        public static int FAIL    = 3;        
        
        int matchType;
        boolean listMatch;
        Service outputService;
        Output output;
        Service inputService;
        Input input;
        
        public Match(int matchType, Output output, Input input) {
            this.matchType = matchType;
            this.outputService = output.getService();
            this.output = output;
            this.inputService = input.getService();
            this.input = input;
        }
        
        public String toString() {
            String str = "";
            
            str += MATCHES[matchType] + " ";
            if(listMatch)
                str += ".LIST";
            str += outputService.getLocalName() + "." + output.getLocalName();
            str += " -> ";
            str += inputService.getLocalName() + "." + input.getLocalName();
            
            return str;
        }
    }
    
    public Matchmaker() {
        kb = OWLFactory.createKB();
  
       kb.setReasoner("Pellet");
    }

    public void addOntology( String ont )  throws FileNotFoundException, URISyntaxException {
        System.out.println( "Reading " + ont );
        kb.read( new URI( ont ) );
    }
    
    public void addOntology( URI ont )  throws FileNotFoundException {
        System.out.println( "Reading " + ont );
        kb.read( ont );
    }
    
    public List findServices(boolean getProducers) {
        String hasParameter = getProducers ? "process:hasOutput" : "process:hasInput";
        
        String queryString =
            "SELECT * " +            
            "WHERE " +
            "    (?process rdf:type process:Process)" +
            "    (?process " + hasParameter + " ?param)" +
            "USING " +
            "      process FOR <http://www.daml.org/services/owl-s/1.1/Process.owl#>";

        return kb.query( queryString );
    }

    public List findOutputs() {
        return findServices(true);
    }
    
    public List findInputs() {
        return findServices(false);        
    }
    
    public int getMatchType(OWLType outputType, OWLType inputType) {
        if(outputType.isEquivalent(inputType))
           return Match.EXACT;
        else if(outputType.isSubTypeOf(inputType))
           return Match.SUBSUME;        
        else if(inputType.isSubTypeOf(outputType))
            return Match.RELAXED;
        else
            return Match.FAIL;
    }

 public List displayAllMatches() {
  List matches = new ArrayList();
  
  System.out.println( "Computing matches..." );
  
  List producers = findOutputs();
  List consumers = findInputs();
  
  Iterator i = producers.iterator();
  while( i.hasNext() ) {
      ValueMap binding = (ValueMap) i.next();
      Output output = (Output) ((OWLIndividual) binding.getValue("param")).castTo(Output.class);
      OWLType outputType = output.getParamType();
      
      Iterator j = consumers.iterator();
      while( j.hasNext() ) {
          binding = (ValueMap) j.next() ;
       Input input = (Input) ((OWLIndividual) binding.getValue("param")).castTo(Input.class);
       OWLType inputType = input.getParamType();
       
//       System.out.println("Trying " +
//           URIUtils.getLocalName(outputType.getURI()) + " " +
//           URIUtils.getLocalName(inputType.getURI()) + " " +
//           producer.getLocalName() + " " +
//           output.getLocalName() + " " +
//           consumer.getLocalName() + " " +
//           input.getLocalName()
//       );
       
          int matchType = getMatchType(outputType, inputType);
          if(matchType != Match.FAIL)
              matches.add(new Match(matchType, output, input));           
      }
  }
  
  return matches;
 }

    public static void printIterator(Iterator i) {
        if(i.hasNext()) {
         while (i.hasNext())
             System.out.println( i.next() );
        }       
        else
            System.out.println("<EMPTY>");
        
        System.out.println();
    }
 
    public static void main(String[] args) throws FileNotFoundException, URISyntaxException {
        Matchmaker matchmaker = new Matchmaker();
        
        matchmaker.addOntology("http://localhost:8080/BNPrice.owl");
        matchmaker.addOntology("http://www.mindswap.org/2004/owl-s/1.1/BookFinder.owl");
        matchmaker.addOntology("http://www.mindswap.org/2004/owl-s/1.1/CurrencyConverter.owl");
        matchmaker.addOntology("http://www.mindswap.org/2004/owl-s/1.1/Dictionary.owl");
        matchmaker.addOntology("http://www.mindswap.org/2004/owl-s/1.1/ZipCodeFinder.owl");
        matchmaker.addOntology("http://www.mindswap.org/2004/owl-s/1.1/FindLatLong.owl");
        matchmaker.addOntology("http://www.mindswap.org/2004/owl-s/1.1/BabelFishTranslator.owl#");
        
        List matches = matchmaker.displayAllMatches();
        System.out.println();
        System.out.println("Matches:");        
        printIterator(matches.iterator());
    }
}
运行错误,如下,不知道为什么,总是读不到顶极本体
Reading http://localhost:8080/BNPrice.owl
WARNING: Cannot read file http://www.daml.org/services/owl-s/1.1/Service.owl
WARNING: The import file http://www.daml.org/services/owl-s/1.1/Service.owl cannot be parsed
WARNING: Cannot read file http://www.daml.org/services/owl-s/1.1/Process.owl
WARNING: The import file http://www.daml.org/services/owl-s/1.1/Process.owl cannot be parsed
WARNING: Cannot read file http://www.daml.org/services/owl-s/1.1/generic/ObjectList.owl
WARNING: The import file http://www.daml.org/services/owl-s/1.1/generic/ObjectList.owl cannot be parsed
WARNING: Cannot read file http://www.daml.org/services/owl-s/1.1/generic/Expression.owl
WARNING: The import file http://www.daml.org/services/owl-s/1.1/generic/Expression.owl cannot be parsed
WARNING: Cannot read file http://www.daml.org/services/owl-s/1.1/Service.owl
WARNING: The import file http://www.daml.org/services/owl-s/1.1/Service.owl cannot be parsed
WARNING: Cannot read file http://www.mindswap.org/ontologies/bibtex.owl
WARNING: The import file http://www.mindswap.org/ontologies/bibtex.owl cannot be parsed
WARNING: Cannot read file http://www.mindswap.org/2004/owl-s/concepts.owl
WARNING: The import file http://www.mindswap.org/2004/owl-s/concepts.owl cannot be parsed
WARNING: Cannot read file http://localhost:8080/Grounding.owl
WARNING: The import file http://localhost:8080/Grounding.owl cannot be parsed
Reading http://www.mindswap.org/2004/owl-s/1.1/BookFinder.owl
WARNING: Cannot read file http://www.mindswap.org/2004/owl-s/1.1/BookFinder.owl
Exception in thread "main" java.io.FileNotFoundException: The file http://www.mindswap.org/2004/owl-s/1.1/BookFinder.owl cannot be parsed
 at impl.jena.OWLReaderImpl.createInputSource(OWLReaderImpl.java:125)
 at impl.jena.OWLReaderImpl.createInputSource(OWLReaderImpl.java:109)
 at impl.jena.OWLReaderImpl.read(OWLReaderImpl.java:169)
 at impl.jena.OWLKnowledgeBaseImpl.read(OWLKnowledgeBaseImpl.java:245)
 at examples.Matchmaker.addOntology(Matchmaker.java:76)
 at examples.Matchmaker.main(Matchmaker.java:170)


--  作者:Patty
--  发布时间:12/20/2008 10:41:00 AM

--  
我也有这样的问题,请问你解决了没有啊,网络上的这些文件貌似都不能访问,
    BNPrice.owl,BookFinder.owl,CurrencyConverter.owl,Dictionary.owl");,ZipCodeFinder.owl,FindLatLong.owl,BabelFishTranslator.owl,
我把这些都放到本地了,但是还有顶层本体文件啊,不可能都复制到本地吧。

不知道有没有其他朋友碰到,是怎么解决的,
希望知道的朋友解释下。


--  作者:Patty
--  发布时间:12/21/2008 9:24:00 PM

--  
可能是使用代理上网 的 原因
--  作者:tianshiwgq
--  发布时间:12/22/2008 9:30:00 AM

--  
谢谢,问题已解决,确实是代理的问题
--  作者:xiaoliwu
--  发布时间:4/15/2009 10:17:00 PM

--  
求:从一个owl-s服务文档中提取precondition部分的谓词,用的Maryland的API
--  作者:yhxiao1983
--  发布时间:8/14/2009 3:42:00 AM

--  
以下是引用tianshiwgq在2008-12-22 9:30:00的发言:
谢谢,问题已解决,确实是代理的问题

我在家用电信的宽带上网,应该不是代理吧?可也有同样的问题。下到本地缓存可以,但总不能所有的都下下来。请问是如何解决的?


--  作者:charliezon
--  发布时间:6/1/2010 11:47:00 AM

--  
能全部都下下来吧
--  作者:charliezon
--  发布时间:6/2/2010 4:31:00 PM

--  
不包括mindswap提供的本体和其他领域本体的话,加起来只用到了以下owl文件:
ActorDefault.owl
Service.owl
Profile.owl
Process.owl
Grounding.owl
Resource.owl
ProfileDeprecatedElements.owl
ProfileAddtionalParameters.owl
generic/Expression.owl
generic/ObjectList.owl

全部下下来,然后修改部分文件中import的url就可以了。命名空间不要修改。


--  作者:hyb22ndf
--  发布时间:4/26/2012 11:26:00 AM

--  匹配
能不能把那个匹配的代码给我看看,急!!!
--  作者:zkblsb
--  发布时间:6/6/2012 9:20:00 AM

--  
服务器代理的问题,找找空间商,看看他那是不是出错了。

[url=http://www.xtzt.com/]中空玻璃设备[/url]|[url=http://www.xtzt.com/]中空玻璃机器[/url]|[url=http://www.xtzt.com/]中空玻璃生产线[/url]|


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