Thanks Lorenz and Dave, I have corrected the  http://www.semanticweb.org#
<http://www.semanticweb.org/#GPA>Student to ?x but it does not
work.Actually it does not save the updated marks/GPA of student and when I
remove the Jena rules part, it then updates and save the GPA.
I also try the SPARQL query inside Protege Query tab but it does not give
me any instance of the GoodStudent class.

On Sun, Sep 18, 2016 at 12:40 PM, Lorenz Buehmann <
buehm...@informatik.uni-leipzig.de> wrote:

> The second condition of your rule doesn't make any sense as the subject
> is Student and it should be ?x.
>
>
> On 18.09.2016 17:41, javed khan wrote:
> > This code does not work. I want to save student marks/GPA in the file and
> > based on GPA assign students to GoodStudent or WorstStudents sub classes
> of
> > Student via Jena rules.
> >
> >
> >
> >
> > OntModel model=ModelFactory.createOntologyModel();
> >
> >          InputStream in =FileManager.get().open("C://std.owl");
> >             if (in==null) {
> >                 throw new IllegalArgumentException( "File: " +  " not
> > found");
> >             }           model.read(in,"");
> >
> >              String ns="http://www.semanticweb.org#";;
> >
> >             OntClass user1 = model.getOntClass(ns + "Student");
> >
> >            Individual indiv = user1.createIndividual(ns + name); //name
> is
> > variable
> >
> >             Property prop= model.getProperty(ns,"GPA");
> >
> >             indiv.addLiteral(prop, marks); //marks also variable having
> > some value i-e 3.0
> >
> >
> >
> >  String rule="[rule1:(?x   http://www.w3.org/1999/02/22-
> rdf-syntax-ns#type
> > http://www.semanticweb.org#Student) " +
> >          "( http://www.semanticweb.org#Student
> > http://www.semanticweb.org#GPA  ?marks +   )"   + "greaterThan(?marks,
> 2) "+
> >          " ->  (?x   http://www.w3.org/1999/02/22-rdf-syntax-ns#type
> > http://www.semanticweb.org#GoodStudent )]";
> >
> >              String queryString= "PREFIX std:<http://www.semanticweb.
> org#>
> > "+
> >          "PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> "  +
> >           "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+
> >                       "SELECT  * " +
> >                 " WHERE {  ?x rdf:type std:GoodStudent}";
> >
> >              Reasoner reasoner2 = new
> > GenericRuleReasoner(Rule.parseRules(rule));
> >   InfModel inf = ModelFactory.createInfModel(reasoner2, model);
> >      Query query = QueryFactory.create(queryString);
> >           QueryExecution qe = QueryExecutionFactory.create(query, inf);
> >      ResultSet results = qe.execSelect();
> >      ResultSetFormatter.out(System.out, results, query);
> >      qe.close();
> >
> >
> >
> >          try (FileOutputStream writer = new
> > FileOutputStream("C://std.owl")) {
> >             model.write(writer, "RDF/XML");
> >         } catch (IOException ex) {
> >             Logger.getLogger(stdinfo.class.getName()).log(Level.SEVERE,
> > null, ex);
> >         }
> >             model.write(System.out, "N3");
> >
> >     }
> >
>
>

Reply via email to