You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Brian Le <br...@gmail.com> on 2021/07/22 20:13:47 UTC

Re: Jena Rule

Hello All,
Apologies If I don't do this right but I am new to java and jena so please
bear with me if I am doing this wrong completely. I just started to get
back into coding after being away for some time. I've made an ontology but
I was wondering If It is possible to use SPARQL to pull in everything and
then use a rule to help filter the data and make it unique.  Any advice or
help would be really appreciated

public static String reasoningTest() {

        Model model = ModelFactory.createDefaultModel();
        String rules = "[rule1:(if possible?)]";
        Instant start = Instant.now();
        Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
        InfModel inf = ModelFactory.createInfModel(reasoner, model);

        String queryString = "select ?o (min(?s)) " +
                "where { ?s untitled-ontology-2:isRelatedToConcept ?o }" +
                " GROUP BY ?o";;

        Query query = QueryFactory.create(queryString);

        try (QueryExecution qexec = QueryExecutionFactory.create(query, inf)) {
            ResultSet results = qexec.execSelect();
            for ( ; results.hasNext() ; ) {
                QuerySolution soln = results.nextSolution();
                System.out.println(soln.toString());
            }
        }
        Instant end = Instant.now();
        System.out.println("Sparql query " + queryString + " evaluated
in " + Duration.between(start, end));
}

The example would come out to be something like |s
           |o                                |

| untitled-ontology-2:Recursion   | untitled-ontology-2:Exercise5-2 |
| untitled-ontology-2:Proposition | untitled-ontology-2:Exercise1-1 |
| untitled-ontology-2:Congruence  | untitled-ontology-2:Exercise4-2 |
| untitled-ontology-2:Sequence    | untitled-ontology-2:Exercise2-2 |
| untitled-ontology-2:Function    | untitled-ontology-2:Exercise2-2 |
| untitled-ontology-2:Predicate   | untitled-ontology-2:Exercise1-1 |
| untitled-ontology-2:Set         | untitled-ontology-2:Exercise2-1 |
| untitled-ontology-2:Induction   | untitled-ontology-2:Exercise5-1 |

Some snippet of the ont is <owl:NamedIndividual
rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Predicate">

    <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Concept"/></owl:NamedIndividual>
  <owl:NamedIndividual
rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise1-1">
    <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise"/>
        <untitled-ontology-2:isRelatedToConcept
rdf:resource="http://www.semanticweb.org
/ontologies/2021/5/untitled-ontology-2#Predicate"/>
        <untitled-ontology-2:isRelatedToConcept
rdf:resource="http://www.semanticweb.org
/ontologies/2021/5/untitled-ontology-2#Proposition"/>
 </owl:NamedIndividual>

 <owl:NamedIndividual rdf:about="http://www.semanticweb.org
/ontologies/2021/5/untitled-ontology-2#Exercise1-2">
    <rdf:type rdf:resource="http://www.semanticweb.org
/ontologies/2021/5/untitled-ontology-2#Exercise"/>
    <untitled-ontology-2:isRelatedToConcept
rdf:resource="http://www.semanticweb.org
/ontologies/2021/5/untitled-ontology-2#Predicate"/></owl:NamedIndividual>
<owl:NamedIndividual rdf:about="http://www.semanticweb.org
/ontologies/2021/5/untitled-ontology-2#Exercise2-1">
    <rdf:type rdf:resource="http://www.semanticweb.org
/ontologies/2021/5/untitled-ontology-2#Exercise"/>
    <untitled-ontology-2:isRelatedToConcept
rdf:resource="http://www.semanticweb.org
/ontologies/2021/5/untitled-ontology-2#Set"/></owl:NamedIndividual>

in TTL format if needed

http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Structures:Structures
rdf:type owl:NamedIndividual ,:Course ;
:hasConcept :Congruence ,
:Function ,
:Induction ,
:Predicate ,
:Proposition ,
:Recursion ,
:Sequence ,
:Set ;
:hasTopic :BaseBExpansion ,

:TimeComplexity.


 Any advice or help would be really appreciated needed any help tips

 anything really would be greatly appreciated!


Thanks for everything,


On Thu, Jul 22, 2021 at 12:37 PM Brian Le <br...@gmail.com> wrote:

> Hello All,
> Apologies If I don't do this right but I am new to java and jena so please
> bear with me if I am doing this wrong completely. I just started to get
> back into coding after being away for some time. I've made an ontology but
> I was wondering If It is possible to use SPARQL to pull in everything and
> then use a rule to help filter the data and make it unique.  Any advice or
> help would be really appreciated
>
> public static String reasoningTest() {
>
>         Model model = ModelFactory.createDefaultModel();
>         String rules = "[rule1:(if possible?)]";
>         Instant start = Instant.now();
>         Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
>         InfModel inf = ModelFactory.createInfModel(reasoner, model);
>
>         String queryString = "select ?o (min(?s)) " +
>                 "where { ?s untitled-ontology-2:isRelatedToConcept ?o }" +
>                 " GROUP BY ?o";;
>
>         Query query = QueryFactory.create(queryString);
>
>         try (QueryExecution qexec = QueryExecutionFactory.create(query, inf)) {
>             ResultSet results = qexec.execSelect();
>             for ( ; results.hasNext() ; ) {
>                 QuerySolution soln = results.nextSolution();
>                 System.out.println(soln.toString());
>             }
>         }
>         Instant end = Instant.now();
>         System.out.println("Sparql query " + queryString + " evaluated in " + Duration.between(start, end));
> }
>
> The example would come out to be something like |s                                |o                                |
>
> | untitled-ontology-2:Recursion   | untitled-ontology-2:Exercise5-2 |
> | untitled-ontology-2:Proposition | untitled-ontology-2:Exercise1-1 |
> | untitled-ontology-2:Congruence  | untitled-ontology-2:Exercise4-2 |
> | untitled-ontology-2:Sequence    | untitled-ontology-2:Exercise2-2 |
> | untitled-ontology-2:Function    | untitled-ontology-2:Exercise2-2 |
> | untitled-ontology-2:Predicate   | untitled-ontology-2:Exercise1-1 |
> | untitled-ontology-2:Set         | untitled-ontology-2:Exercise2-1 |
> | untitled-ontology-2:Induction   | untitled-ontology-2:Exercise5-1 |
>
> Some snippet of the ont is <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Predicate">
>
>     <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Concept"/></owl:NamedIndividual>
>   <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise1-1">
>     <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise"/>
>         <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>         <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Proposition"/>
>  </owl:NamedIndividual>
>
>  <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise1-2">
>     <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>     <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/></owl:NamedIndividual>
> <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise2-1">
>     <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>     <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Set"/></owl:NamedIndividual>
>
> in TTL format if needed
>
> http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Structures:Structures
> rdf:type owl:NamedIndividual ,:Course ;
> :hasConcept :Congruence ,
> :Function ,
> :Induction ,
> :Predicate ,
> :Proposition ,
> :Recursion ,
> :Sequence ,
> :Set ;
> :hasTopic :BaseBExpansion ,
>
> :TimeComplexity.
>
>
>  Any advice or help would be really appreciated needed any help tips
>
>  anything really would be greatly appreciated!
>
>
> Thanks for everything,
>
>

Re: Re: Jena Rule

Posted by Lorenz Buehmann <bu...@informatik.uni-leipzig.de>.
I'm not sure what you are doing:

1) SPARQL is the query language for RDF

2) (Jena) Rules do not pull or "filter" anything, they infer new 
statements based on existing statements

3) your rule does literally nothing, there is not any variable in the 
rule but only existing RDF terms of your ontology. That is equivalent to 
just add the triple in the conclusion of the rule to your dataset ...

4) if you only want to have the inferred statements shown, then simply 
filter by those that are not in the original data.

But, please adapt your rule first, you need variables for subject and 
object that can be bound. Your rule is nothing more that denoting the 
symmetry of the hasConcept relation - not that I understand if this 
makes sense from your example

Rule syntax is online: 
https://jena.apache.org/documentation/inference/index.html#RULEsyntax

Please have a look at the example rules and especially at how variables 
are declared.


On 23.07.21 01:05, Brian Le wrote:
> Please see below I corrected it I am just trying to write rules to have each concept come out with an exercise. The one I wrote just pulls everything any assistance would be greatly appreciated.
>
> Thanks,
> Brian
>
>> On Jul 22, 2021, at 3:13 PM, Brian Le <br...@gmail.com> wrote:
>>
>> 
>> Hello All,
>> Apologies If I don't do this right but I am new to java and jena so please bear with me if I am doing this wrong completely. I just started to get back into coding after being away for some time. I've made an ontology but I was wondering If It is possible to use SPARQL to pull in everything and then use a rule to help filter the data and make it unique.  Any advice or help would be really
>   String prefixString=
>              "@prefix uo: <http://www.semanticweb.org/szhang10/ontologies/2021/5/untitled-ontology-2#>";
>
> String inputFile = "C:\\Users\\brian\\IdeaProjects\\hello-semantic-web\\src\\model.rdf";
> Model model = ModelFactory.createDefaultModel();
> InputStream in = FileManager.get().open(inputFile);
> if (in == null) {
>     throw new IllegalArgumentException("Filenot found");
> }
> model.read(in, "");
>
> String rules = prefixString + "[rule: (uo:DiscreteStructures uo:HasConcept uo:Recursion)->" +
>        "(uo:Recursion uo:HasConcept uo:DiscreteStructures)";
> Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
> InfModel inf = ModelFactory.createInfModel(reasoner, model);
> inf.write(System.out,"TURTLE");
>> The example would come out to be something like |s                                |o                                |
>> | untitled-ontology-2:Recursion   | untitled-ontology-2:Exercise5-2 |
>> | untitled-ontology-2:Proposition | untitled-ontology-2:Exercise1-1 |
>> | untitled-ontology-2:Congruence  | untitled-ontology-2:Exercise4-2 |
>> | untitled-ontology-2:Sequence    | untitled-ontology-2:Exercise2-2 |
>> | untitled-ontology-2:Function    | untitled-ontology-2:Exercise2-2 |
>> | untitled-ontology-2:Predicate   | untitled-ontology-2:Exercise1-1 |
>> | untitled-ontology-2:Set         | untitled-ontology-2:Exercise2-1 |
>> | untitled-ontology-2:Induction   | untitled-ontology-2:Exercise5-1 |
>> Some snippet of the ont is <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Predicate">
>>      <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Concept"/>
>> </owl:NamedIndividual>
>>    <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise1-1">
>>      <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>          <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>>          <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Proposition"/>
>>   </owl:NamedIndividual>
>>
>>   <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise1-2">
>>      <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>      <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>> </owl:NamedIndividual>
>>
>> <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise2-1">
>>      <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>      <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Set"/>
>> </owl:NamedIndividual>
>> in TTL format if needed
>> http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Structures:Structures rdf:type owl:NamedIndividual ,:Course ;
>> :hasConcept :Congruence ,
>> :Function ,
>> :Induction ,
>> :Predicate ,
>> :Proposition ,
>> :Recursion ,
>> :Sequence ,
>> :Set ;
>> :hasTopic :BaseBExpansion ,
>> :TimeComplexity.
>>
>>
>>
>>   Any advice or help would be really appreciated needed any help tips
>>   anything really would be greatly appreciated!
>>
>> Thanks for everything,
>>
>>> On Thu, Jul 22, 2021 at 12:37 PM Brian Le <br...@gmail.com> wrote:
>>> Hello All,
>>> Apologies If I don't do this right but I am new to java and jena so please bear with me if I am doing this wrong completely. I just started to get back into coding after being away for some time. I've made an ontology but I was wondering If It is possible to use SPARQL to pull in everything and then use a rule to help filter the data and make it unique.  Any advice or help would be really appreciated
>>> public static String reasoningTest() {
>>>
>>>          Model model = ModelFactory.createDefaultModel();
>>>          String rules = "[rule1:(if possible?)]";
>>>          Instant start = Instant.now();
>>>          Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
>>>          InfModel inf = ModelFactory.createInfModel(reasoner, model);
>>>
>>>          String queryString = "select ?o (min(?s)) " +
>>>                  "where { ?s untitled-ontology-2:isRelatedToConcept ?o }" +
>>>                  " GROUP BY ?o";;
>>>
>>>          Query query = QueryFactory.create(queryString);
>>>
>>>          try (QueryExecution qexec = QueryExecutionFactory.create(query, inf)) {
>>>              ResultSet results = qexec.execSelect();
>>>              for ( ; results.hasNext() ; ) {
>>>                  QuerySolution soln = results.nextSolution();
>>>                  System.out.println(soln.toString());
>>>              }
>>>          }
>>>          Instant end = Instant.now();
>>>          System.out.println("Sparql query " + queryString + " evaluated in " + Duration.between(start, end));
>>> }
>>> The example would come out to be something like |s                                |o                                |
>>> | untitled-ontology-2:Recursion   | untitled-ontology-2:Exercise5-2 |
>>> | untitled-ontology-2:Proposition | untitled-ontology-2:Exercise1-1 |
>>> | untitled-ontology-2:Congruence  | untitled-ontology-2:Exercise4-2 |
>>> | untitled-ontology-2:Sequence    | untitled-ontology-2:Exercise2-2 |
>>> | untitled-ontology-2:Function    | untitled-ontology-2:Exercise2-2 |
>>> | untitled-ontology-2:Predicate   | untitled-ontology-2:Exercise1-1 |
>>> | untitled-ontology-2:Set         | untitled-ontology-2:Exercise2-1 |
>>> | untitled-ontology-2:Induction   | untitled-ontology-2:Exercise5-1 |
>>> Some snippet of the ont is <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Predicate">
>>>      <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Concept"/>
>>> </owl:NamedIndividual>
>>>    <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise1-1">
>>>      <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>>          <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>>>          <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Proposition"/>
>>>   </owl:NamedIndividual>
>>>
>>>   <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise1-2">
>>>      <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>>      <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>>> </owl:NamedIndividual>
>>>
>>> <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise2-1">
>>>      <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>>      <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Set"/>
>>> </owl:NamedIndividual>
>>> in TTL format if needed
>>> http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Structures:Structures rdf:type owl:NamedIndividual ,:Course ;
>>> :hasConcept :Congruence ,
>>> :Function ,
>>> :Induction ,
>>> :Predicate ,
>>> :Proposition ,
>>> :Recursion ,
>>> :Sequence ,
>>> :Set ;
>>> :hasTopic :BaseBExpansion ,
>>> :TimeComplexity.
>>>
>>>
>>>
>>>   Any advice or help would be really appreciated needed any help tips
>>>   anything really would be greatly appreciated!
>>>
>>> Thanks for everything,

Re: Jena Rule

Posted by Andy Seaborne <an...@apache.org>.
related question:

https://stackoverflow.com/questions/68492170/inferred-rule-with-jena

On 23/07/2021 00:05, Brian Le wrote:
> Please see below I corrected it I am just trying to write rules to have each concept come out with an exercise. The one I wrote just pulls everything any assistance would be greatly appreciated.
> 
> Thanks,
> Brian
> 
>> On Jul 22, 2021, at 3:13 PM, Brian Le <br...@gmail.com> wrote:
>>
>> 
>> Hello All,
>> Apologies If I don't do this right but I am new to java and jena so please bear with me if I am doing this wrong completely. I just started to get back into coding after being away for some time. I've made an ontology but I was wondering If It is possible to use SPARQL to pull in everything and then use a rule to help filter the data and make it unique.  Any advice or help would be really
> 
>   String prefixString=
>              "@prefix uo: <http://www.semanticweb.org/szhang10/ontologies/2021/5/untitled-ontology-2#>";
> 
> String inputFile = "C:\\Users\\brian\\IdeaProjects\\hello-semantic-web\\src\\model.rdf";
> Model model = ModelFactory.createDefaultModel();
> InputStream in = FileManager.get().open(inputFile);
> if (in == null) {
>     throw new IllegalArgumentException("Filenot found");
> }
> model.read(in, "");
> 
> String rules = prefixString + "[rule: (uo:DiscreteStructures uo:HasConcept uo:Recursion)->" +
>        "(uo:Recursion uo:HasConcept uo:DiscreteStructures)";
> Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
> InfModel inf = ModelFactory.createInfModel(reasoner, model);
> inf.write(System.out,"TURTLE");
>> The example would come out to be something like |s                                |o                                |
>> | untitled-ontology-2:Recursion   | untitled-ontology-2:Exercise5-2 |
>> | untitled-ontology-2:Proposition | untitled-ontology-2:Exercise1-1 |
>> | untitled-ontology-2:Congruence  | untitled-ontology-2:Exercise4-2 |
>> | untitled-ontology-2:Sequence    | untitled-ontology-2:Exercise2-2 |
>> | untitled-ontology-2:Function    | untitled-ontology-2:Exercise2-2 |
>> | untitled-ontology-2:Predicate   | untitled-ontology-2:Exercise1-1 |
>> | untitled-ontology-2:Set         | untitled-ontology-2:Exercise2-1 |
>> | untitled-ontology-2:Induction   | untitled-ontology-2:Exercise5-1 |
>> Some snippet of the ont is <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Predicate">
>>      <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Concept"/>
>> </owl:NamedIndividual>
>>    <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise1-1">
>>      <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>          <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>>          <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Proposition"/>
>>   </owl:NamedIndividual>
>>
>>   <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise1-2">
>>      <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>      <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>> </owl:NamedIndividual>
>>
>> <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise2-1">
>>      <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>      <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Set"/>
>> </owl:NamedIndividual>
>> in TTL format if needed
>> http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Structures:Structures rdf:type owl:NamedIndividual ,:Course ;
>> :hasConcept :Congruence ,
>> :Function ,
>> :Induction ,
>> :Predicate ,
>> :Proposition ,
>> :Recursion ,
>> :Sequence ,
>> :Set ;
>> :hasTopic :BaseBExpansion ,
>> :TimeComplexity.
>>
>>
>>
>>   Any advice or help would be really appreciated needed any help tips
>>   anything really would be greatly appreciated!
>>
>> Thanks for everything,
>>
>>> On Thu, Jul 22, 2021 at 12:37 PM Brian Le <br...@gmail.com> wrote:
>>> Hello All,
>>> Apologies If I don't do this right but I am new to java and jena so please bear with me if I am doing this wrong completely. I just started to get back into coding after being away for some time. I've made an ontology but I was wondering If It is possible to use SPARQL to pull in everything and then use a rule to help filter the data and make it unique.  Any advice or help would be really appreciated
>>> public static String reasoningTest() {
>>>
>>>          Model model = ModelFactory.createDefaultModel();
>>>          String rules = "[rule1:(if possible?)]";
>>>          Instant start = Instant.now();
>>>          Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
>>>          InfModel inf = ModelFactory.createInfModel(reasoner, model);
>>>
>>>          String queryString = "select ?o (min(?s)) " +
>>>                  "where { ?s untitled-ontology-2:isRelatedToConcept ?o }" +
>>>                  " GROUP BY ?o";;
>>>
>>>          Query query = QueryFactory.create(queryString);
>>>
>>>          try (QueryExecution qexec = QueryExecutionFactory.create(query, inf)) {
>>>              ResultSet results = qexec.execSelect();
>>>              for ( ; results.hasNext() ; ) {
>>>                  QuerySolution soln = results.nextSolution();
>>>                  System.out.println(soln.toString());
>>>              }
>>>          }
>>>          Instant end = Instant.now();
>>>          System.out.println("Sparql query " + queryString + " evaluated in " + Duration.between(start, end));
>>> }
>>> The example would come out to be something like |s                                |o                                |
>>> | untitled-ontology-2:Recursion   | untitled-ontology-2:Exercise5-2 |
>>> | untitled-ontology-2:Proposition | untitled-ontology-2:Exercise1-1 |
>>> | untitled-ontology-2:Congruence  | untitled-ontology-2:Exercise4-2 |
>>> | untitled-ontology-2:Sequence    | untitled-ontology-2:Exercise2-2 |
>>> | untitled-ontology-2:Function    | untitled-ontology-2:Exercise2-2 |
>>> | untitled-ontology-2:Predicate   | untitled-ontology-2:Exercise1-1 |
>>> | untitled-ontology-2:Set         | untitled-ontology-2:Exercise2-1 |
>>> | untitled-ontology-2:Induction   | untitled-ontology-2:Exercise5-1 |
>>> Some snippet of the ont is <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Predicate">
>>>      <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Concept"/>
>>> </owl:NamedIndividual>
>>>    <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise1-1">
>>>      <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>>          <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>>>          <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Proposition"/>
>>>   </owl:NamedIndividual>
>>>
>>>   <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise1-2">
>>>      <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>>      <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>>> </owl:NamedIndividual>
>>>
>>> <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise2-1">
>>>      <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>>      <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Set"/>
>>> </owl:NamedIndividual>
>>> in TTL format if needed
>>> http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Structures:Structures rdf:type owl:NamedIndividual ,:Course ;
>>> :hasConcept :Congruence ,
>>> :Function ,
>>> :Induction ,
>>> :Predicate ,
>>> :Proposition ,
>>> :Recursion ,
>>> :Sequence ,
>>> :Set ;
>>> :hasTopic :BaseBExpansion ,
>>> :TimeComplexity.
>>>
>>>
>>>
>>>   Any advice or help would be really appreciated needed any help tips
>>>   anything really would be greatly appreciated!
>>>
>>> Thanks for everything,
> 

Re: Jena Rule

Posted by Brian Le <br...@gmail.com>.
Please see below I corrected it I am just trying to write rules to have each concept come out with an exercise. The one I wrote just pulls everything any assistance would be greatly appreciated. 

Thanks,
Brian 

> On Jul 22, 2021, at 3:13 PM, Brian Le <br...@gmail.com> wrote:
> 
> 
> Hello All,
> Apologies If I don't do this right but I am new to java and jena so please bear with me if I am doing this wrong completely. I just started to get back into coding after being away for some time. I've made an ontology but I was wondering If It is possible to use SPARQL to pull in everything and then use a rule to help filter the data and make it unique.  Any advice or help would be really 

 String prefixString=
            "@prefix uo: <http://www.semanticweb.org/szhang10/ontologies/2021/5/untitled-ontology-2#>";

String inputFile = "C:\\Users\\brian\\IdeaProjects\\hello-semantic-web\\src\\model.rdf";
Model model = ModelFactory.createDefaultModel();
InputStream in = FileManager.get().open(inputFile);
if (in == null) {
   throw new IllegalArgumentException("Filenot found");
}
model.read(in, "");

String rules = prefixString + "[rule: (uo:DiscreteStructures uo:HasConcept uo:Recursion)->" +
      "(uo:Recursion uo:HasConcept uo:DiscreteStructures)";
Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
InfModel inf = ModelFactory.createInfModel(reasoner, model);
inf.write(System.out,"TURTLE");
> The example would come out to be something like |s                                |o                                |  
> | untitled-ontology-2:Recursion   | untitled-ontology-2:Exercise5-2 |
> | untitled-ontology-2:Proposition | untitled-ontology-2:Exercise1-1 |
> | untitled-ontology-2:Congruence  | untitled-ontology-2:Exercise4-2 |
> | untitled-ontology-2:Sequence    | untitled-ontology-2:Exercise2-2 |
> | untitled-ontology-2:Function    | untitled-ontology-2:Exercise2-2 |
> | untitled-ontology-2:Predicate   | untitled-ontology-2:Exercise1-1 |
> | untitled-ontology-2:Set         | untitled-ontology-2:Exercise2-1 |
> | untitled-ontology-2:Induction   | untitled-ontology-2:Exercise5-1 |
> Some snippet of the ont is <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Predicate">
>     <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Concept"/>
> </owl:NamedIndividual>
>   <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise1-1">
>     <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise"/>
>         <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>         <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Proposition"/>
>  </owl:NamedIndividual>
> 
>  <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise1-2">
>     <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>     <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
> </owl:NamedIndividual>
> 
> <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise2-1">
>     <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>     <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Set"/>
> </owl:NamedIndividual>
> in TTL format if needed
> http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Structures:Structures rdf:type owl:NamedIndividual ,:Course ;
> :hasConcept :Congruence ,
> :Function ,
> :Induction ,
> :Predicate ,
> :Proposition ,
> :Recursion ,
> :Sequence ,
> :Set ;
> :hasTopic :BaseBExpansion ,
> :TimeComplexity.
> 
> 
> 
>  Any advice or help would be really appreciated needed any help tips
>  anything really would be greatly appreciated!
> 
> Thanks for everything,
> 
>> On Thu, Jul 22, 2021 at 12:37 PM Brian Le <br...@gmail.com> wrote:
>> Hello All,
>> Apologies If I don't do this right but I am new to java and jena so please bear with me if I am doing this wrong completely. I just started to get back into coding after being away for some time. I've made an ontology but I was wondering If It is possible to use SPARQL to pull in everything and then use a rule to help filter the data and make it unique.  Any advice or help would be really appreciated
>> public static String reasoningTest() {
>> 
>>         Model model = ModelFactory.createDefaultModel();
>>         String rules = "[rule1:(if possible?)]";
>>         Instant start = Instant.now();
>>         Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
>>         InfModel inf = ModelFactory.createInfModel(reasoner, model);
>> 
>>         String queryString = "select ?o (min(?s)) " +
>>                 "where { ?s untitled-ontology-2:isRelatedToConcept ?o }" +
>>                 " GROUP BY ?o";;
>> 
>>         Query query = QueryFactory.create(queryString);
>> 
>>         try (QueryExecution qexec = QueryExecutionFactory.create(query, inf)) {
>>             ResultSet results = qexec.execSelect();
>>             for ( ; results.hasNext() ; ) {
>>                 QuerySolution soln = results.nextSolution();
>>                 System.out.println(soln.toString());
>>             }
>>         }
>>         Instant end = Instant.now();
>>         System.out.println("Sparql query " + queryString + " evaluated in " + Duration.between(start, end));
>> }
>> The example would come out to be something like |s                                |o                                |  
>> | untitled-ontology-2:Recursion   | untitled-ontology-2:Exercise5-2 |
>> | untitled-ontology-2:Proposition | untitled-ontology-2:Exercise1-1 |
>> | untitled-ontology-2:Congruence  | untitled-ontology-2:Exercise4-2 |
>> | untitled-ontology-2:Sequence    | untitled-ontology-2:Exercise2-2 |
>> | untitled-ontology-2:Function    | untitled-ontology-2:Exercise2-2 |
>> | untitled-ontology-2:Predicate   | untitled-ontology-2:Exercise1-1 |
>> | untitled-ontology-2:Set         | untitled-ontology-2:Exercise2-1 |
>> | untitled-ontology-2:Induction   | untitled-ontology-2:Exercise5-1 |
>> Some snippet of the ont is <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Predicate">
>>     <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Concept"/>
>> </owl:NamedIndividual>
>>   <owl:NamedIndividual rdf:about="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise1-1">
>>     <rdf:type rdf:resource="http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>         <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>>         <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Proposition"/>
>>  </owl:NamedIndividual>
>> 
>>  <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise1-2">
>>     <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>     <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Predicate"/>
>> </owl:NamedIndividual>
>> 
>> <owl:NamedIndividual rdf:about="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise2-1">
>>     <rdf:type rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Exercise"/>
>>     <untitled-ontology-2:isRelatedToConcept rdf:resource="http://www.semanticweb.org /ontologies/2021/5/untitled-ontology-2#Set"/>
>> </owl:NamedIndividual>
>> in TTL format if needed
>> http://www.semanticweb.org/ontologies/2021/5/untitled-ontology-2#Structures:Structures rdf:type owl:NamedIndividual ,:Course ;
>> :hasConcept :Congruence ,
>> :Function ,
>> :Induction ,
>> :Predicate ,
>> :Proposition ,
>> :Recursion ,
>> :Sequence ,
>> :Set ;
>> :hasTopic :BaseBExpansion ,
>> :TimeComplexity.
>> 
>> 
>> 
>>  Any advice or help would be really appreciated needed any help tips
>>  anything really would be greatly appreciated!
>> 
>> Thanks for everything,