Compare commits

...

15 Commits

  1. 6
      .github/FUNDING.yml
  2. 16
      CHANGELOG.md
  3. 35
      Cargo.lock
  4. 2
      Cargo.toml
  5. 2
      LICENSE-MIT
  6. 3
      README.md
  7. 17
      RELEASE-NOTE.md
  8. 14
      nextgraph/Cargo.toml
  9. 5
      nextgraph/README.md
  10. 2
      nextgraph/examples/in_memory.rs
  11. 2
      nextgraph/examples/open.rs
  12. 2
      nextgraph/examples/persistent.rs
  13. 4
      nextgraph/src/local_broker.rs
  14. 2
      ng-app/index-native.html
  15. 13
      ng-app/index-web.html
  16. 10
      ng-app/package.json
  17. 51
      ng-app/src-tauri/src/lib.rs
  18. 2
      ng-app/src-tauri/src/main.rs
  19. 2
      ng-app/src-tauri/src/mobile.rs
  20. 2
      ng-app/src-tauri/tauri.conf.json
  21. 2
      ng-app/src/App.svelte
  22. 4
      ng-app/src/api.ts
  23. 2
      ng-app/src/apps/AutomergeEditor.svelte
  24. 2
      ng-app/src/apps/AutomergeJsonSource.svelte
  25. 2
      ng-app/src/apps/AutomergeViewer.svelte
  26. 2
      ng-app/src/apps/CodeMirrorEditor.svelte
  27. 36
      ng-app/src/apps/ContainerView.svelte
  28. 4
      ng-app/src/apps/MdSource.svelte
  29. 5
      ng-app/src/apps/MilkDownEditor.svelte
  30. 4
      ng-app/src/apps/PostMdViewer.svelte
  31. 2
      ng-app/src/apps/ProseMirrorEditor.svelte
  32. 2
      ng-app/src/apps/ProseMirrorViewer.svelte
  33. 6
      ng-app/src/apps/SparqlQueryEditor.svelte
  34. 2
      ng-app/src/apps/SparqlUpdateEditor.svelte
  35. 2
      ng-app/src/apps/TextViewer.svelte
  36. 2
      ng-app/src/apps/TurtleViewer.svelte
  37. 2
      ng-app/src/apps/XmlSource.svelte
  38. 2
      ng-app/src/apps/YArrayEditor.svelte
  39. 2
      ng-app/src/apps/YArraySource.svelte
  40. 2
      ng-app/src/apps/YArrayViewer.svelte
  41. 3
      ng-app/src/apps/YMapEditor.svelte
  42. 2
      ng-app/src/apps/YMapSource.svelte
  43. 3
      ng-app/src/apps/YMapViewer.svelte
  44. 2
      ng-app/src/apps/automerge/ABoolean.svelte
  45. 2
      ng-app/src/apps/automerge/ACounter.svelte
  46. 2
      ng-app/src/apps/automerge/ADate.svelte
  47. 2
      ng-app/src/apps/automerge/AList.svelte
  48. 2
      ng-app/src/apps/automerge/AMap.svelte
  49. 2
      ng-app/src/apps/automerge/ANumber.svelte
  50. 2
      ng-app/src/apps/automerge/AString.svelte
  51. 2
      ng-app/src/apps/automerge/AValue.svelte
  52. 2
      ng-app/src/apps/automerge/utils.ts
  53. 81
      ng-app/src/classes.ts
  54. 2
      ng-app/src/lib/CenteredLayout.svelte
  55. 6
      ng-app/src/lib/Document.svelte
  56. 125
      ng-app/src/lib/FullLayout.svelte
  57. 2
      ng-app/src/lib/Home.svelte
  58. 2
      ng-app/src/lib/Install.svelte
  59. 2
      ng-app/src/lib/Login.svelte
  60. 2
      ng-app/src/lib/MobileBottomBar.svelte
  61. 2
      ng-app/src/lib/MobileBottomBarItem.svelte
  62. 2
      ng-app/src/lib/NoWallet.svelte
  63. 2
      ng-app/src/lib/Pane.svelte
  64. 2
      ng-app/src/lib/Test.svelte
  65. 2
      ng-app/src/lib/components/CopyToClipboard.svelte
  66. 2
      ng-app/src/lib/components/Logo.svelte
  67. 2
      ng-app/src/lib/components/MenuItem.svelte
  68. 2
      ng-app/src/lib/components/Message.svelte
  69. 2
      ng-app/src/lib/components/NavBar.svelte
  70. 2
      ng-app/src/lib/components/PaneHeader.svelte
  71. 2
      ng-app/src/lib/components/PasswordInput.svelte
  72. 2
      ng-app/src/lib/components/Spinner.svelte
  73. 12
      ng-app/src/lib/icons/DataClassIcon.svelte
  74. 2
      ng-app/src/lib/icons/DeviceIcon.svelte
  75. 2
      ng-app/src/lib/icons/NavIcon.svelte
  76. 2
      ng-app/src/lib/icons/ZeraIcon.svelte
  77. 2
      ng-app/src/lib/panes/Files.svelte
  78. 2
      ng-app/src/lib/panes/History.svelte
  79. 2
      ng-app/src/lib/panes/history/LICENSE.md
  80. 70
      ng-app/src/lib/popups/Header.svelte
  81. 2
      ng-app/src/lib/popups/Signature.svelte
  82. 17
      ng-app/src/locales/en.json
  83. 2
      ng-app/src/main-web.ts
  84. 2
      ng-app/src/main.ts
  85. 2
      ng-app/src/routes/AccountInfo.svelte
  86. 2
      ng-app/src/routes/Home.svelte
  87. 2
      ng-app/src/routes/Install.svelte
  88. 2
      ng-app/src/routes/Invitation.svelte
  89. 2
      ng-app/src/routes/NURI.svelte
  90. 2
      ng-app/src/routes/NotFound.svelte
  91. 2
      ng-app/src/routes/ScanQR.svelte
  92. 2
      ng-app/src/routes/Shared.svelte
  93. 2
      ng-app/src/routes/Site.svelte
  94. 2
      ng-app/src/routes/Test.svelte
  95. 2
      ng-app/src/routes/User.svelte
  96. 2
      ng-app/src/routes/UserRegistered.svelte
  97. 2
      ng-app/src/routes/WalletCreate.svelte
  98. 6
      ng-app/src/routes/WalletInfo.svelte
  99. 44
      ng-app/src/routes/WalletLogin.svelte
  100. 2
      ng-app/src/routes/WalletLoginQr.svelte
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,3 +1,7 @@
liberapay: nextgraph
ko_fi: nextgraph
custom: ["https://donate.stripe.com/8wMcOE3NI2B69NKeUU", "https://pay.vivawallet.com/par-le-peuple", "https://nextgraph.org/donate"]
custom:
[
"https://donate.stripe.com/8wMcOE3NI2B69NKeUU",
"https://nextgraph.org/donate",
]

@ -6,6 +6,16 @@ Access the sub-sections directly :
## App
### App [0.1.1-alpha] - 2024-09-02
#### Added
- edit title and intro
#### Fixed
- bug doc not saved when back navigation
### App [0.1.0-preview.8] - 2024-08-21
#### Added
@ -64,6 +74,8 @@ Access the sub-sections directly :
#### Added
- js & nodejs : fetch_header
- js & nodejs : update_header
- js & nodejs : signature_status
- js & nodejs : signed_snapshot_request
- js & nodejs : signature_request
@ -116,6 +128,8 @@ Access the sub-sections directly :
## Broker
### Broker [0.1.1-alpha] - 2024-09-02
### Broker [0.1.0-preview.8] - 2024-08-21
#### Added
@ -156,6 +170,8 @@ Access the sub-sections directly :
## CLI
### CLI [0.1.1-alpha] - 2024-09-02
### CLI [0.1.0-preview.8] - 2024-08-21
#### Added

35
Cargo.lock generated

@ -3224,7 +3224,7 @@ checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
[[package]]
name = "nextgraph"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"async-once-cell",
"async-std",
@ -3252,7 +3252,7 @@ dependencies = [
[[package]]
name = "ng-app"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"async-std",
"nextgraph",
@ -3290,7 +3290,7 @@ dependencies = [
[[package]]
name = "ng-broker"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"async-std",
"async-trait",
@ -3315,7 +3315,7 @@ dependencies = [
[[package]]
name = "ng-client-ws"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"async-std",
"async-trait",
@ -3334,7 +3334,7 @@ dependencies = [
[[package]]
name = "ng-net"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"async-recursion",
"async-std",
@ -3364,7 +3364,7 @@ dependencies = [
[[package]]
name = "ng-oxigraph"
version = "0.4.0-alpha.7-ngpreview7"
version = "0.4.0-alpha.7-ngalpha"
dependencies = [
"base64-url",
"codspeed-criterion-compat",
@ -3395,7 +3395,7 @@ dependencies = [
[[package]]
name = "ng-repo"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"base64-url",
"blake3",
@ -3429,8 +3429,8 @@ dependencies = [
[[package]]
name = "ng-rocksdb"
version = "0.21.0-ngpreview.4"
source = "git+https://git.nextgraph.org/NextGraph/rust-rocksdb.git?branch=master#f1ce2e345f3d729350a02bcffb47c526674edd85"
version = "0.21.0-ngpreview.6"
source = "git+https://git.nextgraph.org/NextGraph/rust-rocksdb.git?branch=master#75ee95166954e6ec67a229d5697b2319dd02efc6"
dependencies = [
"bindgen",
"bzip2-sys",
@ -3444,7 +3444,7 @@ dependencies = [
[[package]]
name = "ng-sdk-js"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"async-std",
"futures",
@ -3471,7 +3471,7 @@ dependencies = [
[[package]]
name = "ng-storage-rocksdb"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"ng-repo",
"ng-rocksdb",
@ -3499,7 +3499,7 @@ dependencies = [
[[package]]
name = "ng-verifier"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"async-std",
"async-trait",
@ -3507,6 +3507,7 @@ dependencies = [
"either",
"futures",
"getrandom 0.2.10",
"lazy_static",
"ng-net",
"ng-oxigraph",
"ng-repo",
@ -3523,7 +3524,7 @@ dependencies = [
[[package]]
name = "ng-wallet"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"aes-gcm-siv",
"argon2",
@ -3550,7 +3551,7 @@ dependencies = [
[[package]]
name = "ngaccount"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"anyhow",
"duration-str",
@ -3568,7 +3569,7 @@ dependencies = [
[[package]]
name = "ngcli"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"async-std",
"blake3",
@ -3588,7 +3589,7 @@ dependencies = [
[[package]]
name = "ngd"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"addr",
"async-std",
@ -3607,7 +3608,7 @@ dependencies = [
[[package]]
name = "ngone"
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
dependencies = [
"base64-url",
"bytes",

@ -19,7 +19,7 @@ members = [
default-members = [ "nextgraph", "ngcli", "ngd" ]
[workspace.package]
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
edition = "2021"
rust-version = "1.74.0"
license = "MIT/Apache-2.0"

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy

@ -60,7 +60,8 @@ Licensed under either of
---
NextGraph received funding through the [NGI Assure Fund](https://nlnet.nl/project/NextGraph/index.html), a fund established by [NLnet](https://nlnet.nl/) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu/) programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 957073.
NextGraph received funding through the [NGI Assure Fund](https://nlnet.nl/assure) and the [NGI Zero Commons Fund](https://nlnet.nl/commonsfund/), both funds established by [NLnet](https://nlnet.nl/) Foundation with financial support from the European Commission's [Next Generation Internet](https://ngi.eu/) programme, under the aegis of DG Communications Networks, Content and Technology under grant agreements No 957073 and No 101092990, respectively.
[rustc-image]: https://img.shields.io/badge/rustc-1.74+-blue.svg
[license-image]: https://img.shields.io/badge/license-Apache2.0-blue.svg

@ -1,6 +1,6 @@
# Release 0.1.0-preview.8
# Release 0.1.1-alpha
_21 August 2024_
_02 September 2024_
This release is not stable and should not be used for any productive work or to store personal documents. This release is meant as a **preview** of what NextGraph can do as of today and hints at its future potential.
@ -10,13 +10,9 @@ If you previously installed any NextGraph app on your device, please uninstall i
## App
Please read the :
Please read the [Getting started](https://docs.nextgraph.org/en/getting-started) guide.
- [Getting started](https://docs.nextgraph.org/en/getting-started) guide.
- list of [features](https://docs.nextgraph.org/en/features).
- the [CRDTs page](https://docs.nextgraph.org/en/framework/crdts) in the framework docs.
[changelog](CHANGELOG.md#app-0-1-0-preview-8-2024-08-21)
[changelog](CHANGELOG.md#app-0-1-1-alpha-2024-09-02)
## SDK
@ -28,18 +24,17 @@ The SDK for is not documented yet.
The `ngd` daemon is release with the basic features listed in `ngd --help`. More documentation will come soon
[changelog](CHANGELOG.md#broker-0-1-0-preview-8-2024-08-21)
[changelog](CHANGELOG.md#broker-0-1-1-alpha-2024-09-02)
## CLI
The `ngcli` daemon is release with the basic features listed in `ngcli --help`. More documentation will come soon.
[changelog](CHANGELOG.md#cli-0-1-0-preview-8-2024-08-21)
[changelog](CHANGELOG.md#cli-0-1-1-alpha-2024-09-02)
## Limitations of this release
- you cannot share documents with other users. Everything is ready for this internally, but there is still some wiring to do that will take some more time.
- the Rich text editors (both for normal Post/Article and in Markdown) do not let you insert images nor links to other documents.
- your documents listed in your 3 stores do not display any title or content type, making it difficult to understand which document is which by just reading the 7-character ID of the documents. This will be addressed very quickly, as soon as the "Header branch" feature will be implemented. For the same reason (lack of this feature), and in the web-app only, when you will have created many docs with many modifications, the loading of your app can take some time because it is loading all the content of all the docs at startup. The native apps are already working well and do not suffer from this caveat. For the web-app, it is not the intended behaviour of course, but we need the "Header branch" feature to fix this.
- The webapp has some limitation for now when it is offline, because it doesn't have a UserStorage. it works differently than the native apps, as it has to replay all the commits at every load. This will stay like that for now, as the feature "Web UserStorage" based on IndexedDB will take some time to be coded.
- JSON-LD isn't ready yet as we need the "Context branch" feature in order to enter the list of ontologies each document is based on.

@ -2,7 +2,7 @@
name = "nextgraph"
description = "NextGraph client library. Nextgraph is a decentralized, secure and local-first web 3.0 ecosystem based on Semantic Web and CRDTs"
categories = ["asynchronous","text-editors","web-programming","development-tools","database-implementations"]
version = "0.1.0-preview.8"
version = "0.1.1-alpha"
edition.workspace = true
license.workspace = true
authors.workspace = true
@ -32,14 +32,14 @@ whoami = "1.5.1"
qrcode = { version = "0.14.1", default-features = false, features = ["svg"] }
svg2pdf = { version = "0.11.0", default-features = false }
pdf-writer = "0.10.0"
ng-repo = { path = "../ng-repo", version = "0.1.0-preview.8" }
ng-net = { path = "../ng-net", version = "0.1.0-preview.8" }
ng-wallet = { path = "../ng-wallet", version = "0.1.0-preview.8" }
ng-client-ws = { path = "../ng-client-ws", version = "0.1.0-preview.8" }
ng-verifier = { path = "../ng-verifier", version = "0.1.0-preview.8" }
ng-repo = { path = "../ng-repo", version = "0.1.1-alpha" }
ng-net = { path = "../ng-net", version = "0.1.1-alpha" }
ng-wallet = { path = "../ng-wallet", version = "0.1.1-alpha" }
ng-client-ws = { path = "../ng-client-ws", version = "0.1.1-alpha" }
ng-verifier = { path = "../ng-verifier", version = "0.1.1-alpha" }
[target.'cfg(all(not(target_family = "wasm"),not(docsrs)))'.dependencies]
ng-storage-rocksdb = { path = "../ng-storage-rocksdb", version = "0.1.0-preview.8" }
ng-storage-rocksdb = { path = "../ng-storage-rocksdb", version = "0.1.1-alpha" }
[[example]]
name = "in_memory"

@ -43,7 +43,7 @@ A tokio-based version (as a feature) might be available in the future.
```toml
[dependencies]
nextgraph = "0.1.0-preview.8"
nextgraph = "0.1.1-alpha"
async-std = "1.12.0"
```
@ -72,7 +72,8 @@ additional terms or conditions.
---
NextGraph received funding through the [NGI Assure Fund](https://nlnet.nl/project/NextGraph/index.html), a fund established by [NLnet](https://nlnet.nl/) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu/) programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 957073.
NextGraph received funding through the [NGI Assure Fund](https://nlnet.nl/assure) and the [NGI Zero Commons Fund](https://nlnet.nl/commonsfund/), both funds established by [NLnet](https://nlnet.nl/) Foundation with financial support from the European Commission's [Next Generation Internet](https://ngi.eu/) programme, under the aegis of DG Communications Networks, Content and Technology under grant agreements No 957073 and No 101092990, respectively.
[rustc-image]: https://img.shields.io/badge/rustc-1.74+-blue.svg
[license-image]: https://img.shields.io/badge/license-Apache2.0-blue.svg

@ -1,4 +1,4 @@
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,4 +1,4 @@
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,4 +1,4 @@
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,4 +1,4 @@
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -1819,7 +1819,7 @@ lazy_static! {
server_type: BrokerServerTypeV0::Domain("nextgraph.eu".to_string()),
can_verify: false,
can_forward: false,
peer_id: ng_repo::utils::decode_key("BVboIbTZzSgRzjtNSc0do8Uw2YlKk8m-4ePZ6CJkjgEA")
peer_id: ng_repo::utils::decode_key("qCDCdmh39BccRrIzuxiyGY7r2012mFeUmMV57-RbB-cA")
.unwrap(),
};
}

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -116,19 +116,24 @@
</div>
<script>
const supported = (() => {
if (RegExp().hasIndices === undefined) return false;
if (RegExp().hasIndices === undefined) {console.log("no RegExp().hasIndices");return false;}
try {
if (Worker === undefined) return false;
new Worker(URL.createObjectURL(new Blob(['console.log("webworker ok");'], {type: 'application/javascript'})));
if (Worker === undefined) {console.log("no Worker");return false;}
new Worker(URL.createObjectURL(new Blob([';'], {type: 'application/javascript'})));
if (typeof WebAssembly === "object"
&& typeof WebAssembly.instantiate === "function") {
const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));
if (module instanceof WebAssembly.Module)
return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;
else {
console.log("no WebAssembly module");
}
}
} catch (e) {
{console.log(e);return false;}
}
console.log("no WebAssembly");
return false;
})();
if (!supported ) {

@ -1,16 +1,16 @@
{
"name": "ng-app",
"private": true,
"version": "0.1.0-preview.8",
"version": "0.1.1-alpha",
"type": "module",
"scripts": {
"dev": "shx cp index-native.html index.html && vite",
"webdev": "shx cp index-web.html index.html && cross-env NG_APP_WEB=1 TAURI_DEBUG=1 vite",
"webbuild": "shx cp index-web.html index.html && cross-env NG_APP_WEB=1 vite build && rm -f ./dist-web/assets/*.svg && tar --exclude .DS_Store -zcvf dist-web.tar.gz dist-web",
"webfilebuild": "shx cp index-web.html index.html && cross-env NG_APP_WEB=1 NG_APP_FILE=1 vite build && node prepare-app-file.cjs && rm -rf ./dist-file/assets && tar --exclude .DS_Store -zcvf dist-file.tar.gz dist-file",
"webbuild": "shx cp index-web.html index.html && cross-env NG_APP_WEB=1 vite build && shx rm -f ./dist-web/assets/*.svg && tar --exclude .DS_Store -zcvf dist-web.tar.gz dist-web",
"webfilebuild": "shx cp index-web.html index.html && cross-env NG_APP_WEB=1 NG_APP_FILE=1 vite build && node prepare-app-file.cjs && shx rm -rf ./dist-file/assets && tar --exclude .DS_Store -zcvf dist-file.tar.gz dist-file",
"webfilebuilddebug": "shx cp index-web.html index.html && cross-env NG_APP_WEB=1 NG_APP_FILE=1 TAURI_DEBUG=1 vite build -m debug",
"build": "shx cp index-native.html index.html && vite build && shx rm -f ./dist/assets/*.svg",
"buildfile": "shx cp index-native.html index.html && cross-env NG_APP_FILE=1 vite build && rm -rf ./dist/assets && tar --exclude .DS_Store -zcvf dist.tar.gz dist",
"buildfile": "shx cp index-native.html index.html && cross-env NG_APP_FILE=1 vite build && shx rm -rf ./dist/assets && tar --exclude .DS_Store -zcvf dist.tar.gz dist",
"preview": "vite preview",
"check": "svelte-check --tsconfig ./tsconfig.json",
"tauri": "tauri"
@ -68,7 +68,7 @@
"immutable-json-patch": "^6.0.1",
"katex": "^0.16.11",
"lodash.debounce": "4.0.8",
"ng-sdk-js": "workspace:^0.1.0-preview.8",
"ng-sdk-js": "workspace:^0.1.1-alpha",
"prism-themes": "^1.9.0",
"prosemirror-model": "^1.7.1",
"prosemirror-state": "^1.2.3",

@ -1,4 +1,4 @@
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -551,6 +551,53 @@ async fn branch_history(session_id: u64, nuri: String) -> Result<AppHistoryJs, S
}
}
#[tauri::command(rename_all = "snake_case")]
async fn update_header(
session_id: u64,
nuri: String,
title: Option<String>,
about: Option<String>,
) -> Result<(), String> {
let nuri = NuriV0::new_from(&nuri).map_err(|e| e.to_string())?;
let request = AppRequest::V0(AppRequestV0 {
command: AppRequestCommandV0::new_header(),
nuri,
payload: Some(AppRequestPayload::new_header(title, about)),
session_id,
});
let res = nextgraph::local_broker::app_request(request)
.await
.map_err(|e: NgError| e.to_string())?;
if let AppResponse::V0(AppResponseV0::Error(e)) = res {
Err(e)
} else {
Ok(())
}
}
#[tauri::command(rename_all = "snake_case")]
async fn fetch_header(session_id: u64, nuri: String) -> Result<AppHeader, String> {
let nuri = NuriV0::new_from(&nuri).map_err(|e| e.to_string())?;
let request = AppRequest::V0(AppRequestV0 {
command: AppRequestCommandV0::new_fetch_header(),
nuri,
payload: None,
session_id,
});
let res = nextgraph::local_broker::app_request(request)
.await
.map_err(|e: NgError| e.to_string())?;
match res {
AppResponse::V0(AppResponseV0::Error(e)) => Err(e),
AppResponse::V0(AppResponseV0::Header(h)) => Ok(h),
_ => Err("invalid response".to_string()),
}
}
#[tauri::command(rename_all = "snake_case")]
async fn sparql_update(
session_id: u64,
@ -1023,6 +1070,8 @@ impl AppBuilder {
signature_status,
signature_request,
signed_snapshot_request,
update_header,
fetch_header,
])
.run(tauri::generate_context!())
.expect("error while running tauri application");

@ -1,4 +1,4 @@
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,4 +1,4 @@
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -8,7 +8,7 @@
},
"package": {
"productName": "Nextgraph",
"version": "0.1.0-preview.8"
"version": "0.1.1-alpha"
},
"tauri": {
"bundle": {

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,4 +1,4 @@
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -53,6 +53,8 @@ const mapping = {
"signature_status": ["session_id", "nuri"],
"signed_snapshot_request": ["session_id", "nuri"],
"signature_request": ["session_id", "nuri"],
"update_header": ["session_id","nuri","title","about"],
"fetch_header": ["session_id", "nuri"]
}

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -11,8 +11,7 @@
<script lang="ts">
import {
} from "../store";
import ng from "../api";
import { link } from "svelte-spa-router";
import { Button, Progressbar, Spinner, Alert } from "flowbite-svelte";
import{ PlusCircle } from "svelte-heros-v2";
@ -20,9 +19,16 @@
import {
in_memory_discrete, open_viewer, set_viewer, set_editor, set_view_or_edit, cur_tab_branch_class, cur_tab_doc_can_edit, cur_tab
} from "../tab";
import DataClassIcon from "../lib/icons/DataClassIcon.svelte";
import {
openModalCreate
openModalCreate,
sparql_query,
active_session
} from "../store";
import {
Clipboard
} from "svelte-heros-v2";
export let commits;
function contained(graph) {
@ -30,23 +36,41 @@
for (const g of graph) {
if (g.substring(57,90) === "http://www.w3.org/ns/ldp#contains") {
let nuri = g.substring(93,146);
let repo = nuri;
nuri = nuri + ":" + $cur_tab.store.overlay;
let hash = nuri.substring(9,16);
ret.push({nuri,hash});
ret.push({nuri,hash,repo});
}
}
ret.sort((a, b) => a.hash.localeCompare(b.hash));
return ret;
}
async function fetch_header(repo) {
try {
let res = await ng.fetch_header($active_session.session_id, repo);
return res;
}catch(e){
console.error(e);
return {};
}
}
const create = () => {
openModalCreate();
}
const config = {
class: "mr-2 w-6 h-6 shrink-0 focus:outline-none"
}
</script>
<div class="flex-col p-5">
{#each contained(commits.graph) as doc}
<div class="flex font-mono mb-3"> <a use:link href="/{doc.nuri}">{doc.hash}</a> </div>
{#await fetch_header(doc.repo)}
<div class="flex"> <Clipboard tabindex="-1" class="mr-2 w-6 h-6 shrink-0 focus:outline-none"/><div class="flex font-mono mb-3"> <a use:link href="/{doc.nuri}">{doc.hash}</a> </div> </div>
{:then header}
<div class="flex" title="{header.about || ''}"> {#if header.class}<DataClassIcon {config} dataClass={header.class}/>{:else}<Clipboard tabindex="-1" class="mr-2 w-6 h-6 shrink-0 focus:outline-none"/>{/if}<div class="flex font-mono mb-3"> <a use:link href="/{doc.nuri}">{header.title || doc.hash}</a> </div></div>
{/await}
{/each}
{#if commits.graph.length == 0 || contained(commits.graph).length == 0}
<p>{$t("doc.empty_container")}</p>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -104,6 +104,7 @@
}
onMount(async ()=>{
if (editor) await editor.destroy();
await setup();
});
@ -112,6 +113,7 @@
ydoc.destroy();
commits.discrete?.deregisterOnUpdate();
if (editor) await editor.destroy();
editor = undefined;
});

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -181,7 +181,7 @@
}
onMount(async ()=>{
if (editor) await editor.destroy();
await setup();
});
@ -189,6 +189,7 @@
onDestroy(async ()=>{
ydoc.destroy();
if (editor) await editor.destroy();
editor = undefined;
});
</script>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -129,6 +129,7 @@
}
onMount(async ()=>{
if (editor) await editor.destroy();
await setup();
});
@ -137,6 +138,7 @@
ydoc.destroy();
try {
if (editor) await editor.destroy();
editor = undefined;
} catch(e) {
console.log(e);
}

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -55,7 +55,7 @@
await reset_toasts();
results = await sparql_query($in_memory_discrete, union);
} catch(e) {
console.log(e)
console.error(e)
toast_error(display_error(e));
}
}
@ -112,7 +112,7 @@
{#each results.results.bindings as row}
<TableBodyRow>
{#each results.head.vars as variable}
<TableBodyCell class="px-6 py-4 whitespace-break-spaces font-medium">{row[variable].value}</TableBodyCell>
<TableBodyCell class="px-6 py-4 whitespace-break-spaces font-medium">{#if row[variable]} {row[variable].value }{/if}</TableBodyCell>
{/each}
</TableBodyRow>
{/each}

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -254,6 +254,7 @@
onDestroy(async ()=>{
ydoc.destroy();
await editor.destroy();
editor = undefined;
});
function onRenderMenu(items, context) {

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,5 +1,5 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -125,6 +125,7 @@
onDestroy(async ()=>{
ydoc.destroy();
await editor.destroy();
editor = undefined;
});
const edit = () => {

@ -1,6 +1,6 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,6 +1,6 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,6 +1,6 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,6 +1,6 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,6 +1,6 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,6 +1,6 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,6 +1,6 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,6 +1,6 @@
<!--
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,4 +1,4 @@
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>

@ -1,4 +1,4 @@
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// Copyright (c) 2022-2025 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
@ -12,11 +12,11 @@
// "data:graph", "data:json", "data:array", "data:map", "data:xml", "data:table", "data:collection", "data:board", "data:grid", "data:geomap",
// "e:email", "e:web", "e:http://[url of class in ontology]", "e:rdf" (read-only cache of RDF fetched from web2.0)
// "mc:text", "mc:link", "mc:card", "mc:pad",
// "doc:diagram","doc:chart", "doc:pdf", "doc:odf", "doc:latex", "doc:ps", "doc:music", "doc:maths", "doc:chemistry", "doc:braille", "doc:ancientscript",
// "diagram","chart", "doc:pdf", "doc:odf", "doc:latex", "doc:ps", "doc:music", "doc:maths", "doc:chemistry", "doc:braille", "doc:ancientscript",
// "media:image", "media:reel", "media:album", "media:video", "media:audio", "media:song", "media:subtitle", "media:overlay",
// "social:channel", "social:stream", "social:contact", "social:event", "social:calendar", "social:scheduler", "social:reaction", "social:chatroom",
// "prod:task", "prod:project", "prod:issue", "prod:form", "prod:filling", "prod:cad", "prod:slides", "prod:question", "prod:answer", "prod:poll", "prod:vote"
// "file", "file:iana:*", "file:gimp", "file:inkscape", "file:kdenlive", "file:blender", "file:openscad", "file:lyx", "file:scribus", "file:libreoffice", "file:audacity", "file:godot"
// "file", "file:iana:*", "file:gimp", "file:inkscape", "file:kdenlive", "file:blender", "file:openscad", "file:lyx", "file:scribus", "file:libreoffice", "file:audacity", "file:godot", "file:obsstudio", "file:ardor", "file:krita"
// application/vnd.api+json
@ -165,35 +165,24 @@ export const official_classes = {
},
"ng:compat": ["rdfs:Class"],
},
"schema:rdfs": {
"schema": { // display with https://github.com/VisualDataWeb/WebVOWL
"ng:crdt": "Graph",
"ng:n": "Schema - RDFS",
"ng:a": "Define the Schema, Ontology or Vocabulary for your data and the relations between them, with RDFS",
"ng:o": "n:g:z:json_ld_viewer", // default viewer
"ng:n": "Schema - RDFS/OWL",
"ng:a": "Define the Schema, Ontology or Vocabulary for your data and the relations between them, with RDFS and/or OWL",
"ng:o": "n:g:z:ontology_viewer", // default viewer
"ng:w": "n:g:z:ontology_editor", // default editor
"ng:x": {
"rdfs":true,
},
"ng:include": ["data:graph"],
"ng:compat": ["rdfs:*","class"],
},
"schema:owl": { // display with https://github.com/VisualDataWeb/WebVOWL
"ng:crdt": "Graph",
"ng:n": "Schema - OWL",
"ng:a": "Define the Schema, Ontology or Vocabulary for your data and the relations between them, with OWL",
"ng:o": "n:g:z:owl_viewer", // default viewer
"ng:w": "n:g:z:ontology_editor", // default editor
"ng:x": {
"owl":true,
},
"ng:include": ["data:graph"],
"ng:compat": ["owl:Ontology"],
"ng:compat": ["rdfs:*","class","owl:Ontology"],
},
"schema:shacl": {
"ng:crdt": "Graph",
"ng:n": "Schema - SHACL",
"ng:a": "Define the Schema, Ontology or Vocabulary for your data and the relations between them, with SHACL",
"ng:o": "n:g:z:json_ld_viewer", // default viewer
"ng:a": "Define the rules for your data with SHACL",
"ng:o": "n:g:z:ontology_viewer", // default viewer
"ng:w": "n:g:z:ontology_editor", // default editor
"ng:x": {
"sh":true,
@ -204,8 +193,8 @@ export const official_classes = {
"schema:shex": {
"ng:crdt": "Graph",
"ng:n": "Schema - SHEX",
"ng:a": "Define the Schema, Ontology or Vocabulary for your data and the relations between them, with SHEX",
"ng:o": "n:g:z:json_ld_viewer", // default viewer
"ng:a": "Define the rules for your data with SHEX",
"ng:o": "n:g:z:ontology_viewer", // default viewer
"ng:w": "n:g:z:ontology_editor", // default editor
"ng:x": {
"shex":true,
@ -426,13 +415,13 @@ export const official_classes = {
"ng:n": "Link",
"ng:a": "Link to a document. kept in Magic Carpet",
},
"plato/card": {
"plato:card": {
"ng:crdt": "Graph",
"ng:n": "Card",
"ng:a": "Card representation of a document",
"ng:o": "n:g:z:card",
},