From 8dcaa5b61f83c98a16b4c0f7389d4c83906ee8ed588aec5eb2418e490b272255 Mon Sep 17 00:00:00 2001 From: Alex Wied <2+alex@noreply.code.graphofliberty.org> Date: Thu, 13 Aug 2026 22:44:37 -0400 Subject: [PATCH] . --- Cargo.lock | 261 ++++++++++++++++++++------------------- graph/src/index.rs | 4 +- inference/src/service.rs | 118 +++++++++++------- proto/inference.proto | 2 +- publish/src/main.rs | 40 +++++- 5 files changed, 244 insertions(+), 181 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1e9082d..45c6512 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -77,7 +77,7 @@ dependencies = [ "ndk-context", "ndk-sys", "num_enum", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -336,9 +336,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.91" +version = "0.1.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae36dc4177970ef04fde5178d3e2429882def40e57a451f919c098f72baa6cec" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", @@ -359,9 +359,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "aws-lc-rs" -version = "1.17.3" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00bdb5da18dac48ca2cc7cd4a98e533e8635a58e2361d13a1a4ee3888e0d72f1" +checksum = "ce2b2dcc879c3bae0d371e77c99f2238400ef24ec001394befa67b6e543add9e" dependencies = [ "aws-lc-sys", "zeroize", @@ -369,9 +369,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43103168cc76fe62678a375e722fc9cb3a0146159ac5828bc4f0dfd755c2224c" +checksum = "f09fae7be8bb3174e05c6afdb34199e6dc0c7c04ba9fa237b1967adfbde27483" dependencies = [ "cc", "cmake", @@ -591,13 +591,13 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f65693059b6b9c588b9f62fed1cedbf0a8b805631457ea162d68f0de186f3de5" +checksum = "fc0e56a716f1e132ff6bf4bdac1c944a3fcdc1cae65f70a4a2a1ac3b401d2d1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] @@ -640,9 +640,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9" +checksum = "5d262e149917187838d5b42777c8253bcb64500067342904e7d429499a6f277e" dependencies = [ "find-msvc-tools", "jobserver", @@ -712,9 +712,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.5" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301b56658598e48f3648647ac6fc887be7e7108eddfa4e9b63fcf3ec58c0cadf" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -722,9 +722,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.5" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a65403d1a1bd28f7dc68eb8506e8874808ee5eecb59298de588e2e1407a078" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -1304,10 +1304,11 @@ dependencies = [ [[package]] name = "eyre" -version = "0.6.12" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +checksum = "c08309dbcc659c5549a24ddb9b27027640641b282ef5768267c7e675558986a3" dependencies = [ + "autocfg", "indenter", "once_cell", ] @@ -1336,9 +1337,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de" [[package]] name = "fixedbitset" @@ -1375,9 +1376,9 @@ dependencies = [ [[package]] name = "font-types" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a7299a780854a6d391be2ae1c8521c9368471b559dbfd6a8dbd9f407eaff100" +checksum = "75382bc7392ef10aad10935f92fc3db36d2d4dad0e5d96d8d65e04f89a07ec39" dependencies = [ "bytemuck", ] @@ -1459,9 +1460,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "futures" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88cf1f829d945f548cf8fec32c61b1f202b6d93b45848602fc02af4b12ad218" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" dependencies = [ "futures-channel", "futures-core", @@ -1474,9 +1475,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" dependencies = [ "futures-core", "futures-sink", @@ -1484,15 +1485,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-executor" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" dependencies = [ "futures-core", "futures-task", @@ -1501,9 +1502,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" [[package]] name = "futures-lite" @@ -1520,32 +1521,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] name = "futures-sink" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" [[package]] name = "futures-task" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-util" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-channel", "futures-core", @@ -1631,7 +1632,7 @@ dependencies = [ "gl-search", "oxigraph", "oxilangtag", - "thiserror 2.0.19", + "thiserror 2.0.20", "tracing", ] @@ -1643,7 +1644,7 @@ dependencies = [ "num-traits", "oxigraph", "prost", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tonic", "tonic-prost", @@ -1670,7 +1671,7 @@ dependencies = [ "oxilangtag", "rfd", "tar", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tonic", "tracing", @@ -1687,7 +1688,7 @@ dependencies = [ "oxigraph", "subtitler", "tantivy", - "thiserror 2.0.19", + "thiserror 2.0.20", "tracing", ] @@ -1745,7 +1746,7 @@ dependencies = [ "hashbrown 0.16.1", "log", "presser", - "thiserror 2.0.19", + "thiserror 2.0.20", "windows", ] @@ -1897,9 +1898,9 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2" +checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" dependencies = [ "bytes", "futures-core", @@ -1996,7 +1997,7 @@ dependencies = [ [[package]] name = "iced" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "iced_core", "iced_debug", @@ -2005,13 +2006,13 @@ dependencies = [ "iced_runtime", "iced_widget", "iced_winit", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] name = "iced_core" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "bitflags 2.13.1", "bytes", @@ -2022,14 +2023,15 @@ dependencies = [ "raw-window-handle", "rustc-hash 2.1.3", "smol_str 0.2.2", - "thiserror 2.0.19", + "thiserror 2.0.20", + "unicode-segmentation", "web-time", ] [[package]] name = "iced_debug" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "iced_core", "iced_futures", @@ -2039,7 +2041,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "futures", "iced_core", @@ -2053,7 +2055,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "bitflags 2.13.1", "bytemuck", @@ -2064,14 +2066,13 @@ dependencies = [ "log", "raw-window-handle", "rustc-hash 2.1.3", - "thiserror 2.0.19", - "unicode-segmentation", + "thiserror 2.0.20", ] [[package]] name = "iced_program" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "iced_graphics", "iced_runtime", @@ -2080,30 +2081,30 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "iced_graphics", "iced_tiny_skia", "iced_wgpu", "log", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] name = "iced_runtime" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "bytes", "iced_core", "iced_futures", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] name = "iced_tiny_skia" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "bytemuck", "cosmic-text", @@ -2119,7 +2120,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "bitflags 2.13.1", "bytemuck", @@ -2129,28 +2130,28 @@ dependencies = [ "iced_graphics", "log", "rustc-hash 2.1.3", - "thiserror 2.0.19", + "thiserror 2.0.20", "wgpu", ] [[package]] name = "iced_widget" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "iced_renderer", "iced_runtime", "log", "num-traits", "rustc-hash 2.1.3", - "thiserror 2.0.19", + "thiserror 2.0.20", "unicode-segmentation", ] [[package]] name = "iced_winit" version = "0.15.0-dev" -source = "git+https://github.com/iced-rs/iced.git?branch=master#4cad51ba61e3d76a7e696ad5923d675a20994e34" +source = "git+https://github.com/iced-rs/iced.git?branch=master#2b275718d19a5cf306537e1d2417a1f5e9d94ef4" dependencies = [ "arboard", "iced_debug", @@ -2160,7 +2161,7 @@ dependencies = [ "mundy", "objc2 0.5.2", "rustc-hash 2.1.3", - "thiserror 2.0.19", + "thiserror 2.0.20", "tracing", "wasm-bindgen-futures", "web-sys", @@ -2349,7 +2350,7 @@ dependencies = [ "jni-sys 0.4.1", "log", "simd_cesu8", - "thiserror 2.0.19", + "thiserror 2.0.20", "walkdir", "windows-link", ] @@ -2467,7 +2468,7 @@ dependencies = [ "parse_link_header", "reqwest-middleware", "slotmap", - "thiserror 2.0.19", + "thiserror 2.0.20", "tracing", ] @@ -2508,7 +2509,7 @@ dependencies = [ "bitflags 2.13.1", "libc", "plain", - "redox_syscall 0.9.1", + "redox_syscall 0.9.2", ] [[package]] @@ -2735,7 +2736,7 @@ dependencies = [ "once_cell", "rustc-hash 1.1.0", "spirv", - "thiserror 2.0.19", + "thiserror 2.0.20", "unicode-ident", ] @@ -3314,7 +3315,7 @@ dependencies = [ "sparesults", "spareval", "spargebra", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -3342,7 +3343,7 @@ dependencies = [ "oxiri", "oxrdf", "ryu-js", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -3357,7 +3358,7 @@ dependencies = [ "oxsdatatypes", "rand 0.9.5", "sha2", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -3370,7 +3371,7 @@ dependencies = [ "oxrdf", "oxrdfxml", "oxttl", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -3383,7 +3384,7 @@ dependencies = [ "oxiri", "oxrdf", "quick-xml 0.37.5", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -3402,7 +3403,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06fa874d87eae638daae9b4e3198864fe2cce68589f227c0b2cf5b62b1530516" dependencies = [ - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -3415,7 +3416,7 @@ dependencies = [ "oxilangtag", "oxiri", "oxrdf", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -3579,9 +3580,9 @@ checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" [[package]] name = "portable-atomic" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" [[package]] name = "portable-atomic-util" @@ -3722,9 +3723,9 @@ dependencies = [ [[package]] name = "pulldown-cmark-to-cmark" -version = "22.0.0" +version = "22.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50793def1b900256624a709439404384204a5dc3a6ec580281bfaac35e882e90" +checksum = "ab1ad36992cead65f02aa399a373a42730922f1525d988172634fdefdecb8a60" dependencies = [ "pulldown-cmark", ] @@ -3761,7 +3762,7 @@ dependencies = [ "rustc-hash 2.1.3", "rustls", "socket2", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tracing", "web-time", @@ -3784,7 +3785,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.19", + "thiserror 2.0.20", "tinyvec", "tracing", "web-time", @@ -3948,7 +3949,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046a7d674daf459825b32f5062056d6882db0d2f5a479fbd76ccfc870ac18709" dependencies = [ "bytemuck", - "font-types 0.12.2", + "font-types 0.12.3", "once_cell", ] @@ -3972,9 +3973,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07507be7b4a5f9f26eeb41eeaebb1f5a7ff29dfb29739facc21d35bf8b11c21e" +checksum = "f1c93da5bb2c5d4e6c0ef7abeead62c89169a0a4882bfb83ac892f2423aea2fe" dependencies = [ "bitflags 2.13.1", ] @@ -4062,7 +4063,7 @@ dependencies = [ "async-trait", "http", "reqwest", - "thiserror 2.0.19", + "thiserror 2.0.20", "tower-service", ] @@ -4241,9 +4242,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.13" +version = "0.103.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +checksum = "0527518605e68109d875e248ea259b6758801cf165e4b2c2733ae3b51f12535a" dependencies = [ "aws-lc-rs", "ring", @@ -4631,7 +4632,7 @@ dependencies = [ "memchr", "oxrdf", "quick-xml 0.37.5", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -4654,7 +4655,7 @@ dependencies = [ "sparesults", "spargebra", "sparopt", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -4668,7 +4669,7 @@ dependencies = [ "oxrdf", "peg", "rand 0.9.5", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -4734,7 +4735,7 @@ dependencies = [ "serde-wasm-bindgen", "serde_json", "smallvec", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tracing", "tracing-subscriber", @@ -4867,7 +4868,7 @@ dependencies = [ "tantivy-stacker", "tantivy-tokenizer-api", "tempfile", - "thiserror 2.0.19", + "thiserror 2.0.20", "time", "typetag", "uuid", @@ -5013,11 +5014,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.19" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ - "thiserror-impl 2.0.19", + "thiserror-impl 2.0.20", ] [[package]] @@ -5033,9 +5034,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.19" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", @@ -5371,7 +5372,7 @@ checksum = "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c" dependencies = [ "crossbeam-channel", "symlink", - "thiserror 2.0.19", + "thiserror 2.0.20", "time", "tracing-subscriber", ] @@ -5923,7 +5924,7 @@ dependencies = [ "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.19", + "thiserror 2.0.20", "wgpu-core-deps-apple", "wgpu-core-deps-emscripten", "wgpu-core-deps-windows-linux-android", @@ -6002,7 +6003,7 @@ dependencies = [ "raw-window-metal", "renderdoc-sys", "smallvec", - "thiserror 2.0.19", + "thiserror 2.0.20", "wasm-bindgen", "wayland-sys", "web-sys", @@ -6419,7 +6420,7 @@ dependencies = [ "log", "os_pipe", "rustix 1.1.4", - "thiserror 2.0.19", + "thiserror 2.0.20", "tree_magic_mini", "wayland-backend", "wayland-client", @@ -6502,9 +6503,9 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.28" +version = "0.8.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" +checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" [[package]] name = "yazi" @@ -6537,9 +6538,9 @@ dependencies = [ [[package]] name = "zbus" -version = "5.18.0" +version = "5.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe18fb60dc696039e738717b76eaea21e7a4489bbb1885020b43c94236d7e98a" +checksum = "5db4be7c075cb421e4b7ee645541604239bd243ba7c357511f4ff3a74b555907" dependencies = [ "async-broadcast", "async-executor", @@ -6572,14 +6573,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.18.0" +version = "5.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe96480bed92df2b442a1a30df364e12d08eed03aeb061f2b8dc6afb2be91119" +checksum = "2990635d09ade6df1868f72f8cac69a876a90981e8bd3c40b1be413f8dc88f40" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", "zbus_names", "zvariant", "zvariant_utils", @@ -6596,6 +6597,15 @@ dependencies = [ "zvariant", ] +[[package]] +name = "zcheapstr" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1afec51604565183aeb5c54c20aeab286120d4e4460f7f76e3e8bb8c0d99473" +dependencies = [ + "serde", +] + [[package]] name = "zeno" version = "0.3.3" @@ -6604,18 +6614,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.55" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.55" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" dependencies = [ "proc-macro2", "quote", @@ -6718,40 +6728,41 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.13.1" +version = "5.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee2a0bcd2a907786a456fff45aaaaf54c9ba5f50b71ae9ec1a4edd200c94911" +checksum = "b5e28c25bd8bb8da5a1f3e7065d0c156b9ee9a7973adf78b0e35eaefdf3b1b5c" dependencies = [ "endi", "enumflags2", "serde", "winnow", + "zcheapstr", "zvariant_derive", "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "5.13.1" +version = "5.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38a708216a18780796770bfe3f4739c7c83a3e8f789b755534bbbc06e4e23e12" +checksum = "d496a145685283b67e232bd9e47377f6b60ad9d51e3601b23867f77c42477f96" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "3.5.0" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90cb9383f9b45290407a1258b202d3f8f01db719eb60b4e4055c6375af4fc7c7" +checksum = "629d80ece222cad20fe0e8741be493c4ab166acf3b85341bdc2cdbcfd8f3c2d6" dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.119", + "syn 3.0.3", "winnow", ] diff --git a/graph/src/index.rs b/graph/src/index.rs index 872fbba..5158b1c 100644 --- a/graph/src/index.rs +++ b/graph/src/index.rs @@ -20,7 +20,7 @@ pub async fn index_ontology( let description_filter = language.to_filter_expression("description"); let mut request = OntologyQueryRequest::default(); - request.sparql_query = format!(r#"PREFIX rdf: + request.sparql_query = Some(format!(r#"PREFIX rdf: PREFIX rdfs: PREFIX skos: @@ -34,7 +34,7 @@ SELECT ?class ?subject ?label ?description WHERE {{ OPTIONAL {{ ?subject skos:definition ?definition }} BIND(COALESCE(?definition, ?comment) AS ?description) {description_filter} -}}"#); +}}"#)); let response = client.query(request).await.unwrap(); let parser_output = QueryResultsParser::from_format(QueryResultsFormat::Json) diff --git a/inference/src/service.rs b/inference/src/service.rs index 32a1d65..f790198 100644 --- a/inference/src/service.rs +++ b/inference/src/service.rs @@ -110,60 +110,82 @@ impl Ontology for OntologyService { ONTOLOGY_GRAPH.into_owned() }; - let mut evaluator = SparqlEvaluator::new(); - for (name, iri) in &request.prefixes { - evaluator = evaluator.with_prefix(name, iri) - .map_err(|err| Status::internal(err.to_string()))?; - } - - if let Some(base) = &request.base { - evaluator = evaluator.with_base_iri(base) - .map_err(|err| Status::internal(err.to_string()))?; - } - - let mut query = evaluator.parse_query(&request.sparql_query) - .map_err(|err| Status::internal(err.to_string()))?; - - query.dataset_mut().set_default_graph(vec![graph_name.clone()]); - - let results = query.on_store(&self.ontology) - .execute() - .map_err(|err| Status::internal(err.to_string()))?; - let mut output_buffer = Vec::new(); - match results { - QueryResults::Boolean(result) => { - let serializer = QueryResultsSerializer::from_format(QueryResultsFormat::Json); - output_buffer = serializer.serialize_boolean_to_writer(output_buffer, result) + if let Some(sparql_query) = &request.sparql_query { + let mut evaluator = SparqlEvaluator::new(); + for (name, iri) in &request.prefixes { + evaluator = evaluator.with_prefix(name, iri) .map_err(|err| Status::internal(err.to_string()))?; } - QueryResults::Solutions(solutions) => { - let serializer = QueryResultsSerializer::from_format(QueryResultsFormat::Json); - let variables = Vec::from_iter(solutions.variables().iter().cloned()); - let mut writer = serializer.serialize_solutions_to_writer(output_buffer, variables)?; - for solution in solutions.filter_map(Result::ok) { - writer.serialize(&solution)?; - } - output_buffer = writer.finish()?; - } - QueryResults::Graph(graph) => { - let mut serializer = RdfSerializer::from_format(RdfFormat::Turtle); - for (name, iri) in &request.prefixes { - serializer = serializer.with_prefix(name, iri) - .map_err(|err| Status::internal(err.to_string()))?; - } - if let Some(base) = &request.base { - serializer = serializer.with_base_iri(base) - .map_err(|err| Status::internal(err.to_string()))?; - } - let mut serializer = serializer.for_writer(output_buffer); - for triple in graph.filter_map(Result::ok) { - serializer.serialize_triple(triple.as_ref())?; - } - output_buffer = serializer.finish()?; + if let Some(base) = &request.base { + evaluator = evaluator.with_base_iri(base) + .map_err(|err| Status::internal(err.to_string()))?; } + + let mut query = evaluator.parse_query(sparql_query) + .map_err(|err| Status::internal(err.to_string()))?; + + query.dataset_mut().set_default_graph(vec![graph_name.clone()]); + + let results = query.on_store(&self.ontology) + .execute() + .map_err(|err| Status::internal(err.to_string()))?; + + match results { + QueryResults::Boolean(result) => { + let serializer = QueryResultsSerializer::from_format(QueryResultsFormat::Json); + output_buffer = serializer.serialize_boolean_to_writer(output_buffer, result) + .map_err(|err| Status::internal(err.to_string()))?; + } + QueryResults::Solutions(solutions) => { + let serializer = QueryResultsSerializer::from_format(QueryResultsFormat::Json); + let variables = Vec::from_iter(solutions.variables().iter().cloned()); + let mut writer = serializer.serialize_solutions_to_writer(output_buffer, variables)?; + for solution in solutions.filter_map(Result::ok) { + writer.serialize(&solution)?; + } + output_buffer = writer.finish()?; + } + QueryResults::Graph(graph) => { + let mut serializer = RdfSerializer::from_format(RdfFormat::Turtle); + for (name, iri) in &request.prefixes { + serializer = serializer.with_prefix(name, iri) + .map_err(|err| Status::internal(err.to_string()))?; + } + if let Some(base) = &request.base { + serializer = serializer.with_base_iri(base) + .map_err(|err| Status::internal(err.to_string()))?; + } + + let mut serializer = serializer.for_writer(output_buffer); + for triple in graph.filter_map(Result::ok) { + serializer.serialize_triple(triple.as_ref())?; + } + output_buffer = serializer.finish()?; + } + } + } else { + let mut serializer = RdfSerializer::from_format(RdfFormat::Turtle); + for (name, iri) in &request.prefixes { + serializer = serializer.with_prefix(name, iri) + .map_err(|err| Status::internal(err.to_string()))?; + } + if let Some(base) = &request.base { + serializer = serializer.with_base_iri(base) + .map_err(|err| Status::internal(err.to_string()))?; + } + + let mut serializer = serializer.for_writer(output_buffer); + let graph = self.ontology + .quads_for_pattern(None, None, None, Some(graph_name.as_ref())) + .filter_map(Result::ok); + for triple in graph { + serializer.serialize_triple(triple.as_ref())?; + } + output_buffer = serializer.finish()?; } + response.results = String::from_utf8_lossy(&output_buffer).to_string(); if request.turtle.is_some() { diff --git a/proto/inference.proto b/proto/inference.proto index 42b7892..16af230 100644 --- a/proto/inference.proto +++ b/proto/inference.proto @@ -19,7 +19,7 @@ message OntologyClearResponse { message OntologyQueryRequest { optional string turtle = 1; - string sparql_query = 2; + optional string sparql_query = 2; map prefixes = 3; optional string base = 4; } diff --git a/publish/src/main.rs b/publish/src/main.rs index 596d5ba..adb7583 100644 --- a/publish/src/main.rs +++ b/publish/src/main.rs @@ -17,8 +17,10 @@ use ldp::middleware::BasicAuthMiddleware; use ldp::reqwest::Client; use ldp::reqwest_middleware::ClientBuilder; use ldp::traverse::Traverse; -use oxigraph::model::Dataset; -use tracing::{debug_span, error, field}; +use oxigraph::io::{RdfFormat, RdfParser, RdfSerializer}; +use oxigraph::model::{Dataset, Graph, Triple, TripleRef}; +use tonic::Status; +use tracing::{debug, debug_span, error, field, Instrument}; use tracing_subscriber::fmt::format::FmtSpan; use tracing_subscriber::layer::SubscriberExt; use tracing_subscriber::util::SubscriberInitExt; @@ -56,7 +58,7 @@ fn main() -> color_eyre::Result<()> { } else { None }; let mut request = OntologyQueryRequest::default(); - request.sparql_query = raw_query; + request.sparql_query = Some(raw_query); request.turtle = graph; request.prefixes = HashMap::from_iter(gl_graph::PREFIXES.iter().map(|(name, iri)| (name.clone(), iri.clone()))); request.base = args.base.clone(); @@ -122,8 +124,36 @@ fn main() -> color_eyre::Result<()> { } } - let span = debug_span!("Index Repository", rdf_sources = field::Empty, documents = field::Empty).entered(); - span.record("rdf_sources", rdf_source_count); + let span = debug_span!("Index Repository", rdf_sources = rdf_source_count, triples = field::Empty, documents = field::Empty); + let triple_count = async { + let mut client = OntologyClient::connect("http://[::1]:3000").await.unwrap(); + let mut request = OntologyQueryRequest::default(); + + let mut output_buffer = Vec::new(); + let mut serializer = RdfSerializer::from_format(RdfFormat::Turtle) + .for_writer(output_buffer); + for quad in &dataset { + serializer.serialize_triple(TripleRef::from(quad))?; + } + output_buffer = serializer.finish()?; + let turtle = String::from_utf8_lossy(&output_buffer).to_string(); + + request.sparql_query = None; + request.turtle = Some(turtle); + request.prefixes = HashMap::new(); + request.base = None; + + let response = client.query(request).await.unwrap(); + let graph_with_inferences = RdfParser::from_format(RdfFormat::Turtle) + .for_slice(&response.get_ref().results) + .filter_map(Result::ok) + .map(Triple::from) + .collect::(); + + Ok::(graph_with_inferences.len()) + }.instrument(span.clone()).await?; + span.record("triples", triple_count); + Ok::<_, crate::error::Error>(writer) })?;