dice-group / deer

RDF Dataset Enrichment Framework
https://dice-group.github.io/deer/
GNU Affero General Public License v3.0
10 stars 7 forks source link

[webUI] Easy Test Case results in cyclic configuration graph #29

Closed kvndrsslr closed 3 years ago

kvndrsslr commented 3 years ago

Problem

Attempting to create a very minimal test results in the webUI generating an erroneous cyclical graph.

Input hello.ttl

<urn:test:a> <urn:test:b> <urn:test:c> .
<urn:test:a> <urn:test:d> <urn:test:c> .

webUI configuration:

image image image image

webUI console output:

[Log] @prefix example: <urn:example:demo/>. (main.57e06ef4.chunk.js, line 1)
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix dbpedia: <http://dbpedia.org/resource/>.
@prefix deer: <https://w3id.org/deer/>.
@prefix fcage: <https://w3id.org/fcage/>.
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.

example:writer a deer:FileModelWriter;
    fcage:hasInput ([
  fcage:fromNode example:filter;
  fcage:fromPort "0"^^xsd:integer
]);
    deer:outputFile "out.ttl".
example:reader a deer:FileModelReader;
    deer:fromPath "hello.ttl".
example:filter a deer:FilterEnrichmentOperator;
    fcage:hasInput ([
  fcage:fromNode example:filter;
  fcage:fromPort "0"^^xsd:integer
] [
  fcage:fromNode example:reader;
  fcage:fromPort "1"^^xsd:integer
]);
    deer:selector [ deer:predicate <urn:test:d> ].

server console output

09:19:41.066 [Thread-1] [] INFO  org.eclipse.jetty.server.Server - Started @1104ms
09:25:05.085 [qtp1374216135-45] [] INFO  org.aksw.deer.server.Server - Uploaded file 'hello.ttl' to '/Users/kvn/Projects/Code/deer/.server-storage/b45f843b-3a69-4164-acaf-75ad68f416c5/hello.ttl'
09:25:05.086 [qtp1374216135-45] [] INFO  org.aksw.deer.server.Server - Uploaded file 'config.ttl' to '/Users/kvn/Projects/Code/deer/.server-storage/b45f843b-3a69-4164-acaf-75ad68f416c5/config.ttl'
09:25:05.086 [qtp1374216135-45] [b45f843b-3a69-4164-acaf-75ad68f416c5] INFO  org.aksw.deer.DeerController - Trying to read DEER configuration from file /Users/kvn/Projects/Code/deer/.server-storage/b45f843b-3a69-4164-acaf-75ad68f416c5/config.ttl...
09:25:05.090 [qtp1374216135-45] [b45f843b-3a69-4164-acaf-75ad68f416c5] INFO  org.aksw.deer.DeerController - Loading /Users/kvn/Projects/Code/deer/.server-storage/b45f843b-3a69-4164-acaf-75ad68f416c5/config.ttl is done in 3ms.
09:25:05.093 [qtp1374216135-45] [b45f843b-3a69-4164-acaf-75ad68f416c5] INFO  org.aksw.faraday_cage.engine.FaradayCageContext - Starting Faraday-Cage engine... runId: b45f843b-3a69-4164-acaf-75ad68f416c5
09:25:05.093 [qtp1374216135-45] [b45f843b-3a69-4164-acaf-75ad68f416c5] INFO  org.aksw.faraday_cage.engine.FaradayCageContext - Building execution model...
09:25:05.595 [qtp1374216135-45] [b45f843b-3a69-4164-acaf-75ad68f416c5] INFO  org.aksw.faraday_cage.engine.FaradayCageContext - Configuration shape validated using SHACL after 502ms.
09:25:05.618 [qtp1374216135-45] [b45f843b-3a69-4164-acaf-75ad68f416c5] ERROR org.aksw.deer.server.Server - Error in processing request//submit
org.aksw.faraday_cage.engine.InvalidExecutionGraphException: The given graph contains a cycle!
    at org.aksw.faraday_cage.engine.AdjacencyMatrix.getCanonicalIndexing(AdjacencyMatrix.java:110) ~[deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.aksw.faraday_cage.engine.AdjacencyMatrix.compileCanonicalForm(AdjacencyMatrix.java:56) ~[deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.aksw.faraday_cage.engine.ExecutionGraphGenerator.generate(ExecutionGraphGenerator.java:91) ~[deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.aksw.faraday_cage.engine.FaradayCageContext.generateExecutionGraphFromConfiguration(FaradayCageContext.java:162) ~[deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.aksw.faraday_cage.engine.FaradayCageContext.compile(FaradayCageContext.java:138) ~[deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.aksw.deer.DeerController.compileDeer(DeerController.java:204) ~[deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.aksw.deer.server.Server.handleSubmit(Server.java:147) ~[deer-cli-2.3.2-SNAPSHOT.jar:?]
    at spark.RouteImpl$1.handle(RouteImpl.java:72) ~[deer-cli-2.3.2-SNAPSHOT.jar:?]
    at spark.http.matching.Routes.execute(Routes.java:61) ~[deer-cli-2.3.2-SNAPSHOT.jar:?]
    at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1568) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.server.Server.handle(Server.java:503) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) [deer-cli-2.3.2-SNAPSHOT.jar:?]
    at java.lang.Thread.run(Thread.java:831) [?:?]
kvndrsslr commented 3 years ago

This seems to be fixed for now