Skip to content

Jelly-RDF 1.1 vs 1.2

Jelly-RDF 1.2 features a new column layout for stream frames, which improves throughput and reduces serialized size (see the changes from Jelly-RDF 1.1). The first version of Jelly-JVM to support it is 4.0.0, which also includes other performance improvements in the implementation itself that made Jelly-RDF 1.1 faster as well. This page compares Jelly-RDF 1.2 with Jelly-RDF 1.1, and also shows the performance improvements coming from the implementation.

The charts are interactive – hover over them for details.

Benchmark setup

The same datasets, hardware, software, and method were used as in the Jelly-RDF benchmarks, with the "big" preset. Three versions were compared:

  • 3.7 (Jelly-RDF 1.1) – Jelly-JVM 3.7.3, Jelly-RDF 1.1, frame size 256
  • 4.0 (Jelly-RDF 1.1) – Jelly-JVM 4.0.0 writing Jelly-RDF 1.1, frame size 1024
  • 4.0 (Jelly-RDF 1.2) – Jelly-JVM 4.0.0, Jelly-RDF 1.2, frame size 1024

Each of the three versions was run 6 times for every dataset. The result for a dataset is the median of the 6 runs.

Results

Throughput

Step-by-step throughput improvements: the code changes in Jelly-JVM 4.0.0 (still with Jelly-RDF 1.1), and the Jelly-RDF 1.2 format. Teal: geometric mean over 13 datasets, gray: each dataset.

Data behind this chart
LibraryOperationVersionThroughput (statements/s, geomean)vs previousvs 3.7
JenaWrite3.7 (Jelly-RDF 1.1)8,899,3461.00×
JenaWrite4.0 (Jelly-RDF 1.1)13,276,9211.49×1.49×
JenaWrite4.0 (Jelly-RDF 1.2)19,638,6011.48×2.2×
RDF4JWrite3.7 (Jelly-RDF 1.1)8,478,7831.00×
RDF4JWrite4.0 (Jelly-RDF 1.1)12,291,9251.45×1.45×
RDF4JWrite4.0 (Jelly-RDF 1.2)18,908,6261.54×2.2×
JenaRead3.7 (Jelly-RDF 1.1)14,717,2311.00×
JenaRead4.0 (Jelly-RDF 1.1)15,681,2601.07×1.07×
JenaRead4.0 (Jelly-RDF 1.2)28,098,3221.79×1.91×
RDF4JRead3.7 (Jelly-RDF 1.1)15,412,4291.00×
RDF4JRead4.0 (Jelly-RDF 1.1)15,788,3591.02×1.02×
RDF4JRead4.0 (Jelly-RDF 1.2)30,652,9941.94×1.99×

Throughput on each of the 13 datasets (median of 6 runs). Log scale.

Data behind this chart
LibraryOperationDataset3.7 (Jelly-RDF 1.1)4.0 (Jelly-RDF 1.1)4.0 (Jelly-RDF 1.2)1.2 vs 1.1
JenaWriteassist-iot-weather11,207,89216,901,30327,682,2411.64×
JenaWriteassist-iot-weather-graphs14,596,39219,933,33231,056,3741.56×
JenaWritecitypulse-traffic11,148,02915,362,64222,730,3471.48×
JenaWritecitypulse-traffic-graphs10,312,66714,105,34019,599,4671.39×
JenaWritedbpedia-live4,725,0677,019,4749,736,4541.39×
JenaWritedigital-agenda-indicators10,943,30716,456,75331,137,8801.89×
JenaWritelinked-spending9,349,62814,439,28620,602,0241.43×
JenaWritelod-katrina9,332,57214,601,91420,902,8481.43×
JenaWritemuziekweb5,598,1029,645,25314,340,1861.49×
JenaWritenanopubs8,957,21113,657,07818,383,5711.35×
JenaWriteofficegraph9,934,64714,005,27120,632,9851.47×
JenaWriteopenaire-lod6,900,08710,499,40813,834,7611.32×
JenaWriteosm2rdf-denmark7,529,10811,566,03117,175,5731.49×
RDF4JWriteassist-iot-weather10,569,04615,193,79025,162,3631.66×
RDF4JWriteassist-iot-weather-graphs13,212,35117,976,87729,331,6391.63×
RDF4JWritecitypulse-traffic10,682,33814,254,15622,179,8821.56×
RDF4JWritecitypulse-traffic-graphs9,348,08113,064,74119,512,0951.49×
RDF4JWritedbpedia-live4,668,5746,831,5649,609,9051.41×
RDF4JWritedigital-agenda-indicators10,583,89316,473,77929,154,7581.77×
RDF4JWritelinked-spending9,085,59913,205,40120,250,2831.53×
RDF4JWritelod-katrina8,410,66813,463,29119,567,2711.45×
RDF4JWritemuziekweb5,605,2098,434,74113,565,9461.61×
RDF4JWritenanopubs8,275,16711,006,38217,586,3191.60×
RDF4JWriteofficegraph9,290,38213,583,03419,886,7101.46×
RDF4JWriteopenaire-lod6,849,98910,208,10913,816,8461.35×
RDF4JWriteosm2rdf-denmark7,530,52511,162,50016,991,9041.52×
JenaReadassist-iot-weather19,190,90517,757,32137,398,0162.1×
JenaReadassist-iot-weather-graphs18,506,01917,871,90137,182,1642.1×
JenaReadcitypulse-traffic17,402,47318,187,96433,331,2561.83×
JenaReadcitypulse-traffic-graphs16,576,88616,984,10631,218,1811.84×
JenaReaddbpedia-live8,947,75910,393,80716,154,6011.55×
JenaReaddigital-agenda-indicators18,212,27619,305,44942,393,8052.2×
JenaReadlinked-spending14,701,84715,815,66025,781,6081.63×
JenaReadlod-katrina16,370,39216,780,15737,443,1152.2×
JenaReadmuziekweb9,289,38311,627,83017,542,3891.51×
JenaReadnanopubs14,367,73815,960,71931,043,2361.94×
JenaReadofficegraph15,122,60216,291,02829,121,3111.79×
JenaReadopenaire-lod12,859,43113,585,46717,238,1681.27×
JenaReadosm2rdf-denmark14,570,82416,168,33426,023,4021.61×
RDF4JReadassist-iot-weather17,972,53817,304,26040,977,2272.4×
RDF4JReadassist-iot-weather-graphs17,572,89817,030,30136,656,7112.2×
RDF4JReadcitypulse-traffic17,280,75617,535,76233,970,1851.94×
RDF4JReadcitypulse-traffic-graphs16,360,57416,787,84129,895,1501.78×
RDF4JReaddbpedia-live10,600,72411,183,79817,842,8251.60×
RDF4JReaddigital-agenda-indicators17,702,37418,141,82446,008,1012.5×
RDF4JReadlinked-spending16,057,60416,405,82029,388,3751.79×
RDF4JReadlod-katrina15,904,58215,922,30835,613,3012.2×
RDF4JReadmuziekweb11,463,85812,636,66722,515,4991.78×
RDF4JReadnanopubs15,422,22515,822,92033,492,7892.1×
RDF4JReadofficegraph15,748,40216,264,65833,424,7792.1×
RDF4JReadopenaire-lod14,564,21015,206,90022,576,0591.48×
RDF4JReadosm2rdf-denmark15,956,54016,657,39828,282,4991.70×

Serialized size

Serialized size, geometric mean over 13 datasets.

Data behind this chart
VersionUncompressed (bytes/statement)zstd (bytes/statement)
3.7 (Jelly-RDF 1.1)32.324.8
4.0 (Jelly-RDF 1.1)32.134.49
4.0 (Jelly-RDF 1.2)21.043.9

Why are Jelly-RDF 1.1 files smaller on Jelly-JVM 4.0?

Jelly-JVM 4.0 changed the prefix and name ID assignment algorithm to favor allocating long runs of consecutive IDs, instead of spreading them randomly. This reduces the number of "noisy" IDs which helps with zstd compression, and also allows us to skip writing some prefix and name IDs thanks to delta compression. Such better-compressed files can still be read by existing Jelly-RDF 1.1 readers.

Serialized size on each of the 13 datasets, uncompressed and with zstd. Sorted by how much smaller Jelly-RDF 1.2 is. Log scale.

Data behind this chart
CompressionDataset3.7 (Jelly-RDF 1.1)4.0 (Jelly-RDF 1.1)4.0 (Jelly-RDF 1.2)1.2 vs 1.1 (%)
zstdassist-iot-weather0.850.820.6224
zstdassist-iot-weather-graphs0.540.490.3332
zstdcitypulse-traffic7.67.496.829
zstdcitypulse-traffic-graphs8.137.616.99
zstddbpedia-live11.439.839.078
zstddigital-agenda-indicators2.472.441.7130
zstdlinked-spending8.158.127.537
zstdlod-katrina2.742.372.1111
zstdmuziekweb14.0513.7213.045
zstdnanopubs6.55.85.1611
zstdofficegraph2.592.412.228
zstdopenaire-lod19.3118.9718.343
zstdosm2rdf-denmark8.887.917.377
Uncompressedassist-iot-weather19.5319.529.0254
Uncompressedassist-iot-weather-graphs19.5519.549.0754
Uncompressedcitypulse-traffic33.133.123.8928
Uncompressedcitypulse-traffic-graphs34.5534.124.4728
Uncompresseddbpedia-live40.8339.7329.0227
Uncompresseddigital-agenda-indicators22.3722.3711.5448
Uncompressedlinked-spending37.937.929.4722
Uncompressedlod-katrina30.7330.6718.4140
Uncompressedmuziekweb43.9443.8132.1727
Uncompressednanopubs38.3737.7926.3730
Uncompressedofficegraph25.926.3816.2338
Uncompressedopenaire-lod61.6861.4654.0412
Uncompressedosm2rdf-denmark33.5532.5824.4825

Throughput and serialized size

Size (uncompressed) against throughput on each of the 13 datasets. Each line connects a dataset's results for 3.7 (Jelly-RDF 1.1) and 4.0 (Jelly-RDF 1.2). Up and to the left is better. Log scales.

Data behind this chart
LibraryOperationDatasetVersionSize (bytes/statement)Throughput (statements/s)
JenaWriteassist-iot-weather3.7 (Jelly-RDF 1.1)19.5311,207,892
JenaWriteassist-iot-weather4.0 (Jelly-RDF 1.2)9.0227,682,241
JenaWriteassist-iot-weather-graphs3.7 (Jelly-RDF 1.1)19.5514,596,392
JenaWriteassist-iot-weather-graphs4.0 (Jelly-RDF 1.2)9.0731,056,374
JenaWritecitypulse-traffic3.7 (Jelly-RDF 1.1)33.111,148,029
JenaWritecitypulse-traffic4.0 (Jelly-RDF 1.2)23.8922,730,347
JenaWritecitypulse-traffic-graphs3.7 (Jelly-RDF 1.1)34.5510,312,667
JenaWritecitypulse-traffic-graphs4.0 (Jelly-RDF 1.2)24.4719,599,467
JenaWritedbpedia-live3.7 (Jelly-RDF 1.1)40.834,725,067
JenaWritedbpedia-live4.0 (Jelly-RDF 1.2)29.029,736,454
JenaWritedigital-agenda-indicators3.7 (Jelly-RDF 1.1)22.3710,943,307
JenaWritedigital-agenda-indicators4.0 (Jelly-RDF 1.2)11.5431,137,880
JenaWritelinked-spending3.7 (Jelly-RDF 1.1)37.99,349,628
JenaWritelinked-spending4.0 (Jelly-RDF 1.2)29.4720,602,024
JenaWritelod-katrina3.7 (Jelly-RDF 1.1)30.739,332,572
JenaWritelod-katrina4.0 (Jelly-RDF 1.2)18.4120,902,848
JenaWritemuziekweb3.7 (Jelly-RDF 1.1)43.945,598,102
JenaWritemuziekweb4.0 (Jelly-RDF 1.2)32.1714,340,186
JenaWritenanopubs3.7 (Jelly-RDF 1.1)38.378,957,211
JenaWritenanopubs4.0 (Jelly-RDF 1.2)26.3718,383,571
JenaWriteofficegraph3.7 (Jelly-RDF 1.1)25.99,934,647
JenaWriteofficegraph4.0 (Jelly-RDF 1.2)16.2320,632,985
JenaWriteopenaire-lod3.7 (Jelly-RDF 1.1)61.686,900,087
JenaWriteopenaire-lod4.0 (Jelly-RDF 1.2)54.0413,834,761
JenaWriteosm2rdf-denmark3.7 (Jelly-RDF 1.1)33.557,529,108
JenaWriteosm2rdf-denmark4.0 (Jelly-RDF 1.2)24.4817,175,573
RDF4JWriteassist-iot-weather3.7 (Jelly-RDF 1.1)19.5310,569,046
RDF4JWriteassist-iot-weather4.0 (Jelly-RDF 1.2)9.0225,162,363
RDF4JWriteassist-iot-weather-graphs3.7 (Jelly-RDF 1.1)19.5513,212,351
RDF4JWriteassist-iot-weather-graphs4.0 (Jelly-RDF 1.2)9.0729,331,639
RDF4JWritecitypulse-traffic3.7 (Jelly-RDF 1.1)33.110,682,338
RDF4JWritecitypulse-traffic4.0 (Jelly-RDF 1.2)23.8922,179,882
RDF4JWritecitypulse-traffic-graphs3.7 (Jelly-RDF 1.1)34.559,348,081
RDF4JWritecitypulse-traffic-graphs4.0 (Jelly-RDF 1.2)24.4719,512,095
RDF4JWritedbpedia-live3.7 (Jelly-RDF 1.1)40.834,668,574
RDF4JWritedbpedia-live4.0 (Jelly-RDF 1.2)29.029,609,905
RDF4JWritedigital-agenda-indicators3.7 (Jelly-RDF 1.1)22.3710,583,893
RDF4JWritedigital-agenda-indicators4.0 (Jelly-RDF 1.2)11.5429,154,758
RDF4JWritelinked-spending3.7 (Jelly-RDF 1.1)37.99,085,599
RDF4JWritelinked-spending4.0 (Jelly-RDF 1.2)29.4720,250,283
RDF4JWritelod-katrina3.7 (Jelly-RDF 1.1)30.738,410,668
RDF4JWritelod-katrina4.0 (Jelly-RDF 1.2)18.4119,567,271
RDF4JWritemuziekweb3.7 (Jelly-RDF 1.1)43.945,605,209
RDF4JWritemuziekweb4.0 (Jelly-RDF 1.2)32.1713,565,946
RDF4JWritenanopubs3.7 (Jelly-RDF 1.1)38.378,275,167
RDF4JWritenanopubs4.0 (Jelly-RDF 1.2)26.3717,586,319
RDF4JWriteofficegraph3.7 (Jelly-RDF 1.1)25.99,290,382
RDF4JWriteofficegraph4.0 (Jelly-RDF 1.2)16.2319,886,710
RDF4JWriteopenaire-lod3.7 (Jelly-RDF 1.1)61.686,849,989
RDF4JWriteopenaire-lod4.0 (Jelly-RDF 1.2)54.0413,816,846
RDF4JWriteosm2rdf-denmark3.7 (Jelly-RDF 1.1)33.557,530,525
RDF4JWriteosm2rdf-denmark4.0 (Jelly-RDF 1.2)24.4816,991,904
JenaReadassist-iot-weather3.7 (Jelly-RDF 1.1)19.5319,190,905
JenaReadassist-iot-weather4.0 (Jelly-RDF 1.2)9.0237,398,016
JenaReadassist-iot-weather-graphs3.7 (Jelly-RDF 1.1)19.5518,506,019
JenaReadassist-iot-weather-graphs4.0 (Jelly-RDF 1.2)9.0737,182,164
JenaReadcitypulse-traffic3.7 (Jelly-RDF 1.1)33.117,402,473
JenaReadcitypulse-traffic4.0 (Jelly-RDF 1.2)23.8933,331,256
JenaReadcitypulse-traffic-graphs3.7 (Jelly-RDF 1.1)34.5516,576,886
JenaReadcitypulse-traffic-graphs4.0 (Jelly-RDF 1.2)24.4731,218,181
JenaReaddbpedia-live3.7 (Jelly-RDF 1.1)40.838,947,759
JenaReaddbpedia-live4.0 (Jelly-RDF 1.2)29.0216,154,601
JenaReaddigital-agenda-indicators3.7 (Jelly-RDF 1.1)22.3718,212,276
JenaReaddigital-agenda-indicators4.0 (Jelly-RDF 1.2)11.5442,393,805
JenaReadlinked-spending3.7 (Jelly-RDF 1.1)37.914,701,847
JenaReadlinked-spending4.0 (Jelly-RDF 1.2)29.4725,781,608
JenaReadlod-katrina3.7 (Jelly-RDF 1.1)30.7316,370,392
JenaReadlod-katrina4.0 (Jelly-RDF 1.2)18.4137,443,115
JenaReadmuziekweb3.7 (Jelly-RDF 1.1)43.949,289,383
JenaReadmuziekweb4.0 (Jelly-RDF 1.2)32.1717,542,389
JenaReadnanopubs3.7 (Jelly-RDF 1.1)38.3714,367,738
JenaReadnanopubs4.0 (Jelly-RDF 1.2)26.3731,043,236
JenaReadofficegraph3.7 (Jelly-RDF 1.1)25.915,122,602
JenaReadofficegraph4.0 (Jelly-RDF 1.2)16.2329,121,311
JenaReadopenaire-lod3.7 (Jelly-RDF 1.1)61.6812,859,431
JenaReadopenaire-lod4.0 (Jelly-RDF 1.2)54.0417,238,168
JenaReadosm2rdf-denmark3.7 (Jelly-RDF 1.1)33.5514,570,824
JenaReadosm2rdf-denmark4.0 (Jelly-RDF 1.2)24.4826,023,402
RDF4JReadassist-iot-weather3.7 (Jelly-RDF 1.1)19.5317,972,538
RDF4JReadassist-iot-weather4.0 (Jelly-RDF 1.2)9.0240,977,227
RDF4JReadassist-iot-weather-graphs3.7 (Jelly-RDF 1.1)19.5517,572,898
RDF4JReadassist-iot-weather-graphs4.0 (Jelly-RDF 1.2)9.0736,656,711
RDF4JReadcitypulse-traffic3.7 (Jelly-RDF 1.1)33.117,280,756
RDF4JReadcitypulse-traffic4.0 (Jelly-RDF 1.2)23.8933,970,185
RDF4JReadcitypulse-traffic-graphs3.7 (Jelly-RDF 1.1)34.5516,360,574
RDF4JReadcitypulse-traffic-graphs4.0 (Jelly-RDF 1.2)24.4729,895,150
RDF4JReaddbpedia-live3.7 (Jelly-RDF 1.1)40.8310,600,724
RDF4JReaddbpedia-live4.0 (Jelly-RDF 1.2)29.0217,842,825
RDF4JReaddigital-agenda-indicators3.7 (Jelly-RDF 1.1)22.3717,702,374
RDF4JReaddigital-agenda-indicators4.0 (Jelly-RDF 1.2)11.5446,008,101
RDF4JReadlinked-spending3.7 (Jelly-RDF 1.1)37.916,057,604
RDF4JReadlinked-spending4.0 (Jelly-RDF 1.2)29.4729,388,375
RDF4JReadlod-katrina3.7 (Jelly-RDF 1.1)30.7315,904,582
RDF4JReadlod-katrina4.0 (Jelly-RDF 1.2)18.4135,613,301
RDF4JReadmuziekweb3.7 (Jelly-RDF 1.1)43.9411,463,858
RDF4JReadmuziekweb4.0 (Jelly-RDF 1.2)32.1722,515,499
RDF4JReadnanopubs3.7 (Jelly-RDF 1.1)38.3715,422,225
RDF4JReadnanopubs4.0 (Jelly-RDF 1.2)26.3733,492,789
RDF4JReadofficegraph3.7 (Jelly-RDF 1.1)25.915,748,402
RDF4JReadofficegraph4.0 (Jelly-RDF 1.2)16.2333,424,779
RDF4JReadopenaire-lod3.7 (Jelly-RDF 1.1)61.6814,564,210
RDF4JReadopenaire-lod4.0 (Jelly-RDF 1.2)54.0422,576,059
RDF4JReadosm2rdf-denmark3.7 (Jelly-RDF 1.1)33.5515,956,540
RDF4JReadosm2rdf-denmark4.0 (Jelly-RDF 1.2)24.4828,282,499

See also