从同一属性迭代多个推理文本



标题可能有点令人困惑,但基本上这就是问题所在:我正在使用JenaPellet推理器从名为Patient_Doug的资源生成属性文字。三元组如下所示: Patient_Doug-> hasSuggestion-> Literal推断的建议。

问题在于,Protege Pellet推理为道格提出了三个建议,因为道格在医院的情况非常糟糕。Protege推理者建议Doug需要一张Hi-Lo病床,一个RF ID频段和一张离护士站更近的床。不幸的是,在耶拿,我只能得到Hi-lo床来打印。只有 3 个文字中的一个。

下面是一些代码。

    OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC );
    String ns = "http://altervista.org/owl/unit.owl#";
    String inputFile = "c:\jena\acuity.owl";  
    InputStream in = FileManager.get().open(inputFile);
    if (in == null) {
        throw new IllegalArgumentException("File: " + inputFile + " not found");
    }
    model.read(in,"");
    model.prepare();
    //inf and reasoner wont run unless i use hp libraries!
    //asserted data properties
    Individual ind = model.getIndividual(ns+"Patient_Doug");
    OntProperty abcValue = model.getOntProperty("http://example.org/hasABCValue");

    //inferred data properties
    OntProperty suggestion = model.getOntProperty(ns+"hasSuggestion");
    //print asserted data properties
    System.out.println("Properties for patient "+ind.getLocalName().toString());
    System.out.println( abcValue.getLocalName()+"= "+ind.getPropertyValue(abcValue).asLiteral().getInt());
    //print inferenced data properties      
    StmtIterator it = ind.listProperties(suggestion);
     //this iterator only prints one suggestion in an infinite loop
    while (it.hasNext()) {
        System.out.println("A posible suggestion= "+ind.getPropertyValue(suggestion).asLiteral().getString());
    }
    }

代码工作正常,但最后的迭代器只打印无限循环中的一个子句

如有任何建议,我将不胜感激。谢谢。

此代码用于迭代和打印许多推断的hasAdvice。hasSuggestSWRL规则在OWL本体中

    OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC );
String ns = "http://altervista.org/owl/unit.owl#";
String inputFile = "c:\jena\acuity.owl";  
InputStream in = FileManager.get().open(inputFile);
if (in == null) {
    throw new IllegalArgumentException("File: " + inputFile + " not found");
}
model.read(in,"");
model.prepare();
//inf and reasoner wont run unless i use hp libraries!
//asserted data properties
Individual ind = model.getIndividual(ns+"Patient_Doug");
OntProperty abcValue = model.getOntProperty("http://example.org/hasABCValue");

//inferred data properties
OntProperty suggestion = model.getOntProperty(ns+"hasSuggestion");
//print asserted data properties
System.out.println("Properties for patient "+ind.getLocalName().toString());
System.out.println( abcValue.getLocalName()+"= "+ind.getPropertyValue(abcValue).asLiteral().getInt());
    for (StmtIterator j = ind.listProperties(suggestion); j.hasNext(); ) {
            Statement s = j.next();
            //System.out.println( "    " + s.getPredicate().getLocalName() + " -> " );
            System.out.println( "A possible suggestion... " + s.getLiteral().getLexicalForm());
        }

最新更新