以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  我写了一条规则/怎么不生效呀,规则如下:  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=25765)


--  作者:spaceflight
--  发布时间:12/21/2005 4:15:00 PM

--  我写了一条规则/怎么不生效呀,规则如下:
我写了一条规则/怎么不生效呀
规则如下:
[r1:(?c sec:hasEvent 'E1001'),(?c sec:hasFirewall ?f)->(?f sec:doCommand 'FW_CLOSE')]
意思是对象若存在E1001事件且含有Firewall,就关闭firewall
可是又没有这条规则都一样的结果呀/代码如下:
==================================================
String uri = "http://www.demo.com/ontologies/sec#";
    PrintUtil.registerPrefix("sec", uri);

    // Create an (RDF) specification of a hybrid reasoner which
    // loads its data from an external file.
    Model m = ModelFactory.createDefaultModel();
    Resource config = m.createResource();
    config.addProperty(ReasonerVocabulary.PROPruleMode, "hybrid");
    config.addProperty(ReasonerVocabulary.PROPruleSet,"d:/work/security.rules");

    // Create an instance of such a reasoner
    
    GenericRuleReasoner reasoner = new          GenericRuleReasoner(GenericRuleReasonerFactory.theInstance(),config);

    // Load test data
    Model data = ModelLoader.loadModel("file:///d:/work/yd-security.owl");
    InfModel infmodel = ModelFactory.createInfModel(reasoner, data);
    //OntModel ontmodel = ModelFactory.c.createInfModel(reasoner, data);

    // Query for all things related to "a" by "p"
    Property p = data.getProperty(uri, "hasEvent");
    //Resource a = data.getResource(uri + "SA1");

    StmtIterator i = infmodel.listStatements(a,null, (RDFNode)null);
    while (i.hasNext()) {
      System.out.println(" - " + PrintUtil.print(i.nextStatement()));
    }


--  作者:jpz6311whu
--  发布时间:12/21/2005 5:37:00 PM

--  
config.addProperty(ReasonerVocabulary.PROPruleSet,"d:/work/security.rules");
-->
config.addProperty(ReasonerVocabulary.PROPruleSet,"d://work//security.rules");

--  作者:spaceflight
--  发布时间:12/21/2005 6:44:00 PM

--  
不是这个原因呀,老大,照你的改了,效果一样的,请帮忙呀
--  作者:spaceflight
--  发布时间:12/21/2005 6:46:00 PM

--  
规则已经读进去了,可以用语句打印出来
--  作者:jpz6311whu
--  发布时间:12/21/2005 6:46:00 PM

--  
你把d:/work/security.rules贴出来看看
--  作者:spaceflight
--  发布时间:12/21/2005 6:48:00 PM

--  
[r1:(?c sec:hasFirewall ?f),(?c sec:hasEvent 'E1001')->(?f sec:doCommand 'FW_CLOSE')]
--  作者:spaceflight
--  发布时间:12/21/2005 6:48:00 PM

--  
有没有msn,老大,急呀,,,
--  作者:spaceflight
--  发布时间:12/21/2005 6:50:00 PM

--  
我的msn
spaceflight.jeff.liu@hotmail.com
--  作者:jpz6311whu
--  发布时间:12/21/2005 6:52:00 PM

--  
[r1:(?c sec:hasFirewall ?f),(?c sec:hasEvent 'E1001')->(?f sec:doCommand 'FW_CLOSE')]
这个规则中sec是什么,并没有声明啊
--  作者:spaceflight
--  发布时间:12/21/2005 6:58:00 PM

--  
怎么声明,在哪里?这是程序的前2行,已经写了呀,

String uri = "http://www.s-ec.com/ontologies/sec#";
PrintUtil.registerPrefix("sec", uri);

可以联系您吗?


--  作者:spaceflight
--  发布时间:12/21/2005 7:03:00 PM

--  
把它写全效果也是一样的
[r1:(?c http://www.s-ec.com/ontologies/sec#hasEvent ?e),(?c

http://www.s-ec.com/ontologies/sec#hasFirewall ?f)->(?f

http://www.s-ec.com/ontologies/sec#doCommand "FW_CLOSE")]
#,equal(?x,?y)


--  作者:jpz6311whu
--  发布时间:12/21/2005 7:04:00 PM

--  
应该在规则文件中声明,具体参考jena的etc文件夹中的规则文件例子
--  作者:spaceflight
--  发布时间:12/21/2005 7:07:00 PM

--  
先谢谢了,我只有一个.owl和一个.rules个文件

--  作者:chengqh
--  发布时间:12/26/2005 9:43:00 PM

--  
把你规则里的'E1001'改成完整的URI就可以
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
140.625ms