Thank you Lorenz,

Best regards

On Sun, Jan 15, 2017 at 7:57 PM, Lorenz B. <
[email protected]> wrote:

>
>
> > Hi Dave, thanks a lot it works and I can see BestCategory as object
> > property.
> >
> > Now, myIndividual.getPropertyValue() also gets the value of Object
> > property? Because I could not found something like
> >  myIndividual.getObjectPropertyValue()
> Trying it out is not possible for you?
>
> The method getPropertyValue does exactly what is written in the Javadoc
> [1], nothing more nothing less.
> That means, it returns the value for the given property and any object
> property is indeed a property. Again, Javadoc is the first entry point
> for developers [2]
>
> [1]
> https://jena.apache.org/documentation/javadoc/jena/
> org/apache/jena/ontology/OntResource.html#getPropertyValue-org.apache.
> jena.rdf.model.Property-
> [2]
> https://jena.apache.org/documentation/javadoc/jena/
> org/apache/jena/ontology/ObjectProperty.html
> >
> > Again thank you.
> >
> > On Sat, Jan 14, 2017 at 10:00 PM, Sidra shah <[email protected]>
> wrote:
> >
> >> Yes you are right. I think the rule is Ok, Jena code is Ok but the
> problem
> >> is in the ontology part i-e data property/object property.
> >>
> >> Let me choose BestCategory as object property and will make its domain
> >> User class and range as class Category.
> >> Category class have three members, that is catPhysics, catChemistry and
> >> catGeography.
> >> I will let you know the outcome.
> >>
> >> Thanks again Dave,
> >>
> >> Kind regards
> >>
> >> On Sat, Jan 14, 2017 at 9:29 PM, Dave Reynolds <
> [email protected]>
> >> wrote:
> >>
> >>> On 14/01/17 18:22, Sidra shah wrote:
> >>>
> >>>> Thank you Dave for such a detailed reply. Actually you got my problem,
> >>>> but
> >>>> I have taken BestCategory as data property and the problem which
> bothered
> >>>> me is I want the user BestCategory as a data or object property.
> >>>> The main idea behind this is I want the value of this property for
> >>>> further
> >>>> processing.
> >>>> For instance, I want if BestCategory==Physics
> >>>> Then do something.
> >>>>
> >>>> Should I take BestCategory as Object property? Do you suggest it.?
> >>>>
> >>> In OWL a property can only be a DatatypeProperty or an ObjectProperty
> but
> >>> not both. So you have to choose.
> >>>
> >>> In general in OWL modelling it is best to use symbols (i.e. URIs) for
> >>> concepts like "Physics" and so BestCategory (or bestCategory) should
> be an
> >>> ObjectProperty.
> >>>
> >>> You are completely free choose a different style and decide you will
> use
> >>> strings and so make bestCategory an DatatypeProperty.
> >>>
> >>> Just be consistent in how you declare it and how you use it.
> >>>
> >>> And none of this has anything to do with Jena or with Jena rules!
> >>>
> >>> Dave
> >>>
> >>>
> >>>> Kind regards
> >>>>
> >>>> On Sat, Jan 14, 2017 at 9:08 PM, Dave Reynolds <
> >>>> [email protected]>
> >>>> wrote:
> >>>>
> >>>> Hi Sidra,
> >>>>> You have tried to explain your problem but the example is not minimal
> >>>>> (it
> >>>>> has elements in that aren't used) and isn't complete (no data, no
> >>>>> minimal
> >>>>> ontology, code doesn't generate any output or test any assertions)
> and
> >>>>> it's
> >>>>> not clear what your problem is.
> >>>>>
> >>>>> I'm not clear what you mean by "property not in the data property
> >>>>> assertion but in the Annotations". I assume are referring to the
> >>>>> Protege UI
> >>>>> which in turn suggests that your ontology doesn't match your example
> >>>>> code.
> >>>>> If that's the case then you just need to fix your ontology - nothing
> to
> >>>>> do
> >>>>> with jena or jena rules or this list.
> >>>>>
> >>>>> In the interests of trying to explain for you and Neha what's needed
> >>>>> then
> >>>>> here's your code with some of the unnecessary bits removed and some
> >>>>> output
> >>>>> code added. I've also changed the name
> >>>>> #BestCategory#Physics to #BestCategory_Physics because having a #
> >>>>> character in your local name is really confusing. But I've not fixed
> >>>>> any of
> >>>>> the other style issues with the code or ontology names.
> >>>>>
> >>>>>
> >>>>>>>>  OntModel model
> >>>>>    = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
> >>>>>   InputStream in = FileManager.get().open("data/test-ont.ttl");
> >>>>>   model.read(in, "", "Turtle");
> >>>>>   String ns="http://www.semanticweb.org/t/ontologies/2016/7/myOWL#";;
> >>>>>   OntProperty bestcat=model.getOntProperty(ns+ "BestCategory");
> >>>>>
> >>>>>   //Then rule
> >>>>>   String rule ="[rule1: ( ?x http://www.semanticweb.org/t/o
> >>>>> ntologies/2016/7/myOWL#Physics_Preferred_Category  ?cat1 )" +
> >>>>>         "( ?x http://www.semanticweb.org/t/o
> >>>>> ntologies/2016/7/myOWL#Chem_Pr
> >>>>> eferred_Category  ?cat2 )" +
> >>>>>         "greaterThan(?cat1,?cat2)" +
> >>>>>          " -> (?x http://www.semanticweb.org/t/o
> >>>>> ntologies/2016/7/myOWL#BestCategory http://www.semanticweb.org/t/o
> >>>>> ntologies/2016/7/myOWL#BestCategory_Physics   )]";
> >>>>>
> >>>>>   Reasoner reasoner2 = new GenericRuleReasoner(Rule.
> parseRules(rule));
> >>>>>   InfModel infModel = ModelFactory.createInfModel(reasoner2, model);
> >>>>>   for (StmtIterator i = infModel.listStatements(null,b
> >>>>> estcat,(RDFNode)null);
> >>>>> i.hasNext();) {
> >>>>>      Statement s = i.next();
> >>>>>      System.out.println( String.format("%s has best category %s",
> >>>>>           s.getSubject().getLocalName(),
> >>>>>           s.getObject().asResource().getLocalName()) );
> >>>>>   }
> >>>>>   infModel.write(System.out, "Turtle");
> >>>>> <<<
> >>>>>
> >>>>> Now to run this we need an ontology but we only need to include those
> >>>>> declarations used in the sample code (stripping out the bits your
> don't
> >>>>> need is part of creating a minimal example). We also need test data
> to
> >>>>> trigger the rule but for a minimal example, that might as well go in
> the
> >>>>> ontology. So an example minimal "test-ont.ttl" file might be:
> >>>>>
> >>>>>
> >>>>>>>> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
> >>>>> @prefix owl: <http://www.w3.org/2002/07/owl#> .
> >>>>> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> >>>>> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
> >>>>> @prefix ex:  <http://www.semanticweb.org/t/ontologies/2016/7/myOWL#>
> .
> >>>>>
> >>>>> ex:User a owl:Class .
> >>>>> ex:BestCategory a owl:ObjectProperty .
> >>>>>
> >>>>> ex:Category a owl:Class .
> >>>>> ex:BestCategory_Physics a ex:Category .
> >>>>>
> >>>>> ex:Physics_Preferred_Category a owl:DatatypeProperty .
> >>>>> ex:Chem_Preferred_Category a owl:DatatypeProperty .
> >>>>>
> >>>>> ex:fred a ex:User;
> >>>>>     ex:Physics_Preferred_Category 3 ;minimal
> >>>>>     ex:Chem_Preferred_Category 1 .
> >>>>> <<<
> >>>>>
> >>>>> That breaks lots of OWL naming conventions but at least it matches
> your
> >>>>> code.
> >>>>>
> >>>>> If we run the sample code now then we see that rule fires correctly
> and
> >>>>> outputs:
> >>>>>
> >>>>>     fred has best category BestCategory_Physics
> >>>>>
> >>>>> and that the resulting complete model is displayed as
> >>>>>
> >>>>>
> >>>>>>>> @prefix ex:    <http://www.semanticweb.org/t/
> >>>>> ontologies/2016/7/myOWL#> .
> >>>>> @prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> >>>>> @prefix owl:   <http://www.w3.org/2002/07/owl#> .
> >>>>> @prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
> >>>>> @prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
> >>>>>
> >>>>> ex:fred  a                             ex:User ;
> >>>>>         ex:BestCategory                ex:BestCategory_Physics ;
> >>>>>         ex:Chem_Preferred_Category     1 ;
> >>>>>         ex:Physics_Preferred_Category  3 .
> >>>>>
> >>>>> ex:BestCategory  a  owl:ObjectProperty .
> >>>>>
> >>>>> ex:BestCategory_Physics
> >>>>>         a       ex:Category .
> >>>>>
> >>>>> ex:Chem_Preferred_Category
> >>>>>         a       owl:DatatypeProperty .
> >>>>>
> >>>>> ex:User  a      owl:Class .
> >>>>>
> >>>>> ex:Physics_Preferred_Category
> >>>>>         a       owl:DatatypeProperty .
> >>>>>
> >>>>> ex:Category  a  owl:Class .
> >>>>>
> >>>>> That looks correct (or at least looks like it does what you say you
> are
> >>>>> trying to do). If I load that into protege then I can see the
> individual
> >>>>> fred and the ex:BestCategory property is shown as being a property
> >>>>> assertion not an axiom.
> >>>>>
> >>>>> So on the face of it there is nothing wrong.
> >>>>>
> >>>>> Now if that's not enough to help you solve your problem then create a
> >>>>> similarly complete minimal example which does show your problem. I
> >>>>> expect
> >>>>> your ontology will be a lot different from my example. However, for
> the
> >>>>> sake of debugging your rule most of it won't be relevant so you
> should
> >>>>> be
> >>>>> able to cut it down to something of comparable size to the above, in
> >>>>> which
> >>>>> case it is then possible to post it inline in an email message for
> >>>>> people
> >>>>> to look at. If you do this please make sure it really is minimal and
> >>>>> complete. Also for preference use Turtle (not RDF/XML) syntax because
> >>>>> that
> >>>>> is so much easier to read and more compact.
> >>>>>
> >>>>> Dave
> >>>>>
> >>>>>
> >>>>> On 14/01/17 16:07, Sidra shah wrote:
> >>>>>
> >>>>> Hello All, I have a problem, very same to Neha. I was waiting some
> >>>>>> answer
> >>>>>> will come and I will get help but I think it did not solve.
> >>>>>> I have quiz game for three categories(subjects) Physics, Chemistry
> and
> >>>>>> Geography. User have to select one category and questions of that
> >>>>>> category
> >>>>>> will come.  When user select a category Physics, for instance, 1
> will
> >>>>>> be
> >>>>>> saved in a property Physics_Preferred_Category. When user select
> second
> >>>>>> time Physics when login to the system, 2 will be saved.
> >>>>>> I have designed a rule, shown below, to see which category user has
> >>>>>> selected most of the time and will consider that BestCategory for
> that
> >>>>>> user. The problem which I have currently is it saved the
> BestCategory
> >>>>>> property not in the data property assertion but in the Annotations.
> >>>>>>
> >>>>>> I have tried to include possible code but not ontology. If it is
> >>>>>> allowed I
> >>>>>> will paste the screen shot of my properties.
> >>>>>>
> >>>>>>
> >>>>>> OntModel model=ModelFactory.createOntologyModel(
> OntModelSpec.OWL_DL_M
> >>>>>> EM);
> >>>>>>  InputStream in =FileManager.get().open("F://final.owl");
> >>>>>>             if (in==null) {
> >>>>>>                 throw new IllegalArgumentException( "File: " +  "
> not
> >>>>>> found");
> >>>>>>             }           model.read(in,"");
> >>>>>>              String ns="http://www.semanticweb.org
> >>>>>> /t/ontologies/2016/7/myOWL#";
> >>>>>>  OntClass dil = model.getOntClass(ns + "DiligentUser");
> >>>>>>              OntClass avgr = model.getOntClass(ns + "AverageUser");
> >>>>>>  OntProperty bestcat=model.getOntProperty(ns+ "BestCategory");
> >>>>>>  Individual indiv = user1.createIndividual(ns + name); //name comes
> >>>>>> from a
> >>>>>> text field
> >>>>>> //Then rule
> >>>>>>
> >>>>>> String rule ="[rule1: ( ?x http://www.semanticweb.org/t/
> >>>>>> ontologies/2016/7/myOWL#Physics_Preferred_Category  ?cat1 )" +
> >>>>>>  "( ?x http://www.semanticweb.org/t/ontologies/2016/7/myOWL#Chem_
> >>>>>> Preferred_Category  ?cat2 )" +
> >>>>>>       //   "( ?x http://www.semanticweb.org/t/o
> >>>>>> ntologies/2016/7/myOWL#Geo_
> >>>>>> Preferred_Category  ?cat3 )" +
> >>>>>>       //  "greaterThan(?cat1,?cat2), greaterThan(?cat1,?cat3)"
> >>>>>>          + " ->  (?x  http://www.semanticweb.org/t/o
> >>>>>> ntologies/2016/7/myOWL#
> >>>>>> BestCategory   http://www.semanticweb.org/t/
> ontologies/2016/7/myOWL#
> >>>>>> BestCategory#Physics   )]";
> >>>>>>
> >>>>>> //in ?cat1, ?cat2 ?cat3 there will be numbers like 1 2 3
> >>>>>>
> >>>>>> Reasoner reasoner2 = new GenericRuleReasoner(Rule.
> parseRules(rule));
> >>>>>>         InfModel infModel = ModelFactory.createInfModel(reasoner2,
> >>>>>> model);
> >>>>>>
> >>>>>> infModel.listStatements(null,bestcat,(RDFNode)null);
> >>>>>> }
> >>>>>>
> >>>>>>
> >>>>>>
> --
> Lorenz Bühmann
> AKSW group, University of Leipzig
> Group: http://aksw.org - semantic web research center
>
>

Reply via email to