You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stanbol.apache.org by Stephen Bayliss <st...@acuityunlimited.net> on 2012/02/08 17:43:29 UTC

NPE on refactoring using Java API

Hi
 
I'm getting an NPE when refactoring using the Java API:
 
java.lang.NullPointerException
        at
org.apache.stanbol.rules.refactor.impl.RefactorerImpl.ontologyRefactoring(Re
factorerImpl.java:284)
 
This is something that used to work with an old svn revision, current rev is
1236695.
 
I'm creating a Recipe with some rules, following the code in the REST API as
an example.
 
My Bundle is getting the rule store with
 
@Reference
protected RuleStore m_ruleStore;
 
I'm adding rules to the store with:
 
AddRule adder = new AddRule(m_ruleStore);
adder.addRule(ruleIRI, rule, description);
 
(which is returning true)
 
I'm adding the recipe by creating a Vector<IRI> ruleIris and populating with
the rule IRIs, then
 
AddRecipe recipeAdder = new AddRecipe(m_ruleStore);
recipeAdder.addRecipe(recipeIri, ruleIris, "my rule");
 
(returns true)
 
and
m_ruleStore.saveOntology().
 
I can query for the recipe and list the rules fine using a
GetRecipe#getAllRecipes();
 
However, on refactoring with a Refactorer, got in my bundle using:
 
@Reference
Refactorer m_refactorer;
 
Then
 
m_refactorer.ontologyRefactoring(outputIri, inputIri, recipeIri)
 
But this is throwing the NPE above.
 
(I notice it is using
RuleStore#getRecipe  and then Recipe#getkReSRuleList  
And if I try to get the recipes using
m_ruleStore.listRecipes();
this returns Null, which is odd...)
 
So how do I get this working?  There seem to be "two APIs" in a sense, the
AddRule/GetRule etc stuff and the methods directly on the RuleStore.
 
Thanks
Steve

RE: NPE on refactoring using Java API

Posted by Stephen Bayliss <st...@acuityunlimited.net>.
Hello Andrea

Many thanks for this - I'm re-writing this bit of code to use the API as you
have suggested, I'll let you know how it goes.

Out of interest - what is the intended usage of eg AddRule?  Or is that not
part of the API and therefore should be ignored...

Thanks
Steve

> -----Original Message-----
> From: Andrea Giovanni Nuzzolese [mailto:nuzzoles@cs.unibo.it] 
> Sent: 09 February 2012 10:01
> To: Stephen Bayliss; stanbol-dev@incubator.apache.org
> Subject: Re: NPE on refactoring using Java API
> 
> 
> I Stephen,
> 
> do not directly use methods of the classes AddRule and 
> AddRecipe. Instead, use methods of the RuleStore. You can 
> create a recipe with the method addRecipe(IRI, String), where 
> the first argument is the recipe ID and the second is a 
> description of the recipe. 
> Then you can  add rules to the recipe created with the method 
> addRuleToRecipe(String, String), where the first argument is 
> the ID of the recipe to which you want to add the rule and 
> the second argument is the rule itself.
> 
> I hope it helps.
> 
> Best.
> Andrea
> 
> On Feb 8, 2012, at 5:43 PM, Stephen Bayliss wrote:
> 
> > Hi
> > 
> > I'm getting an NPE when refactoring using the Java API:
> > 
> > java.lang.NullPointerException
> >       at 
> > 
> org.apache.stanbol.rules.refactor.impl.RefactorerImpl.ontologyRefactor
> > ing(Re
> > factorerImpl.java:284)
> > 
> > This is something that used to work with an old svn 
> revision, current 
> > rev is 1236695.
> > 
> > I'm creating a Recipe with some rules, following the code 
> in the REST 
> > API as an example.
> > 
> > My Bundle is getting the rule store with
> > 
> > @Reference
> > protected RuleStore m_ruleStore;
> > 
> > I'm adding rules to the store with:
> > 
> > AddRule adder = new AddRule(m_ruleStore); 
> adder.addRule(ruleIRI, rule, 
> > description);
> > 
> > (which is returning true)
> > 
> > I'm adding the recipe by creating a Vector<IRI> ruleIris and 
> > populating with the rule IRIs, then
> > 
> > AddRecipe recipeAdder = new AddRecipe(m_ruleStore); 
> > recipeAdder.addRecipe(recipeIri, ruleIris, "my rule");
> > 
> > (returns true)
> > 
> > and
> > m_ruleStore.saveOntology().
> > 
> > I can query for the recipe and list the rules fine using a 
> > GetRecipe#getAllRecipes();
> > 
> > However, on refactoring with a Refactorer, got in my bundle using:
> > 
> > @Reference
> > Refactorer m_refactorer;
> > 
> > Then
> > 
> > m_refactorer.ontologyRefactoring(outputIri, inputIri, recipeIri)
> > 
> > But this is throwing the NPE above.
> > 
> > (I notice it is using
> > RuleStore#getRecipe  and then Recipe#getkReSRuleList
> > And if I try to get the recipes using
> > m_ruleStore.listRecipes();
> > this returns Null, which is odd...)
> > 
> > So how do I get this working?  There seem to be "two APIs" 
> in a sense, 
> > the AddRule/GetRule etc stuff and the methods directly on the 
> > RuleStore.
> > 
> > Thanks
> > Steve
> 
> 
> 


Re: NPE on refactoring using Java API

Posted by Andrea Giovanni Nuzzolese <nu...@cs.unibo.it>.
I Stephen,

do not directly use methods of the classes AddRule and AddRecipe.
Instead, use methods of the RuleStore. You can create a recipe with the method addRecipe(IRI, String), where the first argument is the recipe ID and the second is a description of the recipe. 
Then you can  add rules to the recipe created with the method addRuleToRecipe(String, String), where the first argument is the ID of the recipe to which you want to add the rule and the second argument is the rule itself.

I hope it helps.

Best.
Andrea

On Feb 8, 2012, at 5:43 PM, Stephen Bayliss wrote:

> Hi
> 
> I'm getting an NPE when refactoring using the Java API:
> 
> java.lang.NullPointerException
>       at
> org.apache.stanbol.rules.refactor.impl.RefactorerImpl.ontologyRefactoring(Re
> factorerImpl.java:284)
> 
> This is something that used to work with an old svn revision, current rev is
> 1236695.
> 
> I'm creating a Recipe with some rules, following the code in the REST API as
> an example.
> 
> My Bundle is getting the rule store with
> 
> @Reference
> protected RuleStore m_ruleStore;
> 
> I'm adding rules to the store with:
> 
> AddRule adder = new AddRule(m_ruleStore);
> adder.addRule(ruleIRI, rule, description);
> 
> (which is returning true)
> 
> I'm adding the recipe by creating a Vector<IRI> ruleIris and populating with
> the rule IRIs, then
> 
> AddRecipe recipeAdder = new AddRecipe(m_ruleStore);
> recipeAdder.addRecipe(recipeIri, ruleIris, "my rule");
> 
> (returns true)
> 
> and
> m_ruleStore.saveOntology().
> 
> I can query for the recipe and list the rules fine using a
> GetRecipe#getAllRecipes();
> 
> However, on refactoring with a Refactorer, got in my bundle using:
> 
> @Reference
> Refactorer m_refactorer;
> 
> Then
> 
> m_refactorer.ontologyRefactoring(outputIri, inputIri, recipeIri)
> 
> But this is throwing the NPE above.
> 
> (I notice it is using
> RuleStore#getRecipe  and then Recipe#getkReSRuleList  
> And if I try to get the recipes using
> m_ruleStore.listRecipes();
> this returns Null, which is odd...)
> 
> So how do I get this working?  There seem to be "two APIs" in a sense, the
> AddRule/GetRule etc stuff and the methods directly on the RuleStore.
> 
> Thanks
> Steve