Skip to content

Commit

Permalink
Merge pull request #34 from gessi-chatbots/datasets-hf
Browse files Browse the repository at this point in the history
Datasets hf
  • Loading branch information
mtiessler authored Jan 10, 2025
2 parents 0634f82 + 5ec77c5 commit 67fde78
Show file tree
Hide file tree
Showing 9 changed files with 70 additions and 38 deletions.
9 changes: 5 additions & 4 deletions src/main/java/upc/edu/gessi/repo/controller/ReviewsAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import upc.edu.gessi.repo.dto.Review.ReviewDTO;
import upc.edu.gessi.repo.dto.Review.ReviewFeatureDTO;
import upc.edu.gessi.repo.dto.Review.ReviewFeatureRequestDTO;
import upc.edu.gessi.repo.dto.Review.ReviewFeatureResponseDTO;

import java.util.List;

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

@ApiOperation("Fetch reviews based on features")
@GetMapping(value = "/by-features")
ResponseEntity<List<ReviewFeatureDTO>> getReviewsByFeatures(
@RequestBody List<String> features);
@PostMapping(value = "/by-features")
ResponseEntity<List<ReviewFeatureResponseDTO>> getReviewsByFeatures(
@RequestBody ReviewFeatureRequestDTO request);
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import upc.edu.gessi.repo.controller.ReviewsAPI;
import upc.edu.gessi.repo.dto.MobileApplication.MobileApplicationBasicDataDTO;
import upc.edu.gessi.repo.dto.Review.ReviewDTO;
import upc.edu.gessi.repo.dto.Review.ReviewFeatureDTO;
import upc.edu.gessi.repo.dto.Review.ReviewFeatureRequestDTO;
import upc.edu.gessi.repo.dto.Review.ReviewFeatureResponseDTO;
import upc.edu.gessi.repo.exception.*;
import upc.edu.gessi.repo.exception.Reviews.NoReviewsFoundException;
import upc.edu.gessi.repo.service.MobileApplicationService;
Expand Down Expand Up @@ -85,9 +85,11 @@ public ResponseEntity<byte[]> extractReviews(final Integer size, final String ma
}

@Override
public ResponseEntity<List<ReviewFeatureDTO>> getReviewsByFeatures(List<String> features) {
public ResponseEntity<List<ReviewFeatureResponseDTO>> getReviewsByFeatures(ReviewFeatureRequestDTO request) {
try {
return new ResponseEntity<>(((ReviewService) useService(ReviewService.class)).getByFeatures(features),
return new ResponseEntity<>(((ReviewService) useService(ReviewService.class))
.getByAppIdAndFeatures(request.getAppName(),
request.getFeatureList()),
HttpStatus.OK);
} catch (NoReviewsFoundException e) {
return new ResponseEntity<>(null, HttpStatus.NO_CONTENT);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package upc.edu.gessi.repo.dto.Review;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ReviewFeatureRequestDTO implements Serializable {

@JsonProperty("app_id")
private String appName;

@JsonProperty("features")
private List<String> featureList;
}
Original file line number Diff line number Diff line change
@@ -1,26 +1,20 @@
package upc.edu.gessi.repo.dto.Review;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import upc.edu.gessi.repo.dto.serializer.CustomDateDeserializer;
import upc.edu.gessi.repo.dto.serializer.CustomDateSerializer;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ReviewFeatureDTO implements Serializable {
public class ReviewFeatureResponseDTO implements Serializable {

@JsonProperty("reviewId")
private String id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import org.eclipse.rdf4j.query.TupleQueryResult;
import upc.edu.gessi.repo.dto.Review.ReviewDTO;
import upc.edu.gessi.repo.dto.Review.ReviewFeatureDTO;
import upc.edu.gessi.repo.dto.Review.ReviewFeatureResponseDTO;
import upc.edu.gessi.repo.dto.Review.SentenceDTO;
import upc.edu.gessi.repo.dto.graph.GraphReview;
import upc.edu.gessi.repo.exception.Reviews.NoReviewsFoundException;
Expand Down Expand Up @@ -34,5 +34,5 @@ List<ReviewDTO> getReviewsByAppNameAndIdentifierWithLimit(String appName,
String appIdentifier,
Integer limit);

List<ReviewFeatureDTO> findAllByFeatures(List<String> features) throws NoReviewsFoundException;
List<ReviewFeatureResponseDTO> findAllByAppIdAndFeatures(String appId, List<String> features) throws NoReviewsFoundException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -133,15 +133,17 @@ public List<ReviewDTO> findListed(final List<String> reviewIds) throws NoReviews


@Override
public List<ReviewFeatureDTO> findAllByFeatures(final List<String> features) throws NoReviewsFoundException {
TupleQueryResult reviewsResult = runSparqlQuery(reviewQueryBuilder.findReviewsByFeatures(features));
public List<ReviewFeatureResponseDTO> findAllByAppIdAndFeatures(final String appId,
final List<String> features) throws NoReviewsFoundException {
TupleQueryResult reviewsResult = runSparqlQuery(reviewQueryBuilder
.findReviewsByAppIdAndFeatures(appId, features));
if (!reviewsResult.hasNext()) {
throw new NoReviewsFoundException("No review was found");
}
List<ReviewFeatureDTO> reviewDTOs = new ArrayList<>();
List<ReviewFeatureResponseDTO> reviewDTOs = new ArrayList<>();
while (reviewsResult.hasNext()) {
ReviewFeatureDTO reviewFeatureDTO = getReviewFeatureDTO(reviewsResult.next());
reviewDTOs.add(reviewFeatureDTO);
ReviewFeatureResponseDTO reviewFeatureResponseDTO = getReviewFeatureDTO(reviewsResult.next());
reviewDTOs.add(reviewFeatureResponseDTO);
}
return reviewDTOs;
}
Expand Down Expand Up @@ -391,17 +393,17 @@ private void commitChanges(final List<Statement> statements) {
repoConnection.close();
}

private ReviewFeatureDTO getReviewFeatureDTO(final BindingSet bindings) {
ReviewFeatureDTO reviewFeatureDTO = new ReviewFeatureDTO();
private ReviewFeatureResponseDTO getReviewFeatureDTO(final BindingSet bindings) {
ReviewFeatureResponseDTO reviewFeatureResponseDTO = new ReviewFeatureResponseDTO();
if (existsShortReviewBinding(bindings)) {
if (bindings.getBinding("id") != null && bindings.getBinding("id").getValue() != null) {
String idValue = bindings.getBinding("id").getValue().stringValue();
reviewFeatureDTO.setId(idValue);
reviewFeatureResponseDTO.setId(idValue);
}

if (bindings.getBinding("text") != null && bindings.getBinding("text").getValue() != null) {
String textValue = bindings.getBinding("text").getValue().stringValue();
reviewFeatureDTO.setReviewText(textValue);
reviewFeatureResponseDTO.setReviewText(textValue);
}

}
Expand All @@ -415,10 +417,10 @@ private ReviewFeatureDTO getReviewFeatureDTO(final BindingSet bindings) {
String model = bindings.getBinding("model").getValue().stringValue();
featureDTO.setLanguageModel(new LanguageModelDTO(model));
}
reviewFeatureDTO.setFeatureDTOs(Collections.singletonList(featureDTO));
reviewFeatureResponseDTO.setFeatureDTOs(Collections.singletonList(featureDTO));


return reviewFeatureDTO;
return reviewFeatureResponseDTO;
}


Expand Down
4 changes: 2 additions & 2 deletions src/main/java/upc/edu/gessi/repo/service/ReviewService.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package upc.edu.gessi.repo.service;

import upc.edu.gessi.repo.dto.Review.ReviewDTO;
import upc.edu.gessi.repo.dto.Review.ReviewFeatureDTO;
import upc.edu.gessi.repo.dto.Review.ReviewFeatureResponseDTO;
import upc.edu.gessi.repo.exception.Reviews.NoReviewsFoundException;

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

List<ReviewDTO> getByFeature(String feature);

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

}
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,9 @@ public List<ReviewDTO> getByFeature(String feature) {
}

@Override
public List<ReviewFeatureDTO> getByFeatures(List<String> features) throws NoReviewsFoundException {
return ((ReviewRepository) useRepository(ReviewRepository.class)).findAllByFeatures(features);
public List<ReviewFeatureResponseDTO> getByAppIdAndFeatures(String appId,
List<String> features) throws NoReviewsFoundException {
return ((ReviewRepository) useRepository(ReviewRepository.class))
.findAllByAppIdAndFeatures(appId, features);
}
}
20 changes: 14 additions & 6 deletions src/main/java/upc/edu/gessi/repo/util/ReviewQueryBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -266,33 +266,41 @@ public String getCountQuery() {
return queryBuilder.toString();
}

public String findReviewsByFeatures(final List<String> features) {
public String findReviewsByAppIdAndFeatures(String appId, final List<String> features) {
StringBuilder queryBuilder = new StringBuilder();

queryBuilder.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n");
queryBuilder.append("PREFIX schema: <https://schema.org/>\n");
queryBuilder.append("SELECT ?id ?text ?feature ?model\n");
queryBuilder.append("WHERE {\n");
queryBuilder.append(" ?s a schema:Review ;\n");
queryBuilder.append(" schema:identifier ?id;\n");
queryBuilder.append(" schema:reviewBody ?text;\n");
queryBuilder.append(" schema:additionalProperty ?reviewSentence .\n");
queryBuilder.append(" ?reviewSentence a schema:Review;\n");
queryBuilder.append(" ?app a schema:MobileApplication ;\n");
queryBuilder.append(" schema:identifier \"" + appId + "\" ;\n");
queryBuilder.append(" schema:review ?review .\n");
queryBuilder.append(" ?review a schema:Review ;\n");
queryBuilder.append(" schema:identifier ?id;\n");
queryBuilder.append(" schema:reviewBody ?text;\n");
queryBuilder.append(" schema:additionalProperty ?reviewSentence .\n");
queryBuilder.append(" ?reviewSentence a schema:Review; \n");
queryBuilder.append(" schema:keywords ?keywords .\n");
queryBuilder.append(" ?keywords a schema:DefinedTerm ;\n");
queryBuilder.append(" schema:name ?feature ;\n");
queryBuilder.append(" schema:disambiguatingDescription ?languageModel .\n");
queryBuilder.append(" ?languageModel a schema:softwareApplication ;\n");
queryBuilder.append(" schema:identifier ?model .\n");
queryBuilder.append(" VALUES ?feature {\n");

for (String feature : features) {
queryBuilder.append(" \"" + feature + "\"\n");
}

queryBuilder.append(" }\n");
queryBuilder.append("}\n");

return queryBuilder.toString();
}





}

0 comments on commit 67fde78

Please sign in to comment.