From 62692a05fc9ff860088211a9100f89999b7a202f Mon Sep 17 00:00:00 2001 From: JamieHoch <jamie.hochrainer@student.uibk.ac.at> Date: Mon, 6 Dec 2021 21:46:34 +0100 Subject: [PATCH] model and rest endpoint (Post and Get) for Constraints, Graph and Result --- .../com/kgshape/app/model/Constraints.java | 80 ++++++++++++++++++- .../java/com/kgshape/app/model/Graph.java | 17 +++- .../java/com/kgshape/app/model/Result.java | 75 ++++++++++++++++- .../kgshape/app/model/demo/ComplexObject.java | 2 +- .../kgshape/app/rest/ConstraintsEndpoint.java | 40 +++++++++- .../com/kgshape/app/rest/GraphEndpoint.java | 32 +++++++- .../com/kgshape/app/rest/ResultEndpoint.java | 30 ++++++- 7 files changed, 268 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/kgshape/app/model/Constraints.java b/src/main/java/com/kgshape/app/model/Constraints.java index e4b497a..5f0db0f 100644 --- a/src/main/java/com/kgshape/app/model/Constraints.java +++ b/src/main/java/com/kgshape/app/model/Constraints.java @@ -1,5 +1,83 @@ -package com.kgshape.app.model.demo; +package com.kgshape.app.model; +import jakarta.xml.bind.annotation.XmlRootElement; + +import java.util.List; + +@XmlRootElement public class Constraints { + private long id; + + //we get the constraints by query of the Graph + private Graph graph; + + // e.g. Person + private String typeName; + + // e.g ["anna","carol"] + private List<String> nodes; + + // e.g. [hasAge,hasName] + private List<String> properties; + + @Override + public String toString() { + return "Constraints{" + + "id=" + id + + ", graph=" + graph + + ", typeName='" + typeName + '\'' + + ", nodes=" + nodes + + ", properties=" + properties + + '}'; + } + + public Constraints(){} + + public Constraints(long id, Graph graph, String typeName, List<String> nodes, List<String> properties) { + this.id = id; + this.graph = graph; + this.typeName = typeName; + this.nodes = nodes; + this.properties = properties; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public Graph getGraph() { + return graph; + } + + public void setGraph(Graph graph) { + this.graph = graph; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public List<String> getNodes() { + return nodes; + } + + public void setNodes(List<String> nodes) { + this.nodes = nodes; + } + + public List<String> getProperties() { + return properties; + } + public void setProperties(List<String> properties) { + this.properties = properties; + } } diff --git a/src/main/java/com/kgshape/app/model/Graph.java b/src/main/java/com/kgshape/app/model/Graph.java index a71f8e9..54d4b30 100644 --- a/src/main/java/com/kgshape/app/model/Graph.java +++ b/src/main/java/com/kgshape/app/model/Graph.java @@ -1,4 +1,4 @@ -package com.kgshape.app.model.demo; +package com.kgshape.app.model; import jakarta.xml.bind.annotation.XmlRootElement; @@ -8,14 +8,19 @@ public class Graph { private long id; // e.g. RiverBodyOfWater or Airport or Person private String rdfType; + private String graphFileLocation; + private String query; + + public Graph(){} - public Graph(long id, String rdfType, String graphFileLocation) { + public Graph(long id, String rdfType, String graphFileLocation, String query) { this.id = id; this.rdfType = rdfType; this.graphFileLocation = graphFileLocation; + this.query = query; } @Override @@ -50,4 +55,12 @@ public class Graph { public void setGraphFileLocation(String graphFileLocation) { this.graphFileLocation = graphFileLocation; } + + public String getQuery() { + return query; + } + + public void setQuery(String query) { + this.query = query; + } } diff --git a/src/main/java/com/kgshape/app/model/Result.java b/src/main/java/com/kgshape/app/model/Result.java index eca2653..231a6bf 100644 --- a/src/main/java/com/kgshape/app/model/Result.java +++ b/src/main/java/com/kgshape/app/model/Result.java @@ -1,2 +1,75 @@ -package com.kgshape.app.model;public class Result { +package com.kgshape.app.model; + +import jakarta.xml.bind.annotation.XmlRootElement; + +import java.util.List; + +@XmlRootElement +public class Result { + + private long id; + + // output of KG verificator + private boolean verified; + + // e.g. age + private List<String> missingProperties; + + // unmodified contraints + private Constraints constraints; + + // contstaints that the user has modified + private Constraints modifiedConstraints; + + public Result(){} + + public Result(long id, boolean verified, List<String> missingProperties, Constraints constraints, Constraints modifiedConstraints) { + this.id = id; + this.verified = verified; + this.missingProperties = missingProperties; + this.constraints = constraints; + this.modifiedConstraints = modifiedConstraints; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public boolean isVerified() { + return verified; + } + + public void setVerified(boolean verified) { + this.verified = verified; + } + + public List<String> getMissingProperties() { + return missingProperties; + } + + public void setMissingProperties(List<String> missingProperties) { + this.missingProperties = missingProperties; + } + + public Constraints getConstraints() { + return constraints; + } + + public void setConstraints(Constraints constraints) { + this.constraints = constraints; + } + + public Constraints getModifiedConstraints() { + return modifiedConstraints; + } + + public void setModifiedConstraints(Constraints modifiedConstraints) { + this.modifiedConstraints = modifiedConstraints; + } + + } diff --git a/src/main/java/com/kgshape/app/model/demo/ComplexObject.java b/src/main/java/com/kgshape/app/model/demo/ComplexObject.java index 76b11dc..af948c3 100644 --- a/src/main/java/com/kgshape/app/model/demo/ComplexObject.java +++ b/src/main/java/com/kgshape/app/model/demo/ComplexObject.java @@ -1,4 +1,4 @@ -package com.kgshape.app.model; +package com.kgshape.app.model.demo; import jakarta.xml.bind.annotation.XmlRootElement; diff --git a/src/main/java/com/kgshape/app/rest/ConstraintsEndpoint.java b/src/main/java/com/kgshape/app/rest/ConstraintsEndpoint.java index dc24f74..aa0a420 100644 --- a/src/main/java/com/kgshape/app/rest/ConstraintsEndpoint.java +++ b/src/main/java/com/kgshape/app/rest/ConstraintsEndpoint.java @@ -1,2 +1,40 @@ -package com.kgshape.app.rest;public class ConstraintsEndpoint { +package com.kgshape.app.rest; + +import com.kgshape.app.model.Constraints; +import com.kgshape.app.model.Graph; +import jakarta.enterprise.context.RequestScoped; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; + +import java.util.ArrayList; +import java.util.List; + +@RequestScoped +@Path("/constraints") +public class ConstraintsEndpoint { + + @GET + @Produces(MediaType.APPLICATION_JSON) + public Constraints getConstraints() { + List<String> nodes = new ArrayList<>(); + List<String> properties = new ArrayList<>(); + nodes.add("carol"); + nodes.add("anna"); + properties.add("hasAge"); + return new Constraints(1,new Graph(), "Person",nodes,properties); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + public Constraints createConstraintsbyGraph(Graph graph){ + Constraints constraints = new Constraints(); + constraints.setGraph(graph); + // todo use kgShaper on the graph to get constraints + //constraints.setTypeName("..."); + //constraints.setNodes(...); + //constraints.setProperties(...); + return constraints; + } + + } diff --git a/src/main/java/com/kgshape/app/rest/GraphEndpoint.java b/src/main/java/com/kgshape/app/rest/GraphEndpoint.java index e4d40bb..13ad838 100644 --- a/src/main/java/com/kgshape/app/rest/GraphEndpoint.java +++ b/src/main/java/com/kgshape/app/rest/GraphEndpoint.java @@ -1,2 +1,32 @@ -package com.kgshape.app.rest;public class GraphEndpoint { +package com.kgshape.app.rest; + +import jakarta.enterprise.context.RequestScoped; +import jakarta.ws.rs.*; +import com.kgshape.app.model.Graph; +import jakarta.ws.rs.core.MediaType; + +@RequestScoped +@Path("/graph") +public class GraphEndpoint { + + @GET + @Produces(MediaType.APPLICATION_JSON) + public Graph getGraph() { + return new Graph(1, "myRiverBody","hihi","myquery"); + } + + // post request that takes in a rdfType (e.g. RiverBodyOfWater) and fetches that data type + // from sparql for local use. + // Returns result of sparql query (i.e. graph) + @POST + @Consumes(MediaType.APPLICATION_JSON) + public Graph createGraph(String rdfType){ + Graph graphToCreate = new Graph(); + graphToCreate.setRdfType(rdfType); + graphToCreate.setQuery("queryHardCoded"); + graphToCreate.setGraphFileLocation("somethingHardCoded"); + // todo run query on rdf Type, this will do some stuff + // return Response.accepted().build(); + return graphToCreate; + } } diff --git a/src/main/java/com/kgshape/app/rest/ResultEndpoint.java b/src/main/java/com/kgshape/app/rest/ResultEndpoint.java index 8808408..30909b6 100644 --- a/src/main/java/com/kgshape/app/rest/ResultEndpoint.java +++ b/src/main/java/com/kgshape/app/rest/ResultEndpoint.java @@ -1,2 +1,30 @@ -package com.kgshape.app.rest;public class ResultEndpoint { +package com.kgshape.app.rest; + +import com.kgshape.app.model.Constraints; +import com.kgshape.app.model.Graph; +import com.kgshape.app.model.Result; +import jakarta.enterprise.context.RequestScoped; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; + +@RequestScoped +@Path("/result") +public class ResultEndpoint { + + @GET + @Produces(MediaType.APPLICATION_JSON) + public Result getResult() { + return new Result(); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + public Result createResult(Constraints constraints){ + Result result = new Result(); + result.setConstraints(constraints); + // todo use kgVerificator on constraints to get result + //result.setVerified(false); + //result.setMissingProperties(...); + return result; + } } -- GitLab