以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  jena规则的制定和推理机使用的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=67802)


--  作者:captaio
--  发布时间:10/1/2008 10:58:00 PM

--  jena规则的制定和推理机使用的问题
各位,我在eclipse中导入了jena,可是不清楚怎样才能在环境中定义规则和使用jena推理机,我查了很多资料都是一些源代码我不是很明白,请知道的告知一声,谢谢
--  作者:lsx_221
--  发布时间:10/1/2008 11:38:00 PM

--  
同求
--  作者:63henry.black
--  发布时间:10/6/2008 3:43:00 PM

--  
同求
--  作者:cassiemudan
--  发布时间:10/8/2008 7:52:00 PM

--  
我只是用jena的API在eclipse里试验过简单的推理,不知是否是你所说的使用jena推理机。一个小示例函数如下: 
/**
  * infer using jena rules
  *
  */
 public static void inferWithRule() {
  // rule:
  String ruleStr = "[rule1: (?a http://www.tseg.owl#payFor ?b) ,(?c http://www.tseg.owl#hasBill ?b) -> (?c http://www.tseg.owl#hasAccount ?a)]";
  Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(ruleStr));
  reasoner.setDerivationLogging(true);

  Model emptyModel = ModelFactory.createDefaultModel();
  InfModel inf = ModelFactory.createInfModel(reasoner, emptyModel);
  String file = "file:owl/customer_en.owl";
  inf.read(file);// print("namespace:"+inf.getNsPrefixURI(""));

//to print reasoning track
  PrintWriter out = new PrintWriter(System.out
  for (StmtIterator i = inf.listStatements(); i.hasNext();) {
   Statement s = i.nextStatement();
   // System.out.println("Statement is " + s);
   for (Iterator id = inf.getDerivation(s); id.hasNext();) {
    System.out.println("Statement is " + s);
    Derivation deriv = (Derivation) id.next();
    deriv.printTrace(out, true);
   }
  }
  out.flush();
  // Model inf = FileManager.get().loadModel(file);

  /* 查询语句 ,此时查询能查出加入规则后推出来的隐含关系*/
  String queryString = "PREFIX ns:<http://www.tseg.owl#> "
    + "SELECT ?user ?account "
    + "WHERE {?user ns:hasAccount ?account} ";
  query(queryString, inf);
 }

 public static void query(String queryString, Model model) {
  Query query = QueryFactory.create(queryString);
  QueryExecution qe = QueryExecutionFactory.create(query, model);
  ResultSet results = qe.execSelect();
  /* 打印结果 */
  ResultSetFormatter.out(System.out, results, query);
  qe.close();
 }


--  作者:jiangong
--  发布时间:8/17/2011 5:14:00 PM

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