use of org.apache.stanbol.rules.base.api.Rule in project stanbol by apache.
the class ClerezzaRuleStore method addRulesToRecipe.
/**
*
* @param recipeIRI
* the IRI of the recipe
* @param stanbolRule
* the rule in Rule syntax
*/
@Override
public Recipe addRulesToRecipe(Recipe recipe, String stanbolRule, String description) {
IRI recipeID = recipe.getRecipeID();
String namespace = recipeID.toString().substring(1, recipeID.toString().length() - 1) + "/";
RuleList ruleList = RuleParserImpl.parse(namespace, stanbolRule).getRuleList();
for (Rule rule : ruleList) {
recipe = addRuleToRecipe(recipe, rule, description);
}
return recipe;
}
use of org.apache.stanbol.rules.base.api.Rule in project stanbol by apache.
the class ClerezzaRuleStore method findRulesByDescription.
@Override
public RuleList findRulesByDescription(String term) {
String sparql = "SELECT ?recipe ?rule ?description " + "WHERE { " + "?recipe " + Symbols.hasRule + " ?rule . " + "?rule " + Symbols.description + " ?description . " + "FILTER (regex(?description, \"" + term + "\", \"i\"))" + "}";
List<IRI> recipeIDs = listRecipeIDs();
Graph[] tripleCollections = new Graph[recipeIDs.size()];
for (int i = 0; i < tripleCollections.length; i++) {
tripleCollections[i] = tcManager.getGraph(recipeIDs.get(i));
}
UnionGraph unionGraph = new UnionGraph(tripleCollections);
RuleList matchingRules = new RuleList();
try {
SelectQuery query = (SelectQuery) QueryParser.getInstance().parse(sparql);
ResultSet resultSet = tcManager.executeSparqlQuery(query, unionGraph);
while (resultSet.hasNext()) {
SolutionMapping solutionMapping = resultSet.next();
IRI recipeID = (IRI) solutionMapping.get("recipe");
IRI ruleID = (IRI) solutionMapping.get("rule");
Literal description = (Literal) solutionMapping.get("description");
try {
Recipe recipe = getRecipe(recipeID);
Rule rule = new RecipeRule(recipe, getRule(recipe, ruleID));
if (description != null) {
rule.setDescription(description.getLexicalForm());
}
matchingRules.add(rule);
} catch (NoSuchRecipeException e) {
// in this case go on in the iteration by fetching other matching recipes
} catch (RecipeConstructionException e) {
// in this case go on in the iteration by fetching other matching recipes
} catch (NoSuchRuleInRecipeException e) {
// in this case go on in the iteration by fetching other matching recipes
}
}
} catch (ParseException e) {
log.error("The sparql query contains errors: ", e);
}
return matchingRules;
}
use of org.apache.stanbol.rules.base.api.Rule in project stanbol by apache.
the class ClerezzaRuleStore method main.
public static void main(String[] args) {
InputStream inputStream;
try {
inputStream = new FileInputStream(new File("/Users/mac/Desktop/domain.rule"));
RuleList ruleList = RuleParserImpl.parse("http://www.prova.it/", inputStream).getRuleList();
for (Rule rule : ruleList) {
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
use of org.apache.stanbol.rules.base.api.Rule in project stanbol by apache.
the class RecipeImpl method toString.
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
String separator = System.getProperty("line.separator");
boolean firstLoop = true;
for (Rule rule : ruleList) {
if (!firstLoop) {
sb.append(" . ");
sb.append(separator);
} else {
firstLoop = false;
}
sb.append(rule.toString());
}
return sb.toString();
}
use of org.apache.stanbol.rules.base.api.Rule in project stanbol by apache.
the class RecipeImpl method getRule.
@Override
public Rule getRule(IRI ruleID) throws NoSuchRuleInRecipeException {
for (Rule rule : ruleList) {
if (rule.getRuleID().toString().equals(ruleID.toString())) {
return rule;
}
}
StringBuilder message = new StringBuilder();
message.append("No rule with ID ");
message.append(ruleID.toString());
message.append(" exists in recipe ");
message.append(this.getRecipeID());
throw new NoSuchRuleInRecipeException(message.toString());
}
Aggregations