jena icon indicating copy to clipboard operation
jena copied to clipboard

Editing graph in Fuseki UI removes the graph

Open AtesComp opened this issue 4 months ago • 6 comments

Version

5.6.0

What happened?

After saving an edited graph, the graph appears to save ("Graph updated for dataset "COLT"") , but r-selecting the graph from the list of current graphs fails. Using "List current graphs" no longer shows the graph.

Using the "add data" tab, the graph can be reloaded and viewed in the edit tab again. But, editing and saving repeats the issue.

Change the line: <http://www.w3.org/2006/vcard/ns#honorific-prefix> "Dr."@en to: <http://www.w3.org/2006/vcard/ns#honorific-prefix> "Man"@en is a simple example that shows the problem.

Tha sample data file, OLT_People_Test.trig:

PREFIX colt:  <https://colt.data/>
PREFIX conf:  <https://olt.data/configuration/>
PREFIX dc:    <http://purl.org/dc/terms/>
PREFIX olt:   <https://olt.data/>
PREFIX org:   <https://olt.data/organization/>
PREFIX owl:   <http://www.w3.org/2002/07/owl#>
PREFIX ppl:   <https://olt.data/people/>
PREFIX rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:  <http://www.w3.org/2000/01/rdf-schema#>
PREFIX stat:  <https://olt.data/status/>
PREFIX tags:  <https://olt.data/tags/>
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
PREFIX xml:   <http://www.w3.org/XML/1998/namespace>
PREFIX xsd:   <http://www.w3.org/2001/XMLSchema#>

olt:people_test {
    <uuid:8d333fa8-f299-4727-be6f-19cfefbdf521>
            rdf:type             ppl:Employee;
            vcard:fn             "CTO Keven L. Ates"@en;
            vcard:hasEmail       [ rdf:type          vcard:Work;
                                   vcard:hasValue    "mailto:[email protected]";
                                   tags:onDomainUse  <uuid:748fa57b-5dd3-46a8-9d57-8ac51656d6df>
                                 ];
            vcard:hasEmail       [ rdf:type          vcard:Work;
                                   vcard:hasValue    "mailto:[email protected]";
                                   tags:onDomainUse  <uuid:78408f2b-0229-4ae4-aa0e-0dc91ed33bf1>
                                 ];
            vcard:hasName        [ vcard:additional-name   "L."@en;
                                   vcard:family-name       "Ates"@en;
                                   vcard:given-name        "Keven"@en;
                                   vcard:honorific-prefix  "Dr."@en
                                 ];
            vcard:hasRole        <uuid:0b30dfd9-b1c0-44ec-a4bf-d1d1a772d35c>;
            vcard:hasTitle       <uuid:0dfabfc9-c471-440f-849b-0eae321b4019>;
            ppl:hasUserSettings  [ rdf:type          ppl:UserSettings;
                                   ppl:userSettings  "{\"favorites\":[\"uuid:b0d18e5e-31e0-4e42-83bd-2c8f5baa627d\",\"uuid:9841ba7a-629f-476f-887f-f10f7529c687\"],\"theme\":\"dark\"}";
                                   olt:settingsApp   <uuid:7cef700b-b12d-59f7-b456-f48ea2603227>
                                 ] .
}

The log just after the save is shown.

Relevant output and stacktrace

[2025-10-29 15:45:23.905] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107] PUT http://localhost:3030/COLT/data?graph=https:%2F%2Folt.data%2Fpeople_test
[2025-10-29 15:45:23.905] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Host:                localhost:3030
[2025-10-29 15:45:23.905] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Connection:          keep-alive
[2025-10-29 15:45:23.905] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Content-Length:      0
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => sec-ch-ua-platform:  "Linux"
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => User-Agent:          Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Accept:              application/json, text/javascript, */*; q=0.01
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => sec-ch-ua:           "Google Chrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141"
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Content-Type:        text/turtle; charset=UTF-8
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => sec-ch-ua-mobile:    ?0
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Origin:              http://localhost:3030
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Sec-Fetch-Site:      same-origin
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Sec-Fetch-Mode:      cors
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Sec-Fetch-Dest:      empty
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Referer:             http://localhost:3030/
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Accept-Encoding:     gzip, deflate, br, zstd
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Accept-Language:     en-US,en;q=0.9,ja;q=0.8
[2025-10-29 15:45:23.906] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   => Cookie:              refresh_token_cookie=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWJqZWN0Ijp7ImlkIjoiY2F0ZXRlc3RAZXhhbXBsZS5jb20iLCJ1c2VySVJJIjoidXVpZDo1YWIxOTQyMi0xNjE1LTQzYzEtOTRlZi05MDZkYTU5ODllZjkiLCJ1c2VyTmV3IjpmYWxzZSwidXNlck5hbWUiOiJjYXRldGVzdEBleGFtcGxlLmNvbSIsIm5hbWUiOnsiY29tcG9zaXRlIjoiQ2F0ZSBVc2VyLCBTci4iLCJwcmVmaXgiOm51bGwsInRpdGxlIjpudWxsLCJmaXJzdCI6IkNhdGUiLCJtaWRkbGUiOm51bGwsImxhc3QiOiJVc2VyIiwic3VmZml4IjoiU3IuIn0sIm9yZyI6bnVsbCwidHlwZSI6bnVsbCwiZW1haWxzIjpbImNhdGV0ZXN0QGV4YW1wbGUuY29tIl0sImdyb3VwcyI6WyJjb2x0X3BwZF9hZG1pbnMiLCJjb2x0X2FkbWlucyJdfSwidHlwZSI6InJlZnJlc2giLCJleHAiOjE3NjE4NDkxOTcsImlhdCI6MTc2MTc2Mjc5NywianRpIjoiZGFlM2NlZTctOGIwNS00OTZkLThkZTEtZWEyOTM2MmQxYzk0In0.wGkwcbi6D8ebUr25qB_iVygo6B1p416jhFcZ-OlBUjE
[2025-10-29 15:45:23.908] INFO [qtp388489274-22] [org.apache.jena.fuseki.system.DataUploader.incomingData(DataUploader.java:94)] - [107] Body: Content-Length=0, Content-Type=text/turtle, Charset=UTF-8 => Turtle : Count=0 Triples=0 Quads=0
[2025-10-29 15:45:23.909] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   <= Content-Type:        application/json
[2025-10-29 15:45:23.909] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107]   <= Content-Length:      61
[2025-10-29 15:45:23.909] INFO [qtp388489274-22] [org.apache.jena.atlas.logging.FmtLog.info(FmtLog.java:85)] - [107] 200 OK (2 ms)

Are you interested in making a pull request?

Maybe

AtesComp avatar Oct 29 '25 19:10 AtesComp

It is noteworthy that on my application-side, deletes and inserts perform as expected via SPARQL.

AtesComp avatar Oct 29 '25 19:10 AtesComp

What's the configuration of the COLT dataset?

This is odd:

[107] PUT http://localhost:3030/COLT/data?graph=https:%2F%2Folt.data%2Fpeople_test
[107]   => Host:                localhost:3030
[107]   => Connection:          keep-alive
[107]   => Content-Length:      0
. . .

A PUT of zero bytes empties the graph.

Have you done a complete reload (Control-F5)? I seem to recall that there was a change in this area and maybe the browser cache still has javascript from a previous version.

afs avatar Oct 30 '25 08:10 afs

Ping @AtesComp

A PUT of zero bytes empties the graph and empty graph, for TDB2, don't show up.

afs avatar Nov 24 '25 14:11 afs

So why is it PUTing zero bytes when there is an entire graph of data? I just delete a few triples in a much larger graph in the editor.

AtesComp avatar Nov 24 '25 15:11 AtesComp

So why is it PUTing zero bytes when there is an entire graph of data? I just delete a few triples in a much larger graph in the editor.

Don't know. But it is why the graph disappears.

So the problem looks to be in the UI, not the server. The UI is not sending the updated graph.

afs avatar Nov 24 '25 16:11 afs

I noticed this was an issue in 5.5.0 as well. Looking at the diff for jena-fuseki2/jena-fuseki-ui/src/views/dataset/Edit.vue, I noticed CodeMirror is used and was updated.

There looks to be some issues with the update. Since I've worked with CodeMirror on another project, I'm working on a pull request for the Fuseki UI.

AtesComp avatar Dec 08 '25 22:12 AtesComp