Skip to content

Commit 67fde78

Browse files
authored
Merge pull request #34 from gessi-chatbots/datasets-hf
Datasets hf
2 parents 0634f82 + 5ec77c5 commit 67fde78

File tree

9 files changed

+70
-38
lines changed

9 files changed

+70
-38
lines changed

src/main/java/upc/edu/gessi/repo/controller/ReviewsAPI.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
import org.springframework.http.ResponseEntity;
66
import org.springframework.web.bind.annotation.*;
77
import upc.edu.gessi.repo.dto.Review.ReviewDTO;
8-
import upc.edu.gessi.repo.dto.Review.ReviewFeatureDTO;
8+
import upc.edu.gessi.repo.dto.Review.ReviewFeatureRequestDTO;
9+
import upc.edu.gessi.repo.dto.Review.ReviewFeatureResponseDTO;
910

1011
import java.util.List;
1112

@@ -20,7 +21,7 @@ ResponseEntity<byte[]> extractReviews(
2021
@RequestParam(name = "market-segment", defaultValue = "Communication", required = false) String marketSegment);
2122

2223
@ApiOperation("Fetch reviews based on features")
23-
@GetMapping(value = "/by-features")
24-
ResponseEntity<List<ReviewFeatureDTO>> getReviewsByFeatures(
25-
@RequestBody List<String> features);
24+
@PostMapping(value = "/by-features")
25+
ResponseEntity<List<ReviewFeatureResponseDTO>> getReviewsByFeatures(
26+
@RequestBody ReviewFeatureRequestDTO request);
2627
}

src/main/java/upc/edu/gessi/repo/controller/impl/ReviewsController.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
import org.springframework.http.ResponseEntity;
1111
import org.springframework.web.bind.annotation.*;
1212
import upc.edu.gessi.repo.controller.ReviewsAPI;
13-
import upc.edu.gessi.repo.dto.MobileApplication.MobileApplicationBasicDataDTO;
1413
import upc.edu.gessi.repo.dto.Review.ReviewDTO;
15-
import upc.edu.gessi.repo.dto.Review.ReviewFeatureDTO;
14+
import upc.edu.gessi.repo.dto.Review.ReviewFeatureRequestDTO;
15+
import upc.edu.gessi.repo.dto.Review.ReviewFeatureResponseDTO;
1616
import upc.edu.gessi.repo.exception.*;
1717
import upc.edu.gessi.repo.exception.Reviews.NoReviewsFoundException;
1818
import upc.edu.gessi.repo.service.MobileApplicationService;
@@ -85,9 +85,11 @@ public ResponseEntity<byte[]> extractReviews(final Integer size, final String ma
8585
}
8686

8787
@Override
88-
public ResponseEntity<List<ReviewFeatureDTO>> getReviewsByFeatures(List<String> features) {
88+
public ResponseEntity<List<ReviewFeatureResponseDTO>> getReviewsByFeatures(ReviewFeatureRequestDTO request) {
8989
try {
90-
return new ResponseEntity<>(((ReviewService) useService(ReviewService.class)).getByFeatures(features),
90+
return new ResponseEntity<>(((ReviewService) useService(ReviewService.class))
91+
.getByAppIdAndFeatures(request.getAppName(),
92+
request.getFeatureList()),
9193
HttpStatus.OK);
9294
} catch (NoReviewsFoundException e) {
9395
return new ResponseEntity<>(null, HttpStatus.NO_CONTENT);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package upc.edu.gessi.repo.dto.Review;
2+
3+
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
import java.io.Serializable;
10+
import java.util.List;
11+
12+
@Data
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
@JsonInclude(JsonInclude.Include.NON_NULL)
16+
public class ReviewFeatureRequestDTO implements Serializable {
17+
18+
@JsonProperty("app_id")
19+
private String appName;
20+
21+
@JsonProperty("features")
22+
private List<String> featureList;
23+
}

src/main/java/upc/edu/gessi/repo/dto/Review/ReviewFeatureDTO.java renamed to src/main/java/upc/edu/gessi/repo/dto/Review/ReviewFeatureResponseDTO.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,20 @@
11
package upc.edu.gessi.repo.dto.Review;
22

33

4-
import com.fasterxml.jackson.annotation.JsonFormat;
54
import com.fasterxml.jackson.annotation.JsonInclude;
65
import com.fasterxml.jackson.annotation.JsonProperty;
7-
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
8-
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
96
import lombok.AllArgsConstructor;
107
import lombok.Data;
118
import lombok.NoArgsConstructor;
12-
import upc.edu.gessi.repo.dto.serializer.CustomDateDeserializer;
13-
import upc.edu.gessi.repo.dto.serializer.CustomDateSerializer;
149

1510
import java.io.Serializable;
16-
import java.util.Date;
1711
import java.util.List;
1812

1913
@Data
2014
@NoArgsConstructor
2115
@AllArgsConstructor
2216
@JsonInclude(JsonInclude.Include.NON_NULL)
23-
public class ReviewFeatureDTO implements Serializable {
17+
public class ReviewFeatureResponseDTO implements Serializable {
2418

2519
@JsonProperty("reviewId")
2620
private String id;

src/main/java/upc/edu/gessi/repo/repository/ReviewRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import org.eclipse.rdf4j.query.TupleQueryResult;
66
import upc.edu.gessi.repo.dto.Review.ReviewDTO;
7-
import upc.edu.gessi.repo.dto.Review.ReviewFeatureDTO;
7+
import upc.edu.gessi.repo.dto.Review.ReviewFeatureResponseDTO;
88
import upc.edu.gessi.repo.dto.Review.SentenceDTO;
99
import upc.edu.gessi.repo.dto.graph.GraphReview;
1010
import upc.edu.gessi.repo.exception.Reviews.NoReviewsFoundException;
@@ -34,5 +34,5 @@ List<ReviewDTO> getReviewsByAppNameAndIdentifierWithLimit(String appName,
3434
String appIdentifier,
3535
Integer limit);
3636

37-
List<ReviewFeatureDTO> findAllByFeatures(List<String> features) throws NoReviewsFoundException;
37+
List<ReviewFeatureResponseDTO> findAllByAppIdAndFeatures(String appId, List<String> features) throws NoReviewsFoundException;
3838
}

src/main/java/upc/edu/gessi/repo/repository/impl/ReviewRepositoryImpl.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,17 @@ public List<ReviewDTO> findListed(final List<String> reviewIds) throws NoReviews
133133

134134

135135
@Override
136-
public List<ReviewFeatureDTO> findAllByFeatures(final List<String> features) throws NoReviewsFoundException {
137-
TupleQueryResult reviewsResult = runSparqlQuery(reviewQueryBuilder.findReviewsByFeatures(features));
136+
public List<ReviewFeatureResponseDTO> findAllByAppIdAndFeatures(final String appId,
137+
final List<String> features) throws NoReviewsFoundException {
138+
TupleQueryResult reviewsResult = runSparqlQuery(reviewQueryBuilder
139+
.findReviewsByAppIdAndFeatures(appId, features));
138140
if (!reviewsResult.hasNext()) {
139141
throw new NoReviewsFoundException("No review was found");
140142
}
141-
List<ReviewFeatureDTO> reviewDTOs = new ArrayList<>();
143+
List<ReviewFeatureResponseDTO> reviewDTOs = new ArrayList<>();
142144
while (reviewsResult.hasNext()) {
143-
ReviewFeatureDTO reviewFeatureDTO = getReviewFeatureDTO(reviewsResult.next());
144-
reviewDTOs.add(reviewFeatureDTO);
145+
ReviewFeatureResponseDTO reviewFeatureResponseDTO = getReviewFeatureDTO(reviewsResult.next());
146+
reviewDTOs.add(reviewFeatureResponseDTO);
145147
}
146148
return reviewDTOs;
147149
}
@@ -391,17 +393,17 @@ private void commitChanges(final List<Statement> statements) {
391393
repoConnection.close();
392394
}
393395

394-
private ReviewFeatureDTO getReviewFeatureDTO(final BindingSet bindings) {
395-
ReviewFeatureDTO reviewFeatureDTO = new ReviewFeatureDTO();
396+
private ReviewFeatureResponseDTO getReviewFeatureDTO(final BindingSet bindings) {
397+
ReviewFeatureResponseDTO reviewFeatureResponseDTO = new ReviewFeatureResponseDTO();
396398
if (existsShortReviewBinding(bindings)) {
397399
if (bindings.getBinding("id") != null && bindings.getBinding("id").getValue() != null) {
398400
String idValue = bindings.getBinding("id").getValue().stringValue();
399-
reviewFeatureDTO.setId(idValue);
401+
reviewFeatureResponseDTO.setId(idValue);
400402
}
401403

402404
if (bindings.getBinding("text") != null && bindings.getBinding("text").getValue() != null) {
403405
String textValue = bindings.getBinding("text").getValue().stringValue();
404-
reviewFeatureDTO.setReviewText(textValue);
406+
reviewFeatureResponseDTO.setReviewText(textValue);
405407
}
406408

407409
}
@@ -415,10 +417,10 @@ private ReviewFeatureDTO getReviewFeatureDTO(final BindingSet bindings) {
415417
String model = bindings.getBinding("model").getValue().stringValue();
416418
featureDTO.setLanguageModel(new LanguageModelDTO(model));
417419
}
418-
reviewFeatureDTO.setFeatureDTOs(Collections.singletonList(featureDTO));
420+
reviewFeatureResponseDTO.setFeatureDTOs(Collections.singletonList(featureDTO));
419421

420422

421-
return reviewFeatureDTO;
423+
return reviewFeatureResponseDTO;
422424
}
423425

424426

src/main/java/upc/edu/gessi/repo/service/ReviewService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package upc.edu.gessi.repo.service;
22

33
import upc.edu.gessi.repo.dto.Review.ReviewDTO;
4-
import upc.edu.gessi.repo.dto.Review.ReviewFeatureDTO;
4+
import upc.edu.gessi.repo.dto.Review.ReviewFeatureResponseDTO;
55
import upc.edu.gessi.repo.exception.Reviews.NoReviewsFoundException;
66

77
import java.util.List;
@@ -15,6 +15,6 @@ public interface ReviewService extends CrudService<ReviewDTO> {
1515

1616
List<ReviewDTO> getByFeature(String feature);
1717

18-
List<ReviewFeatureDTO> getByFeatures(List<String> features) throws NoReviewsFoundException;
18+
List<ReviewFeatureResponseDTO> getByAppIdAndFeatures(String appId, List<String> features) throws NoReviewsFoundException;
1919

2020
}

src/main/java/upc/edu/gessi/repo/service/impl/ReviewServiceImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,9 @@ public List<ReviewDTO> getByFeature(String feature) {
117117
}
118118

119119
@Override
120-
public List<ReviewFeatureDTO> getByFeatures(List<String> features) throws NoReviewsFoundException {
121-
return ((ReviewRepository) useRepository(ReviewRepository.class)).findAllByFeatures(features);
120+
public List<ReviewFeatureResponseDTO> getByAppIdAndFeatures(String appId,
121+
List<String> features) throws NoReviewsFoundException {
122+
return ((ReviewRepository) useRepository(ReviewRepository.class))
123+
.findAllByAppIdAndFeatures(appId, features);
122124
}
123125
}

src/main/java/upc/edu/gessi/repo/util/ReviewQueryBuilder.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -266,33 +266,41 @@ public String getCountQuery() {
266266
return queryBuilder.toString();
267267
}
268268

269-
public String findReviewsByFeatures(final List<String> features) {
269+
public String findReviewsByAppIdAndFeatures(String appId, final List<String> features) {
270270
StringBuilder queryBuilder = new StringBuilder();
271+
271272
queryBuilder.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n");
272273
queryBuilder.append("PREFIX schema: <https://schema.org/>\n");
273274
queryBuilder.append("SELECT ?id ?text ?feature ?model\n");
274275
queryBuilder.append("WHERE {\n");
275-
queryBuilder.append(" ?s a schema:Review ;\n");
276-
queryBuilder.append(" schema:identifier ?id;\n");
277-
queryBuilder.append(" schema:reviewBody ?text;\n");
278-
queryBuilder.append(" schema:additionalProperty ?reviewSentence .\n");
279-
queryBuilder.append(" ?reviewSentence a schema:Review;\n");
276+
queryBuilder.append(" ?app a schema:MobileApplication ;\n");
277+
queryBuilder.append(" schema:identifier \"" + appId + "\" ;\n");
278+
queryBuilder.append(" schema:review ?review .\n");
279+
queryBuilder.append(" ?review a schema:Review ;\n");
280+
queryBuilder.append(" schema:identifier ?id;\n");
281+
queryBuilder.append(" schema:reviewBody ?text;\n");
282+
queryBuilder.append(" schema:additionalProperty ?reviewSentence .\n");
283+
queryBuilder.append(" ?reviewSentence a schema:Review; \n");
280284
queryBuilder.append(" schema:keywords ?keywords .\n");
281285
queryBuilder.append(" ?keywords a schema:DefinedTerm ;\n");
282286
queryBuilder.append(" schema:name ?feature ;\n");
283287
queryBuilder.append(" schema:disambiguatingDescription ?languageModel .\n");
284288
queryBuilder.append(" ?languageModel a schema:softwareApplication ;\n");
285289
queryBuilder.append(" schema:identifier ?model .\n");
286290
queryBuilder.append(" VALUES ?feature {\n");
291+
287292
for (String feature : features) {
288293
queryBuilder.append(" \"" + feature + "\"\n");
289294
}
295+
290296
queryBuilder.append(" }\n");
291297
queryBuilder.append("}\n");
298+
292299
return queryBuilder.toString();
293300
}
294301

295302

296303

297304

305+
298306
}

0 commit comments

Comments
 (0)