That library works great. Thanks again
--------------------------------------------
On Fri, 2/2/18, Phil Shields <shields_p...@yahoo.com.au.INVALID> wrote:

 Subject: Re: Pellet with Jena frustrations
 To: "users@jena.apache.org" <users@jena.apache.org>
 Received: Friday, 2 February, 2018, 10:09 AM
 
 Thank you Piotr, that looks
 promising.Phil
  
 
    
 On Thursday, 1 February 2018, 19:41, Piotr Nowara <piotrnow...@gmail.com>
 wrote:
  
 
 
 Hi Phil,
 
 there's an
 actively developed Pellet fork called Openllet[1]. It has
 some
 refactored and updated dependencies.
 Maybe it will be worth checking out.
 
 Cheers,
 Piotr
 
 [1]https://github.com/Galigator/openllet
 
 
 2018-02-01
 3:06 GMT-05:00 Phil Shields <shields_p...@yahoo.com.au.invalid>:
 
 > Hi all, I have been
 trying in vain to get pellet to work in Eclipse in a
 > dynamic web application. Pellet infers
 SWRL rules and works well in Protege
 >
 and as a 'stand alone' java class in Eclipse. 
 Apparently,  OntModel model
 > =
 ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC)
 > requires HP libs to work and the servlet
 has apache libs. The problem is
 > that
 they don't play nice.
 > My data goes
 from a JSP to the servlet which (should) pass it onto the
 > class. The servlet sees the HP libs in the
 class and throws exceptions
 > about
 wanting HP model and RDF libs. When I put them in it chages
 the
 > nature of some statement methods
 which apparently are different between HP
 > and Apache.
 >
 > I have tried other ways of reasoning with
 pellet such as: Reasoner
 > reasoner =
 ReasonerRegistry.getOWLReasoner();
 >   
     reasoner = reasoner.bindSchema(model1);
 >      // Obtain standard OWL-DL spec and
 attach the Pellet reasoner
 >       
 OntModelSpec ontModelSpec =
 OntModelSpec.OWL_DL_MEM_RULE_INF;
 >   
     //OntModelSpec ontModelSpec = OntModelSpec.
 > PelletReasonerFactory.THE_SPEC;
 >       
 ontModelSpec.setReasoner(reasoner);
 > 
       // Create ontology model with reasoner support
 >        OntModel model =
 ModelFactory.createOntologyModel(ontModelSpec,
 > model1);
 > to no
 avail.
 > Is there any way I can reason
 with pellet for an OntModel in an apache web
 > application in Tomcat 7?
 > Follows is the class that changes
 statements in the ontology and passes
 >
 the changed ontology onto the helper class to do the
 reasoning. See below,
 > I tried casting
 the OntModel from apache to HP and that didn't work.
 > import java.io.InputStream;
 > import java.util.ArrayList;
 > import java.util.List;
 >
 > import
 org.apache.jena.ontology.OntModel;
 >
 import org.apache.jena.ontology.OntModelSpec;
 > import
 org.apache.jena.rdf.model.Literal;
 >
 import org.apache.jena.rdf.model.ModelFactory;
 > import
 org.apache.jena.rdf.model.Property;
 >
 import org.apache.jena.rdf.model.Resource;
 > import
 org.apache.jena.rdf.model.ResourceFactory;
 > import
 org.apache.jena.rdf.model.Statement;
 >
 import org.apache.jena.rdf.model.StmtIterator;
 > import
 org.apache.jena.util.FileManager;
 >
 >
 >
 >
 > public class
 ModifyStatements {
 >
 >
 >    public static
 void main(String[] args) {
 >
 >
 >        //test
 data
 >
 >       
 String patientsName= "Patient_Doug";
 >                int ptAge=62;
 >                int iabc=5;
 >                int iimpact=9;
 >                int
 isupervision=3;
 >               
 int ifeeding=11;
 >               
 int itoilet=4;
 >               
 int imobility=11;
 >
 >       
 deleteAndWriteStatements(patientsName, ptAge, iabc,
 iimpact,
 > isupervision, ifeeding,
 itoilet, imobility);
 >
 >
 > }
 >
 >      static 
 List<String> thePropertyBeingChangedArray = new
 > ArrayList<String>();
 >      static List<Integer>
 theNewLiteralsArray = new ArrayList<Integer>();
 >      static List<Statement>
 statementsToRemoveArray = new
 >
 ArrayList<Statement>();
 >
 >
 >    public static
 void deleteAndWriteStatements(String patientsName, int
 > age, int abc, int impact, int supervision,
 int feeding, int toilet, int
 > mobility)
 {
 >        Inf inf = new Inf();
 >
 >
 >        theNewLiteralsArray.clear();
 >       
 statementsToRemoveArray.clear();
 >   
     thePropertyBeingChangedArray.clear();
 >        Resource subject=null;
 >          Property predicate=null;
 >          OntModel model1 =
 ModelFactory.createOntologyModel(
 >
 OntModelSpec.OWL_DL_MEM);
 >         
 String inputFile = "c:\\jena\\acuity.owl";
 >            InputStream in =
 FileManager.get().open(inputFile);
 >   
         if (in == null) {
 >     
           throw new
 IllegalArgumentException("File: " + inputFile +
 > " not found");
 >            }
 > 
           model1.read(in,"");
 >          String ns = "http://philshields.altervista.org/owl/unit.owl#";;
 >            String hq="http://example.org/";;
 >
 >        //incoming
 integer array
 >
 >   
     theNewLiteralsArray.add(0,abc);
 > 
       theNewLiteralsArray.add(1,impact);
 >       
 theNewLiteralsArray.add(2,supervision);
 >       
 theNewLiteralsArray.add(3,feeding);
 > 
       theNewLiteralsArray.add(4,toilet);
 >       
 theNewLiteralsArray.add(5,mobility);
 > 
       theNewLiteralsArray.add(6,age);
 >
 >       
 System.out.println("Lereral array feeding=
 > "+theNewLiteralsArray.get(3));
 >
 >
 >        //store the properties to be
 deleted then reinstated in an array
 > 
      
 thePropertyBeingChangedArray.add(0,hq+"hasABCValue");
 >       
 thePropertyBeingChangedArray.add(1,hq+"hasImpactOfSymptomsValue");
 >       
 thePropertyBeingChangedArray.add(2,hq+"hasSupervisionValue");
 >       
 thePropertyBeingChangedArray.add(3,hq+"hasFeedingValue");
 >       
 thePropertyBeingChangedArray.add(4,hq+"hasHygieneToiletingValue");
 >       
 thePropertyBeingChangedArray.add(5,hq+"hasMobilityValue");
 >       
 thePropertyBeingChangedArray.add(6,ns+"hasAge");
 >
 >
 >       
 inf.inferenceResults((com.hp.hpl.jena.ontology.OntModel)
 > model1,patientsName);
 >          StmtIterator iter =
 model1.listStatements();
 >
 >          while (iter.hasNext())
 >        {
 >     
       Statement stmt  = iter.nextStatement();
 >
 >             
 subject = stmt.getSubject();
 >       
       predicate = stmt.getPredicate();
 >
 >
 >              //put statements
 belonging to the properties for this patient
 > in an array for deletion
 >              for (int i = 0; i <
 thePropertyBeingChangedArray.size();
 >
 i++) {
 >           
 if(subject.toString().equals(ns+patientsName)&&
 >
 predicate.toString().equals(thePropertyBeingChangedArray.get(i)))
 {
 >
 >
 >               
 statementsToRemoveArray.add(stmt);
 >
 >
 >            }
 >
 >             
 }
 >            }
 >
 >         
 Resource s =
 ResourceFactory.createResource(ns+patientsName);
 >
 >    for (int i = 0;
 i < statementsToRemoveArray.size(); i++) {
 >       
 System.out.println("Statements in array
 "+i+"= "+
 >
 thePropertyBeingChangedArray.get(i)+" The value
 > "+theNewLiteralsArray.get(i));
 >
 >
 >     
 model1.remove(statementsToRemoveArray.get(i));
 >      Property p =
 ResourceFactory.createProperty(
 >
 thePropertyBeingChangedArray.get(i));
 > 
     Literal o =
 model1.createTypedLiteral(theNewLiteralsArray.get(i));
 >      Statement newStatement =
 ResourceFactory.createStatement(s, p, o );
 >      model1.add(newStatement);
 >
 >    }
 >
 >            }
 >
 >
 >
 >    }
 >
 >
 >    The helper class that does the
 reasoning.
 > import
 java.util.ArrayList;
 >
 >    import
 org.mindswap.pellet.jena.PelletReasonerFactory;
 >
 >    import
 com.hp.hpl.jena.ontology.Individual;
 > 
   import com.hp.hpl.jena.ontology.OntModel;
 >    import
 com.hp.hpl.jena.ontology.OntProperty;
 > 
   import com.hp.hpl.jena.rdf.model.ModelFactory;
 >    import
 com.hp.hpl.jena.rdf.model.Statement;
 > 
   import com.hp.hpl.jena.rdf.model.StmtIterator;
 >
 >
 >    public class Inf {
 >    public static void main(String[]
 args) {
 >        // TODO
 Auto-generated method stub
 >
 >
 >    }
 >
 >    static
 ArrayList<String> nurses=new
 ArrayList<String>();
 >    static
 ArrayList<String> nursesAndQualifications=new
 > ArrayList<String>();
 >    static ArrayList<String>
 alliedHealth=new ArrayList<String>();
 >    static ArrayList<String>
 hospitalUnit=new ArrayList<String>();
 >    static ArrayList<String>
 aSuggestion=new ArrayList<String>();
 >    static ArrayList<String>
 aRisk=new ArrayList<String>();
 > 
   static int ptTotal;
 >
 >    public void inferenceResults(OntModel
 model1, String patientsName) {
 >     
   String hq="http://example.org/";;
 >        String ns = "http://philshields.altervista.org/owl/unit.owl#";;
 >       
 System.out.println("Patients name=
 "+patientsName);
 > OntModel model =
 ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC
 > );
 >        //
 OntModel ontModel = ModelFactory.createOntologyModel();
 >
 >
 model.addSubModel(model1);
 >
 > Individual ind =
 model.getIndividual(ns+patientsName);
 >
 >
 >        //model.prepare();
 >        //asserted data properties
 >        OntProperty abcValue =
 model.getOntProperty(hq+"hasABCValue");
 >        OntProperty impact =
 model.getOntProperty(hq+"
 >
 hasImpactOfSymptomsValue");
 >   
     OntProperty supervision =
 model.getOntProperty(hq+"
 >
 hasSupervisionValue");
 >       
 OntProperty feeding =
 model.getOntProperty(hq+"hasFeedingValue");
 >        OntProperty toilet =
 model.getOntProperty(hq+"
 >
 hasHygieneToiletingValue");
 >   
     OntProperty mobility =
 model.getOntProperty(hq+"
 >
 hasMobilityValue");
 >       
 OntProperty age =
 model.getOntProperty(ns+"hasAge");
 >
 >
 >        //inferred data properties
 >        OntProperty total =
 model.getOntProperty(ns+"hasTotalScore");
 >        OntProperty risk =
 model.getOntProperty(ns+"hasPossibleRisk");
 >        OntProperty allied =
 model.getOntProperty(ns+"hasAlliedHealth");
 >        OntProperty nurse =
 model.getOntProperty(ns+"hasShiftNurse");
 >        OntProperty qualification =
 model.getOntProperty(ns+"
 >
 hasQualification");
 >       
 OntProperty suggestion =
 model.getOntProperty(ns+"hasSuggestion");
 >        OntProperty unit =
 model.getOntProperty(ns+"hasPossibleUnit");
 >
 >        //print
 asserted data properties
 >       
 System.out.println("Properties for
 "+ind.getLocalName().toString(
 >
 ));
 >        System.out.println(
 abcValue.getLocalName()+"=
 >
 "+(ind.getPropertyValue(abcValue)).asLiteral().getInt());
 >        System.out.println(
 impact.getLocalName()+"=
 >
 "+ind.getPropertyValue(impact).asLiteral().getInt());
 >        System.out.println(
 supervision.getLocalName()+"=
 >
 "+ind.getPropertyValue(supervision).asLiteral().getInt());
 >        System.out.println(
 feeding.getLocalName()+"=
 >
 "+ind.getPropertyValue(feeding).asLiteral().getInt());
 >        System.out.println(
 toilet.getLocalName()+"=
 >
 "+ind.getPropertyValue(toilet).asLiteral().getInt());
 >        System.out.println(
 mobility.getLocalName()+"=
 >
 "+ind.getPropertyValue(mobility).asLiteral().getInt());
 >        System.out.println(
 age.getLocalName()+"=
 >
 "+ind.getPropertyValue(age).asLiteral().getInt());
 >
 >        //print
 inferred data properties
 >       
 //System.out.println( total.getLocalName()+"=
 >
 "+ind.getPropertyValue(total).asLiteral().getInt());
 >        //ptTotal=
 ind.getPropertyValue(total).isLiteral().getInt();
 >
 >       
 aRisk.clear();
 >        for
 (StmtIterator j = ind.listProperties(risk); j.hasNext(); )
 {
 >            Statement s =
 j.next();
 >           
 //System.out.println( "    " +
 s.getPredicate().getLocalName()
 > +
 " -> " );
 >           
 System.out.println( "A possible risk... " +
 > s.getLiteral().getLexicalForm());
 >            aRisk.add("A
 possible risk... " + s.getLiteral().getLexicalForm(
 > ));
 >        }
 >
 >        //an
 example of getting a data property
 >   
     aSuggestion.clear();
 >       
     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());
 >               
 aSuggestion.add("A possible suggestion... " +
 > s.getLiteral().getLexicalForm());
 >            }
 > 
           hospitalUnit.clear();
 > 
           for (StmtIterator j =
 ind.listProperties(unit); j.hasNext(); )
 > {
 >             
   Statement s = j.next();
 >       
         //System.out.println( "    " +
 > s.getPredicate().getLocalName() + "
 -> " );
 >               
 System.out.println( "A possible unit... " +
 > s.getLiteral().getLexicalForm());
 >               
 hospitalUnit.add("A possible unit... " +
 > s.getLiteral().getLexicalForm());
 >            }
 >
 >            // an example of getting
 a class's individual
 >         
   alliedHealth.clear();
 >         
   for (StmtIterator j = ind.listProperties(allied);
 j.hasNext();
 > ) {
 > 
               Statement s = j.next();
 >               
 //System.out.println( "    " +
 > s.getPredicate().getLocalName() + "
 -> " );
 >               
 System.out.println( "Possible allied health... "
 +
 > s.getLiteral().getLexicalForm());
 >               
 alliedHealth.add("Possible allied health... " +
 > s.getLiteral().getLexicalForm());
 >            }
 >
 >           
 //System.out.println("A possible nurse=
 "+((Resource)
 >
 ind.getPropertyValue(nurse)).getLocalName());
 >
 >        //put
 multiple possible nurses in array that fit the
 qualification
 > criteria
 >           
 nursesAndQualifications.clear();
 >   
         for (StmtIterator j = ind.listProperties(nurse);
 j.hasNext();
 > ) {
 > 
               int x=0;
 >     
           Statement s = j.next();
 >               
 nurses.add(x,s.getLiteral().getLexicalForm());
 >               
 //System.out.println( "    " +
 > s.getPredicate().getLocalName() + "
 -> " );
 >               
 //System.out.println( "A possible nurse... " +
 ((Resource)
 >
 s.getObject()).getLocalName());
 >
 >                //
 System.out.println("a nurse from individual=
 > "+nurses.get(x));
 >
 >
 >             
 //System.out.println("a nurse from individual=
 > "+nurses.get(x));
 >             
 //System.out.println("Some nurse
 "+model.getIndividual(ns+
 >
 nurses.get(x)).listProperties(qualification));
 >                Individual ind1 =
 model.getIndividual(ns+nurses.get(x));
 >               
 //System.out.println("a nurse from individual=
 "+ind1);
 >
 >   
             for (StmtIterator ji =
 ind1.listProperties(qualification);
 >
 ji.hasNext(); ) {
 >             
       Statement si = ji.next();
 >   
                 //System.out.println( "   
 " +
 >
 s.getPredicate().getLocalName() + " -> " );
 >                   
 System.out.println( nurses.get(x)+" has an
 appropriate
 > qualification... " +
 si.getLiteral().getLexicalForm());
 >   
                
 nursesAndQualifications.add(nurses.get(x)+" has an
 > appropriate qualification... " +
 si.getLiteral().getLexicalForm());
 >   
             }nurses.clear();
 >   
         }
 >
 > }
 >
 >
 >
 Many thanks,Phil
 >
 
 
    

Reply via email to