diff --git a/src/main/java/com/kgshape/app/model/Constraints.java b/src/main/java/com/kgshape/app/model/Constraints.java index e4b497a9a1b7b17d2703832060bd88275c3ba283..5f0db0fa42b325a838019c257df2bff1bae19cc2 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 a71f8e957c83b83e0f33715e22e4c8f2a709a122..54d4b30dc81e3dfddd2e9b6df646af259d422e29 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 eca26534757c64ba1b7aaba5b85e9c2403587c6b..231a6bf78028a59a368c3bcb3d918d4acdf6c835 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 76b11dc9bf66ae066a731c288a6d0a48dedf5d79..af948c34c55f03bf3b57d1abb347fc3b27f92b79 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 dc24f7496c816bde8792d1151aa6ed32f7d53160..aa0a420537f712566dfc9c11860c68c85db53754 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 e4d40bb42eaefd851baa2f095b3137d1c2a5264f..13ad8387287a2720010a99d6a637570982c18ece 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 88084086242fb0f1c38f97a145bc1e29f842184f..30909b604ee5c7308df654e802c69adb21bc0b26 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; + } }