Skip to content

Commit f6a7a05

Browse files
committed
Added RiveScript for Mappings, Added Test Cases, Admin User List shown based on most recent interaction by users
1 parent da74857 commit f6a7a05

File tree

17 files changed

+202
-10
lines changed

17 files changed

+202
-10
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
### Development Only Configurations
2424
spring.thymeleaf.cache = false
2525
spring.devtools.livereload.enabled = true
26+
logging.level.com.github.messenger4j = DEBUG
2627

2728
## Deployment
2829
mvn clean install

app/src/js/components/admin/UserList.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@ class UserList extends React.Component {
2828
</thead>
2929
<tbody>
3030
{this.props.userList.map((row, index) => {
31+
var date = new Date(parseInt(row.last_timestamp));
32+
var date_string = date.toDateString() + " " + date.toTimeString().split(" ")[0];
3133
return (
3234
<tr key={index} className="info">
3335
<td className="vertical-align-middle">{row.userId}</td>
3436
<td className="text-center vertical-align-middle">{row.count}</td>
35-
<td className="text-center vertical-align-middle">{row.last_timestamp}</td>
37+
<td className="text-center vertical-align-middle">{date_string}</td>
3638
<td className="text-center vertical-align-middle">{row.platform}</td>
3739
<td><a href="#" className="btn btn-primary" onClick={(event) => this.loadMessages(event, row.userId)}>View</a></td>
3840
</tr>

src/main/java/chatbot/lib/Constants.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ public interface Constants {
1212
String DBPEDIA_SERVICE = "dbpedia";
1313
String DBPEDIA_RESOURCE_SERVICE = "dbpedia-resource";
1414
String DBPEDIA_SPARQL_SERVICE = "dbpedia-sparql";
15+
String DBPEDIA_LIVE_SERVICE = "dbpedia-live";
16+
17+
String DBPEDIA_MAPPINGS_SERVICE = "dbpedia-mappings";
18+
String DBPEDIA_MAPPINGS_SERVER_SERVICE = "dbpedia-mappings-server";
1519

1620
String DBPEDIA_LOOKUP_SERVICE = "dbpedia-lookup";
1721
String DBPEDIA_LOOKUP_KEYWORD_SEARCH_SERVICE = "dbpedia-lookup-keyword-service";
@@ -21,6 +25,11 @@ public interface Constants {
2125
String DBPEDIA = "DBpedia";
2226
String DBPEDIA_RESOURCE = "DBpedia Resource";
2327
String DBPEDIA_SPARQL = "DBpedia SPARQL";
28+
String DBPEDIA_LIVE = "DBpedia Live";
29+
30+
String DBPEDIA_MAPPINGS = "DBpedia Mappings";
31+
String DBPEDIA_MAPPINGS_SERVER = "DBpedia Mappings Server";
32+
2433
String DBPEDIA_LOOKUP = "DBpedia Lookup";
2534
String DBPEDIA_LOOKUP_KEYWORD_SEARCH = "DBpedia Lookup Keyword Search";
2635
String DBPEDIA_LOOKUP_PREFIX_SEARCH = "DBpedia Lookup Prefix Search";
@@ -33,6 +42,9 @@ public interface Constants {
3342
put(DBPEDIA_LOOKUP_SERVICE, new String[]{DBPEDIA_LOOKUP, "http://lookup.dbpedia.org/api/search/KeywordSearch?QueryClass=place&QueryString=berlin", "dbpedia-discussion@lists.sourceforge.net", "https://lists.sourceforge.net/lists/listinfo/dbpedia-discussion"});
3443
put(DBPEDIA_LOOKUP_KEYWORD_SEARCH_SERVICE, new String[]{DBPEDIA_LOOKUP_KEYWORD_SEARCH, "http://lookup.dbpedia.org/api/search/KeywordSearch?QueryClass=place&QueryString=berlin", "dbpedia-discussion@lists.sourceforge.net", "https://lists.sourceforge.net/lists/listinfo/dbpedia-discussion"});
3544
put(DBPEDIA_LOOKUP_PREFIX_SEARCH_SERVICE, new String[]{DBPEDIA_LOOKUP_PREFIX_SEARCH, "http://lookup.dbpedia.org/api/search/PrefixSearch?QueryClass=&MaxHits=5&QueryString=berl", "dbpedia-discussion@lists.sourceforge.net", "https://lists.sourceforge.net/lists/listinfo/dbpedia-discussion"});
45+
put(DBPEDIA_LIVE_SERVICE, new String[]{DBPEDIA_LIVE, "http://live.dbpedia.org", "dbpedia-discussion@lists.sourceforge.net", "https://lists.sourceforge.net/lists/listinfo/dbpedia-discussion"});
46+
put(DBPEDIA_MAPPINGS_SERVICE, new String[]{DBPEDIA_MAPPINGS, "http://mappings.dbpedia.org", "dbpedia-discussion@lists.sourceforge.net", "https://lists.sourceforge.net/lists/listinfo/dbpedia-discussion"});
47+
put(DBPEDIA_MAPPINGS_SERVER_SERVICE, new String[]{DBPEDIA_MAPPINGS_SERVER, "http://mappings.dbpedia.org/server/mappings/en/extractionSamples/Mapping_en%3AAward-stub", "dbpedia-discussion@lists.sourceforge.net", "https://lists.sourceforge.net/lists/listinfo/dbpedia-discussion"});
3648
}};
37-
49+
// http://mappings.dbpedia.org/server/mappings/en/extractionSamples/Mapping_en%3AAward-stub
3850
}

src/main/java/chatbot/lib/handlers/TemplateHandler.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44
import chatbot.lib.Constants;
55
import chatbot.lib.Utility;
66
import chatbot.lib.handlers.dbpedia.StatusCheckHandler;
7-
import chatbot.lib.handlers.templates.dbpedia.DatasetTemplateHandler;
8-
import chatbot.lib.handlers.templates.dbpedia.DBpediaTemplateHandler;
7+
import chatbot.lib.handlers.templates.dbpedia.*;
98
import chatbot.lib.handlers.templates.OptionsTemplateHandler;
10-
import chatbot.lib.handlers.templates.dbpedia.LookupTemplateHandler;
119
import chatbot.lib.handlers.templates.entity.MovieTemplateHandler;
1210
import chatbot.lib.handlers.templates.entity.TVTemplateHandler;
1311
import chatbot.lib.request.TemplateType;
@@ -76,6 +74,17 @@ public ResponseGenerator handleTemplateMessage() {
7674
responseGenerator = new LookupTemplateHandler(request, payload, helper).handleTemplateMessage();
7775
break;
7876

77+
case TemplateType.DBPEDIA_MAPPINGS:
78+
case TemplateType.DBPEDIA_MAPPINGS_TOOL:
79+
case TemplateType.DBPEDIA_MAPPINGS_LOGIN:
80+
responseGenerator = new MappingsTemplateHandler(request, payload, helper).handleTemplateMessage();
81+
break;
82+
83+
case TemplateType.DBPEDIA_EXTRACTION_FRAMEWORK:
84+
responseGenerator = new ExtractionTemplateHandler(request, payload, helper).handleTemplateMessage();
85+
break;
86+
87+
7988
// Further Options Scenario
8089
case TemplateType.LOAD_MORE:
8190
case TemplateType.LOAD_SIMILAR:
@@ -147,6 +156,14 @@ public ResponseData getFAQTemplate(String serviceName) {
147156
responseData.addSmartReply(new ResponseData.SmartReply("Tell me about Lookup Parameters.", TemplateType.DBPEDIA_LOOKUP_PARAMETERS));
148157
responseData.addSmartReply(new ResponseData.SmartReply("What is Lookup PrefixSearch?", TemplateType.DBPEDIA_LOOKUP_PREFIX_SEARCH));
149158
break;
159+
case Constants.DBPEDIA_LIVE_SERVICE:
160+
// responseData.addSmartReply(new ResponseData.SmartReply("What is DBpedia Live?", TemplateType));
161+
break;
162+
case Constants.DBPEDIA_MAPPINGS_SERVICE:
163+
responseData.addSmartReply(new ResponseData.SmartReply("What is Mappings Wiki?", TemplateType.DBPEDIA_MAPPINGS));
164+
responseData.addSmartReply(new ResponseData.SmartReply("Where can I find the Mapping Tool?", TemplateType.DBPEDIA_MAPPINGS_TOOL));
165+
responseData.addSmartReply(new ResponseData.SmartReply("Is Mappings Wiki Down?", TemplateType.CHECK_SERVICE + Utility.STRING_SEPARATOR + serviceName));
166+
break;
150167
}
151168
return responseData;
152169
}

src/main/java/chatbot/lib/handlers/dbpedia/StatusCheckHandler.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ public StatusCheckHandler(Request request, String service, Application.Helper he
4040
this.service.add(Constants.SERVICES.get(Constants.DBPEDIA_LOOKUP_KEYWORD_SEARCH_SERVICE));
4141
this.service.add(Constants.SERVICES.get(Constants.DBPEDIA_LOOKUP_PREFIX_SEARCH_SERVICE));
4242
break;
43+
case Constants.DBPEDIA_MAPPINGS_SERVICE:
44+
this.service.add(Constants.SERVICES.get(Constants.DBPEDIA_MAPPINGS_SERVICE));
45+
this.service.add(Constants.SERVICES.get(Constants.DBPEDIA_MAPPINGS_SERVER_SERVICE));
46+
break;
4347
default:
4448
this.service.add(Constants.SERVICES.get(service));
4549
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package chatbot.lib.handlers.templates.dbpedia;
2+
3+
import chatbot.Application;
4+
import chatbot.lib.handlers.TemplateHandler;
5+
import chatbot.lib.request.Request;
6+
import chatbot.lib.request.TemplateType;
7+
import chatbot.lib.response.ResponseData;
8+
import chatbot.lib.response.ResponseGenerator;
9+
import chatbot.lib.response.ResponseType;
10+
11+
import java.util.ArrayList;
12+
13+
/**
14+
* Created by ramgathreya on 7/12/17.
15+
*/
16+
public class ExtractionTemplateHandler extends TemplateHandler{
17+
public ExtractionTemplateHandler(Request request, String[] payload, Application.Helper helper) {
18+
super(request, payload, helper);
19+
}
20+
21+
public ResponseGenerator handleTemplateMessage() {
22+
ResponseGenerator responseGenerator = new ResponseGenerator();
23+
switch (payload[0]) {
24+
case TemplateType.DBPEDIA_EXTRACTION_FRAMEWORK:
25+
responseGenerator.addTextResponse(new ResponseData("DBpedia Mappings Wiki helps to enhance the information in DBpedia. The DBpedia Extraction Framework uses the mappings defined through the DBpedia Mappings tool to homogenize information extracted from Wikipedia before generating structured information in RDF."));
26+
responseGenerator.addButtonTextResponse(new ResponseData("Here are some useful links related to the Mappings Wiki:", new ArrayList<ResponseData.Button>(){{
27+
add(new ResponseData.Button("Wiki", ResponseType.BUTTON_LINK, "http://mappings.dbpedia.org/index.php/Main_Page"));
28+
add(new ResponseData.Button("Mappings Tool", ResponseType.BUTTON_LINK, "http://mappings.dbpedia.org/mappingtool/web/"));
29+
add(new ResponseData.Button("Extraction Framework", ResponseType.BUTTON_PARAM, "http://mappings.dbpedia.org/mappingtool/web/"));
30+
}}));
31+
32+
break;
33+
}
34+
return responseGenerator;
35+
}
36+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package chatbot.lib.handlers.templates.dbpedia;
2+
3+
import chatbot.Application;
4+
import chatbot.lib.handlers.TemplateHandler;
5+
import chatbot.lib.request.Request;
6+
import chatbot.lib.request.TemplateType;
7+
import chatbot.lib.response.ResponseData;
8+
import chatbot.lib.response.ResponseGenerator;
9+
import chatbot.lib.response.ResponseType;
10+
11+
import java.util.ArrayList;
12+
13+
/**
14+
* Created by ramgathreya on 7/12/17.
15+
*/
16+
public class MappingsTemplateHandler extends TemplateHandler{
17+
public MappingsTemplateHandler(Request request, String[] payload, Application.Helper helper) {
18+
super(request, payload, helper);
19+
}
20+
21+
public ResponseGenerator handleTemplateMessage() {
22+
ResponseGenerator responseGenerator = new ResponseGenerator();
23+
switch (payload[0]) {
24+
case TemplateType.DBPEDIA_MAPPINGS:
25+
responseGenerator.addTextResponse(new ResponseData("DBpedia Mappings Wiki helps to enhance the information in DBpedia. The DBpedia Extraction Framework uses the mappings defined through the DBpedia Mappings tool to homogenize information extracted from Wikipedia before generating structured information in RDF."));
26+
responseGenerator.addButtonTextResponse(new ResponseData("Here are some useful links related to the Mappings Wiki:", new ArrayList<ResponseData.Button>(){{
27+
add(new ResponseData.Button("Wiki", ResponseType.BUTTON_LINK, "http://mappings.dbpedia.org/index.php/Main_Page"));
28+
add(new ResponseData.Button("Mapping Tool", ResponseType.BUTTON_LINK, "http://mappings.dbpedia.org/mappingtool/web/"));
29+
add(new ResponseData.Button("Mapping Guide", ResponseType.BUTTON_LINK, "http://mappings.dbpedia.org/index.php/Mapping_Guide"));
30+
}}));
31+
break;
32+
case TemplateType.DBPEDIA_MAPPINGS_TOOL:
33+
responseGenerator.addButtonTextResponse(new ResponseData("You can find the Mapping Tool here:", new ArrayList<ResponseData.Button>(){{
34+
add(new ResponseData.Button("Mapping Tool", ResponseType.BUTTON_LINK, "http://mappings.dbpedia.org/mappingtool/web/"));
35+
add(new ResponseData.Button("How to Edit", ResponseType.BUTTON_LINK, "http://mappings.dbpedia.org/index.php/How_to_edit_DBpedia_Mappings"));
36+
add(new ResponseData.Button("Mapping Guide", ResponseType.BUTTON_LINK, "http://mappings.dbpedia.org/index.php/Mapping_Guide"));
37+
}}));
38+
break;
39+
case TemplateType.DBPEDIA_MAPPINGS_LOGIN:
40+
responseGenerator.addButtonTextResponse(new ResponseData("Dimitris Kontokostas is the best person to ask for access. Contact him via the following link:", new ArrayList<ResponseData.Button>(){{
41+
add(new ResponseData.Button("Contact Dimitris", ResponseType.BUTTON_LINK, "http://aksw.org/DimitrisKontokostas.html"));
42+
}}));
43+
break;
44+
}
45+
return responseGenerator;
46+
}
47+
}

src/main/java/chatbot/lib/request/TemplateType.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ public interface TemplateType {
2121
String DBPEDIA_LOOKUP_KEYWORD_SEARCH = "dbpedia-lookup-keyword-search";
2222
String DBPEDIA_LOOKUP_PARAMETERS = "dbpedia-lookup-parameters";
2323

24+
String DBPEDIA_MAPPINGS = "dbpedia-mappings";
25+
String DBPEDIA_MAPPINGS_TOOL = "dbpedia-mappings-tool";
26+
String DBPEDIA_MAPPINGS_LOGIN = "dbpedia-mappings-login";
27+
28+
String DBPEDIA_EXTRACTION_FRAMEWORK = "dbpedia-extraction-framework";
29+
2430
String TV_CAST = "tv-cast";
2531
String TV_CREW = "tv-crew";
2632
String TV_SIMILAR = "tv-similar";

src/main/java/chatbot/platforms/web/controllers/AdminController.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,15 @@ public String actionAdminGet() {
4242
public @ResponseBody List<UserList> actionUserList(@RequestParam String page) {
4343
try {
4444
return helper.getChatDB().getViewRequestBuilder("chats", "getUserList")
45-
.newRequest(Key.Type.STRING, UserList.class)
45+
.newRequest(Key.Type.COMPLEX, UserList.class)
46+
.startKey(Key.complex("z", "\ufff0"))
47+
.endKey(Key.complex(""))
4648
.limit(MAX_SIZE)
4749
.skip((Integer.parseInt(page) - 1) * MAX_SIZE)
4850
.reduce(true)
51+
.descending(true)
4952
.group(true)
53+
.groupLevel(1)
5054
.build().getResponse().getValues();
5155
}
5256
catch (Exception e) {

src/main/resources/rivescript/begin.rive

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,7 @@
4040
! sub langauge = language
4141
! sub natural language processing = nlp
4242
! sub language processing = nlp
43-
! sub datset = dataset
43+
! sub datset = dataset
44+
! sub mappings.dbpedia = dbpedia mappings
45+
! sub mapping.dbpedia = dbpedia mappings
46+
! sub mapping = mappings

src/main/resources/rivescript/dbpedia-extraction.rive

Whitespace-only changes.

src/main/resources/rivescript/dbpedia-live.rive

Whitespace-only changes.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
+ dbpedia mappings [wiki]
3+
- {"type": "template", "name": "dbpedia-mappings"}
4+
5+
+ [*] (is|about) [dbpedia] mappings [wiki]
6+
@ dbpedia mappings
7+
8+
+ [*] mappings tool [*]
9+
- {"type": "template", "name": "dbpedia-mappings-tool"}
10+
11+
+ [*] tool [*] mappings [*]
12+
@ mappings tool
13+
14+
+ [*] how [*] login [*] mappings [*]
15+
- {"type": "template", "name": "dbpedia-mappings-login"}
16+
17+
+ * mappings *
18+
- {"type": "template", "name": "dbpedia-fallback|dbpedia-mappings"}

src/main/resources/rivescript/dbpedia-status-check.rive

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
+ problem with dbpedia [*]
1515
@ dbpedia status
1616

17+
+ status of [*] dbpedia [*]
18+
@ dbpedia status
19+
1720
// DBpedia SPARQL is online or available
1821
+ [dbpedia] sparql status
1922
- {"type": "status_check", "name": "dbpedia-sparql"}
@@ -30,6 +33,9 @@
3033
+ problem with [dbpedia] sparql [*]
3134
@ dbpedia sparql status
3235

36+
+ status of [*] dbpedia [*]
37+
@ dbpedia sparql status
38+
3339
// DBpedia Lookup
3440
+ [dbpedia] lookup status
3541
- {"type": "status_check", "name": "dbpedia-lookup"}
@@ -45,3 +51,25 @@
4551

4652
+ problem with [dbpedia] lookup [*]
4753
@ dbpedia lookup status
54+
55+
+ status of [*] lookup [*]
56+
@ dbpedia lookup status
57+
58+
// DBpedia Mappings
59+
+ [dbpedia] mappings [wiki] status
60+
- {"type": "status_check", "name": "dbpedia-mappings"}
61+
62+
+ [*] mappings [wiki] [is] (@statusup|@statusdown) [*]
63+
@ dbpedia mappings status
64+
65+
+ [*] mappings [*] (@statusup|@statusdown)
66+
@ dbpedia mappings status
67+
68+
+ [*] mappings [wiki] [not] running [*]
69+
@ dbpedia mappings status
70+
71+
+ problem with [dbpedia] mappings [*]
72+
@ dbpedia mappings status
73+
74+
+ status of [*] mappings [*]
75+
@ dbpedia mappings status

src/main/resources/rivescript/dbpedia.rive

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,3 @@
3434
// Fallback
3535
+ * dbpedia *
3636
- {"type": "template", "name": "dbpedia-fallback|dbpedia"}
37-
38-
+ dbpedia *
39-
- {"type": "template", "name": "dbpedia-fallback|dbpedia"}

src/main/resources/rivescript/help.rive

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@
99

1010
+ [*] how (can you|you can) help [me]
1111
@ help
12+
13+
+ [*] good morning
14+
@ help

src/test/java/rivescript/dbpedia/TestDBpediaStatusCheck.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,18 @@ public void testDBpediaSparqlServiceCheck() {
2020
String[] expectedAnswer = new String[]{"{\"type\": \"status_check\", \"name\": \"dbpedia-sparql\"}"};
2121
checkAnswers(testCases, expectedAnswer, true);
2222
}
23+
24+
@Test
25+
public void testDBpediaLookupServiceCheck() {
26+
String[] testCases = new String[]{"dbpedia lookup is running", "is dbpedia lookup running", "is lookup down"};
27+
String[] expectedAnswer = new String[]{"{\"type\": \"status_check\", \"name\": \"dbpedia-lookup\"}"};
28+
checkAnswers(testCases, expectedAnswer, true);
29+
}
30+
31+
@Test
32+
public void testDBpediaMappingsServiceCheck() {
33+
String[] testCases = new String[]{"dbpedia mappings is running", "is dbpedia mapping running", "is mapping down"};
34+
String[] expectedAnswer = new String[]{"{\"type\": \"status_check\", \"name\": \"dbpedia-mappings\"}"};
35+
checkAnswers(testCases, expectedAnswer, true);
36+
}
2337
}

0 commit comments

Comments
 (0)