Skip to content

Commit

Permalink
Specific query replacements working
Browse files Browse the repository at this point in the history
Must use ; as query separator as , is used for separating activities.
  • Loading branch information
TKasekamp committed Jun 29, 2015
1 parent c2283b0 commit 7757074
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 22 deletions.
26 changes: 11 additions & 15 deletions src/main/java/ee/tkasekamp/ltlminer/LTLMiner.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ee.tkasekamp.ltlminer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Properties;
import java.util.Vector;

Expand Down Expand Up @@ -40,35 +41,31 @@ public LTLMiner() {
logFilter = new LogFilter();
}

public ArrayList<RuleModel> mine(XLog log, ArrayList<String> ruleTemplates,
double minSupport) {
public ArrayList<RuleModel> mine(XLog log, ArrayList<String> ruleTemplates, double minSupport) {
this.minSupport = minSupport;
ArrayList<String> events = logFilter.getAllEvents(log);
ArrayList<String> rules = ruleCreator.generateRules(ruleTemplates,
events);
ArrayList<String> rules = ruleCreator.generateRules(ruleTemplates, events);

Object[] objList = checkRules(log, rules);
return filter(objList);
}

public ArrayList<RuleModel> mineWithEventTypes(XLog log,
ArrayList<String> ruleTemplates, double minSupport) {
public ArrayList<RuleModel> mineWithEventTypes(XLog log, ArrayList<String> ruleTemplates,
double minSupport) {
this.minSupport = minSupport;
ArrayList<String> events = logFilter.getAllEvents(log);
ArrayList<String> eventTypes = logFilter.getEventTypes(log);
ArrayList<String> rules = ruleCreator.generateRules(ruleTemplates,
events, eventTypes);
ArrayList<String> rules = ruleCreator.generateRules(ruleTemplates, events, eventTypes);

Object[] objList = checkRules(log, rules);
return filter(objList);
}

public ArrayList<RuleModel> mine(XLog log, Properties properties) {
this.minSupport = Double.parseDouble(properties
.getProperty("minSupport"));
this.minSupport = Double.parseDouble(properties.getProperty("minSupport"));
String queries = properties.getProperty("queries");
ArrayList<String> ruleTemplates = RuleTemplateCreator
.createTemplates(queries);
ArrayList<HashMap<String, String[]>> replacements = ReplacementFinder.find(queries);
ArrayList<String> ruleTemplates = RuleTemplateCreator.createTemplates(queries);

boolean considerEventTypes = Boolean.parseBoolean(properties
.getProperty("considerEventTypes"));
Expand All @@ -78,10 +75,9 @@ public ArrayList<RuleModel> mine(XLog log, Properties properties) {

if (considerEventTypes) {
ArrayList<String> eventTypes = logFilter.getEventTypes(log);
rules = ruleCreator
.generateRules(ruleTemplates, events, eventTypes);
rules = ruleCreator.generateRules(ruleTemplates, events, eventTypes, replacements);
} else {
rules = ruleCreator.generateRules(ruleTemplates, events);
rules = ruleCreator.generateRules(ruleTemplates, events, null, replacements);
}
Object[] objList = checkRules(log, rules);
return filter(objList);
Expand Down
8 changes: 6 additions & 2 deletions src/main/java/ee/tkasekamp/ltlminer/RuleTemplateCreator.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public class RuleTemplateCreator {
public static ArrayList<String> createTemplates(String queries) {
ArrayList<String> templates = new ArrayList<>();

String[] s = queries.split(",");
String[] s = queries.split(";");
for (String string : s) {
templates.add(bla(string));
}
Expand All @@ -20,7 +20,7 @@ public static ArrayList<String> createTemplates(String queries) {

private static String bla(String thing) {
thing = thing.replaceAll("\"", "");

thing = removeSpecificParameters(thing);
HashSet<String> a = getParameters(thing);

thing = doSomething(thing);
Expand Down Expand Up @@ -72,4 +72,8 @@ private static String doSomething(String query) {
m.appendTail(sb);
return sb.toString();
}

private static String removeSpecificParameters(String query) {
return query.replaceAll("\\{(.*?)\\}", "");
}
}
16 changes: 12 additions & 4 deletions src/test/java/ee/tkasekamp/ltlminer/RuleTemplateCreatorTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,30 @@

import java.util.ArrayList;

import org.junit.Before;
import org.junit.Test;

public class RuleTemplateCreatorTest {

@Test
public void test() {

String queries = "\"[]( (?x) -> <>(?y))\", \"<>(?x)\", \"[]( (?x) -> <>(?y)\" , \"[]( (?x) -> <>(?y)\"";
String queries = "\"[]( (?x) -> <>(?y))\"; \"<>(?x)\"; \"[]( (?x) -> <>(?y)\" ; \"[]( (?x) -> <>(?y)\"";

ArrayList<String> templates = RuleTemplateCreator
.createTemplates(queries);
ArrayList<String> templates = RuleTemplateCreator.createTemplates(queries);
// for (String string : templates) {
// System.out.println(string);
// }
assertEquals(4, templates.size());
}

@Test
public void testWithReplacements() {

String queries = "\"[]( (?x{A,B}) -> <>(?y))\"; \"<>(?x{C})\"; \"[]( (?x) -> <>(?y{sdasda})\" ; \"[]( (?x) -> <>(?y)\"";

ArrayList<String> templates = RuleTemplateCreator.createTemplates(queries);

assertEquals(4, templates.size());
}

}
14 changes: 13 additions & 1 deletion src/test/java/ee/tkasekamp/ltlminer/StarterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,25 @@ public void test2() throws Exception {
assertTrue(new File("rules.txt").exists());
}

@Test
public void test3() throws Exception {
Properties props = getProps();
String queries = "\"[](( (?x{A,B}) -> <>(?y{E,A})))\"; \"<>(?x{C,sad})\"";
props.setProperty("queries", queries);
props.setProperty("considerEventTypes", "false");
props.setProperty("minSupport", "0.0");
LTLMinerStarter starter = new LTLMinerStarter(props);
starter.mine();

}

private Properties getProps() {
Properties props = new Properties();
props.setProperty("logPath", "src/test/resources/exercise1.xes");
props.setProperty("considerEventTypes", "true");
props.setProperty("minSupport", "0.5");
props.setProperty("outputFormat", "console");
String queries = "\"[](( (?x) -> <>(?y)))\", \"<>(?x)\"";
String queries = "\"[](( (?x) -> <>(?y)))\"; \"<>(?x)\"";
props.setProperty("queries", queries);

return props;
Expand Down

0 comments on commit 7757074

Please sign in to comment.