graphdb-workbench-tests 3.0.2 → 3.1.0-RC1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/.editorconfig +17 -0
  2. package/.nycrc +10 -0
  3. package/cypress-flaky.config.js +15 -4
  4. package/cypress-legacy.config.js +40 -0
  5. package/cypress-security.config.js +40 -0
  6. package/cypress.config.js +8 -4
  7. package/{integration-flaky → e2e-flaky}/explore/visual.graph.spec.js +4 -1
  8. package/{integration-flaky → e2e-flaky}/import/import-server-files-operations.spec.js +1 -1
  9. package/e2e-flaky/import/import-user-data-url.spec.js +63 -0
  10. package/{integration-flaky → e2e-flaky}/setup/sparql-template-create.js +9 -2
  11. package/{integration-flaky → e2e-flaky}/sparql-editor/yasr/table-plugin.spec.js +2 -1
  12. package/{integration → e2e-legacy}/cluster/edit-cluster-nodes-modal.spec.js +44 -0
  13. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository-without-class-hierarchy.spec.js +42 -0
  14. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository.spec.js +43 -0
  15. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-without-selected-repository.spec.js +30 -0
  16. package/{integration/explore → e2e-legacy/explore/class-hierarchy}/class.hierarchy.spec.js +1 -1
  17. package/e2e-legacy/explore/class-relationships/class-relationships-repository-with-data.spec.js +42 -0
  18. package/e2e-legacy/explore/class-relationships/class-relationships-with-selected-repository.spec.js +39 -0
  19. package/e2e-legacy/explore/class-relationships/class-relationships-without-selected-repository.spec.js +21 -0
  20. package/{integration/explore/class.relationships.spec.js → e2e-legacy/explore/class-relationships/class-relationships.spec.js} +18 -50
  21. package/{integration/explore → e2e-legacy/explore/graphs-overview}/graphs.overview.spec.js +4 -4
  22. package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-with-selected-repository.spec.js +44 -0
  23. package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-without-selected-repository.spec.js +32 -0
  24. package/e2e-legacy/explore/similarity-index/similarity-index-with-repository.spec.js +38 -0
  25. package/e2e-legacy/explore/similarity-index/similarity-index-without-repository.spec.js +21 -0
  26. package/{integration → e2e-legacy}/explore/visual-graph/graphs-config.spec.js +1 -6
  27. package/e2e-legacy/explore/visual-graph/visual-graph-with-selected-repository.js +38 -0
  28. package/e2e-legacy/explore/visual-graph/visual-graph-without-selected-repository.js +21 -0
  29. package/{integration → e2e-legacy}/explore/visual-graph/visual.graph.spec.js +2 -7
  30. package/{integration → e2e-legacy}/graphql/create-graphql-endpoint.spec.js +0 -2
  31. package/{integration → e2e-legacy}/graphql/edit-graphql-enpoint.spec.js +1 -1
  32. package/{integration → e2e-legacy}/graphql/filter-graphql-endpoints-on-management-view.spec.js +1 -1
  33. package/e2e-legacy/graphql/graphql-endpoint management-without-selected-repository.spec.js +21 -0
  34. package/{integration → e2e-legacy}/graphql/graphql-endpoint-management-view.spec.js +4 -4
  35. package/e2e-legacy/graphql/graphql-endpoint-management-with-endpoints.spec.js +43 -0
  36. package/e2e-legacy/graphql/graphql-endpoint-management-with-selected-repository.spec.jsx +39 -0
  37. package/e2e-legacy/graphql/graphql-playground-with-endpoints.spec.js +40 -0
  38. package/e2e-legacy/graphql/graphql-playground-with-selected-repository.spec.js +38 -0
  39. package/e2e-legacy/graphql/graphql-playground-without-selected-repository.spec.js +22 -0
  40. package/{integration → e2e-legacy}/graphql/graphql-playground.spec.js +1 -1
  41. package/{integration → e2e-legacy}/graphql/import-graphql-endpoint-definitions.spec.js +0 -6
  42. package/e2e-legacy/help/guides/guides-with-repository.spec.js +32 -0
  43. package/e2e-legacy/help/guides/guides-without-repository.spec.js +20 -0
  44. package/{integration → e2e-legacy/help}/guides/movies-interactive-guide.spec.js +3 -3
  45. package/{integration → e2e-legacy/help}/guides/star-wars-interactive-guide.js +3 -2
  46. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-with-repository.spec.js +32 -0
  47. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-without-repository.spec.js +20 -0
  48. package/e2e-legacy/help/system-information/system-information-with-repository.spec.js +32 -0
  49. package/e2e-legacy/help/system-information/system-information-without-repository.spec.js +20 -0
  50. package/e2e-legacy/home/cookie-policy.spec.js +108 -0
  51. package/e2e-legacy/home/documentation-link.spec.js +61 -0
  52. package/{integration → e2e-legacy}/home/google-analytics.spec.js +4 -6
  53. package/e2e-legacy/home/home-page-with-selected-repository.spec.js +69 -0
  54. package/e2e-legacy/home/home-page-without-repositories.spec.js +87 -0
  55. package/e2e-legacy/home/home-page-without-selected-repository.spec.js +59 -0
  56. package/{integration → e2e-legacy}/home/language-change.spec.js +2 -2
  57. package/e2e-legacy/home/rdf-resource-search.spec.js +148 -0
  58. package/e2e-legacy/home/view-resource-autocomplete.spec.js +65 -0
  59. package/{integration → e2e-legacy}/import/import-user-data-file-upload.spec.js +16 -10
  60. package/{integration → e2e-legacy}/import/import-user-data-text-snippet.spec.js +0 -2
  61. package/{integration → e2e-legacy}/import/import-user-data-url.spec.js +0 -23
  62. package/{integration → e2e-legacy}/import/import-user-data.spec.js +9 -2
  63. package/e2e-legacy/import/initial-state/import-page-with-selected-repositor.js +51 -0
  64. package/e2e-legacy/import/initial-state/import-page-with-selected-repository-without-imported-files.js +45 -0
  65. package/e2e-legacy/import/initial-state/import-page-without-selected-repository.spec.js +28 -0
  66. package/e2e-legacy/license/license-with-repository.spec.js +113 -0
  67. package/e2e-legacy/license/license-without-repository.spec.js +103 -0
  68. package/{integration → e2e-legacy}/license/license.spec.js +4 -4
  69. package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-with-repository.spec.js +36 -0
  70. package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-without-repository.spec.js +25 -0
  71. package/{integration/monitor/monitor.backup-and-restore.spec.js → e2e-legacy/monitor/backup-and-restore/backup-and-restore.spec.js} +2 -2
  72. package/{integration → e2e-legacy}/monitor/global-operation-statuses-component.spec.js +12 -5
  73. package/e2e-legacy/monitor/query-and-updates/queries-and-updates-with-repository.spec.js +39 -0
  74. package/e2e-legacy/monitor/query-and-updates/queries-and-updates-without-repository.spec.js +21 -0
  75. package/{integration/monitor → e2e-legacy/monitor/system}/monitor.resources.spec.js +3 -2
  76. package/e2e-legacy/monitor/system/system-monitoring-with-repository.spec.js +32 -0
  77. package/e2e-legacy/monitor/system/system-monitoring-without-repository.spec.js +20 -0
  78. package/{integration → e2e-legacy}/repository/repositories.spec.js +34 -45
  79. package/{integration → e2e-legacy}/resource/resource.spec.js +16 -1
  80. package/e2e-legacy/setup/aclmanagement/acl-management-with-selected repository.spec.js +40 -0
  81. package/e2e-legacy/setup/aclmanagement/acl-management-without-repositories.spec.js +21 -0
  82. package/{integration → e2e-legacy}/setup/aclmanagement/create-rule.spec.js +1 -0
  83. package/e2e-legacy/setup/autocomplete/autocomplete-with-repository.spec.js +40 -0
  84. package/e2e-legacy/setup/autocomplete/autocomplete-without-repository.spec.js +27 -0
  85. package/{integration/setup → e2e-legacy/setup/autocomplete}/autocomplete.spec.js +5 -6
  86. package/e2e-legacy/setup/cluster/cluster-initial-state-with-cluster.spec.js +34 -0
  87. package/e2e-legacy/setup/cluster/cluster-initial-state-without-cluster.spec.js +25 -0
  88. package/e2e-legacy/setup/connectors/connectors-initial-state-with-selected-repository.spec.js +41 -0
  89. package/e2e-legacy/setup/connectors/connectors-initial-state-without-repositories.spec.js +21 -0
  90. package/e2e-legacy/setup/jdbc/jdbc-with-repository.spec.js +39 -0
  91. package/e2e-legacy/setup/jdbc/jdbc-without-repository.spec.js +27 -0
  92. package/e2e-legacy/setup/namespaces/namespaces-with-repository.spec.js +44 -0
  93. package/e2e-legacy/setup/namespaces/namespaces-without-repository.spec.js +27 -0
  94. package/{integration/setup → e2e-legacy/setup/namespaces}/namespaces.spec.js +6 -5
  95. package/e2e-legacy/setup/plugins/plugins-with-repository.spec.js +38 -0
  96. package/e2e-legacy/setup/plugins/plugins-without-repository.spec.js +28 -0
  97. package/{integration/setup → e2e-legacy/setup/plugins}/plugins.spec.js +3 -3
  98. package/e2e-legacy/setup/rdf-rank/rdf-rank-with-repository.spec.js +40 -0
  99. package/e2e-legacy/setup/rdf-rank/rdf-rank-without-repository.spec.js +30 -0
  100. package/{integration/setup → e2e-legacy/setup/rdf-rank}/rdf-rank.spec.js +1 -1
  101. package/e2e-legacy/setup/repositories/repositories-view-with-repositories.spec.js +40 -0
  102. package/e2e-legacy/setup/repositories/repositories-view-without-repositories.spec.js +28 -0
  103. package/e2e-legacy/setup/settings/my-settings-initial-state.spec.js +86 -0
  104. package/{integration/setup → e2e-legacy/setup/settings}/my-settings.spec.js +5 -75
  105. package/{integration/setup → e2e-legacy/setup/sparql-template}/sparql-template-create.js +16 -8
  106. package/e2e-legacy/setup/sparql-template/sparql-template-with-repository.spec.js +39 -0
  107. package/e2e-legacy/setup/sparql-template/sparql-template-without-repository.spec.js +29 -0
  108. package/{integration/setup → e2e-legacy/setup/sparql-template}/sparql-templates.spec.js +4 -4
  109. package/{integration/setup → e2e-legacy/setup/users-and-access}/user-and-access.spec.js +53 -19
  110. package/e2e-legacy/setup/users-and-access/users-and-access-initial-state.spec.js +25 -0
  111. package/{integration → e2e-legacy}/sparql-editor/actions/inferred-sameas.spec.js +3 -1
  112. package/{integration → e2e-legacy}/sparql-editor/saved-query/edit-query.spec.js +3 -3
  113. package/{integration → e2e-legacy}/sparql-editor/saved-query/readonly-query.spec.js +7 -13
  114. package/{integration → e2e-legacy}/sparql-editor/saved-query/share-query.spec.js +2 -0
  115. package/e2e-legacy/sparql-editor/sparql-page-with-selected-repository.spec.js +33 -0
  116. package/e2e-legacy/sparql-editor/sparql-page-without-selected-repository.spec.js +26 -0
  117. package/{integration → e2e-legacy}/ttyg/agent-list.spec.js +52 -0
  118. package/{integration → e2e-legacy}/ttyg/agent-select-menu.spec.js +24 -0
  119. package/{integration → e2e-legacy}/ttyg/chat-panel.spec.js +29 -3
  120. package/{integration → e2e-legacy}/ttyg/clone-agent.spec.js +1 -0
  121. package/{integration → e2e-legacy}/ttyg/create-agent.spec.js +7 -6
  122. package/{integration → e2e-legacy}/ttyg/create-chat.spec.js +3 -1
  123. package/e2e-legacy/ttyg/edit-agent.spec.js +169 -0
  124. package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +46 -0
  125. package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +45 -0
  126. package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +21 -0
  127. package/{integration-flaky → e2e-legacy}/ttyg/ttyg-permission.spec.js +25 -15
  128. package/{integration → e2e-legacy}/ttyg/ttyg-view.spec.js +1 -0
  129. package/e2e-security/setup/home/cookie-policy.spec.js +64 -0
  130. package/e2e-security/setup/users-and-access/create-user-permissions.spec.js +184 -0
  131. package/e2e-security/setup/users-and-access/graphql-user.spec.js +123 -0
  132. package/e2e-security/setup/users-and-access/repo-admin-role.spec.js +69 -0
  133. package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +87 -0
  134. package/e2e-security/setup/users-and-access/user-and-access.spec.js +87 -0
  135. package/e2e-security/setup/users-and-access/users-and-access-initial-state.spec.js +38 -0
  136. package/fixtures/locale-en.json +62 -19
  137. package/fixtures/repositories/free-access.json +13 -0
  138. package/fixtures/ttyg/agent/get-agent-defaults-assistant-api.json +44 -0
  139. package/fixtures/ttyg/agent/get-agent-defaults.json +2 -0
  140. package/fixtures/ttyg/agent/get-agent-list-with-incompatible-agents.json +79 -0
  141. package/fixtures/ttyg/chats/ask-question.json +12 -2
  142. package/fixtures/ttyg/chats/get-chat.json +6 -1
  143. package/npm-shrinkwrap.json +9356 -3815
  144. package/package.json +48 -42
  145. package/plugins/index.js +3 -2
  146. package/steps/application-steps.js +1 -1
  147. package/steps/base-steps.js +21 -0
  148. package/steps/class-views-steps.js +16 -0
  149. package/steps/cluster/cluster-page-steps.js +12 -2
  150. package/steps/error-steps.js +15 -3
  151. package/steps/explore/class-relationships-steps.js +64 -0
  152. package/steps/explore/graphs-overview-steps.js +21 -1
  153. package/steps/explore/similarity-indexes-steps.js +12 -2
  154. package/steps/graphql/graphql-endpoint-management-steps.js +2 -2
  155. package/steps/guides/guide-steps.js +20 -1
  156. package/steps/home-steps.js +158 -48
  157. package/steps/import/import-steps.js +11 -15
  158. package/steps/import/import-user-data-steps.js +4 -0
  159. package/steps/language-selector-steps.js +2 -2
  160. package/steps/license-steps.js +91 -9
  161. package/steps/login-steps.js +14 -3
  162. package/steps/main-menu-steps.js +207 -15
  163. package/steps/modal-dialog-steps.js +20 -0
  164. package/steps/monitoring/backup-and-restore-steps.js +9 -3
  165. package/steps/monitoring/queries-and-updates-steps.js +20 -0
  166. package/steps/monitoring/system-monitoring-steps.js +40 -0
  167. package/steps/operations-statuses-component-steps.js +5 -10
  168. package/steps/rdf-resource-search-steps.js +55 -0
  169. package/steps/repository-selector-steps.js +3 -3
  170. package/steps/repository-steps.js +18 -12
  171. package/steps/resource/resource-steps.js +4 -0
  172. package/steps/rest-api-documentation-steps.js +15 -0
  173. package/steps/setup/autocomplete-steps.js +17 -6
  174. package/steps/setup/connectors-steps.js +19 -0
  175. package/steps/setup/jdbc-steps.js +18 -4
  176. package/steps/setup/namespace-steps.js +9 -6
  177. package/steps/setup/plugins-steps.js +11 -4
  178. package/steps/setup/rdf-rank-steps.js +22 -4
  179. package/steps/setup/settings-steps.js +100 -1
  180. package/steps/setup/sparql-templates-steps.js +19 -1
  181. package/steps/setup/user-and-access-steps.js +33 -3
  182. package/steps/system-information-steps.js +70 -0
  183. package/steps/ttyg/chat-panel-steps.js +1 -1
  184. package/steps/ttyg/ttyg-agent-settings-modal.steps.js +82 -23
  185. package/steps/ttyg/ttyg-view-steps.js +74 -8
  186. package/steps/visual-graph-steps.js +4 -0
  187. package/steps/widgets/active-repository-widget-steps.js +29 -0
  188. package/steps/widgets/license-widget-steps.js +9 -0
  189. package/steps/widgets/repository-errors-widget-steps.js +21 -0
  190. package/steps/widgets/saved-sparql-queries-widget-steps.js +9 -0
  191. package/steps/yasgui/yasr-steps.js +4 -0
  192. package/stubs/autocomplete/autocomplete-stubs.js +7 -0
  193. package/stubs/browser-stubs.js +21 -0
  194. package/stubs/environment-stubs.js +9 -1
  195. package/stubs/license-stubs.js +51 -0
  196. package/stubs/repositories/repositories-stubs.js +8 -0
  197. package/stubs/repositories-stub.js +6 -6
  198. package/stubs/saved-queries-stubs.js +5 -0
  199. package/stubs/security-stubs.js +4 -0
  200. package/stubs/ttyg/ttyg-stubs.js +19 -6
  201. package/support/commands.js +19 -0
  202. package/support/{index.js → e2e.js} +2 -1
  203. package/support/repository-commands.js +20 -4
  204. package/Dockerfile +0 -11
  205. package/integration/explore/similarity-index/similarity-index-create.spec.js +0 -333
  206. package/integration/explore/similarity-index/similarity-index.spec.js +0 -88
  207. package/integration/explore/similarity-index/similarity.spec.js +0 -628
  208. package/integration/home/cookie-policy.spec.js +0 -90
  209. package/integration/home/documentation-link.spec.js +0 -60
  210. package/integration/home/language-selector.spec.js +0 -19
  211. package/integration/home/rdf-resource-search.spec.js +0 -177
  212. package/integration/home/view-resource-autocomplete.spec.js +0 -52
  213. package/integration/home/workbench.home.spec.js +0 -30
  214. package/integration/monitor/monitor.queries.spec.js +0 -31
  215. package/integration/ttyg/edit-agent.spec.js +0 -99
  216. package/integration-flaky/setup/users-and-access/security-and-free-access.spec.js +0 -54
  217. package/{integration-flaky → e2e-flaky}/import/import-user-data-batch-operations.spec.js +0 -0
  218. package/{integration-flaky → e2e-flaky}/import/import.server.files.spec.js +0 -0
  219. package/{integration-flaky → e2e-flaky}/sparql-editor/actions/execute-update-query.spec.js +0 -0
  220. package/{integration-flaky → e2e-flaky}/sparql-editor/actions/share-query.spec.js +0 -0
  221. package/{integration-flaky → e2e-flaky}/sparql-editor/lucene-connector.spec.js +0 -0
  222. package/{integration-flaky → e2e-flaky}/sparql-editor/plugins/error-plugin.spec.js +0 -0
  223. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-multi-region.spec.js +0 -0
  224. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-nodes.spec.js +0 -0
  225. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-properties.spec.js +0 -0
  226. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration.spec.js +0 -0
  227. package/{integration → e2e-legacy}/cluster/cluster-legend.spec.js +0 -0
  228. package/{integration → e2e-legacy}/cluster/cluster-states.spec.js +0 -0
  229. package/{integration → e2e-legacy}/explore/visual-graph/visual-graph-node-labels.spec.js +0 -0
  230. package/{integration → e2e-legacy}/graphql/activate-deactivate-graphql-endpoint.spec.js +0 -0
  231. package/{integration → e2e-legacy}/graphql/delete-graphql-endpoint.spec.js +0 -0
  232. package/{integration → e2e-legacy}/graphql/export-graphql-endpoint-definition.spec.js +0 -0
  233. package/{integration → e2e-legacy}/graphql/set-default-graphql-endpoint.spec.js +0 -0
  234. package/{integration/help → e2e-legacy/help/system-information}/system-information.spec.js +0 -0
  235. package/{integration → e2e-legacy}/home/create-repository.spec.js +0 -0
  236. package/{integration → e2e-legacy}/import/import-server-files-batch-operations.spec.js +0 -0
  237. package/{integration → e2e-legacy}/import/import-server-files.spec.js +0 -0
  238. package/{integration → e2e-legacy}/import/import-user-data-settings-dialog.spec.js +0 -0
  239. package/{integration → e2e-legacy}/import/import-view.spec.js +0 -0
  240. package/{integration → e2e-legacy}/repository/attach-remote-location.spec.js +1 -1
  241. /package/{integration → e2e-legacy}/repository/ontop-repository.spec.js +0 -0
  242. /package/{integration → e2e-legacy}/repository/repository-commands.spec.js +0 -0
  243. /package/{integration → e2e-legacy}/setup/aclmanagement/delete-rule.spec.js +0 -0
  244. /package/{integration → e2e-legacy}/setup/aclmanagement/edit-rule.spec.js +0 -0
  245. /package/{integration → e2e-legacy}/setup/aclmanagement/render-rules.spec.js +0 -0
  246. /package/{integration → e2e-legacy}/setup/aclmanagement/reorder-rules.spec.js +0 -0
  247. /package/{integration → e2e-legacy}/setup/aclmanagement/revert-rules.spec.js +0 -0
  248. /package/{integration → e2e-legacy}/setup/aclmanagement/scopes.spec.js +0 -0
  249. /package/{integration → e2e-legacy}/setup/aclmanagement/update-rules.spec.js +0 -0
  250. /package/{integration → e2e-legacy}/setup/connectors-lucene.spec.js +0 -0
  251. /package/{integration → e2e-legacy}/setup/jdbc/jdbc-create.spec.js +0 -0
  252. /package/{integration → e2e-legacy}/setup/jdbc/jdbc.spec.js +0 -0
  253. /package/{integration → e2e-legacy}/sparql-editor/actions/execute-query.spec.js +0 -0
  254. /package/{integration → e2e-legacy}/sparql-editor/actions/expand-results-over-sameas.spec.js +0 -0
  255. /package/{integration → e2e-legacy}/sparql-editor/actions/include-inferred-statements.spec.js +0 -0
  256. /package/{integration → e2e-legacy}/sparql-editor/actions/save-query.spec.js +0 -0
  257. /package/{integration → e2e-legacy}/sparql-editor/actions/show-saved-queries.spec.js +0 -0
  258. /package/{integration → e2e-legacy}/sparql-editor/internationalization.spec.js +0 -0
  259. /package/{integration → e2e-legacy}/sparql-editor/saved-query/abort-query.spec.js +0 -0
  260. /package/{integration → e2e-legacy}/sparql-editor/saved-query/delete-query.spec.js +0 -0
  261. /package/{integration → e2e-legacy}/sparql-editor/sparql-editor.spec.js +0 -0
  262. /package/{integration → e2e-legacy}/sparql-editor/yasgui-tabs.spec.js +0 -0
  263. /package/{integration → e2e-legacy}/sparql-editor/yasr/download-as.spec.js +0 -0
  264. /package/{integration → e2e-legacy}/sparql-editor/yasr/pagination.spec.js +0 -0
  265. /package/{integration → e2e-legacy}/sparql-editor/yasr/table-plugin.spec.js +0 -0
  266. /package/{integration → e2e-legacy}/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +0 -0
  267. /package/{integration → e2e-legacy}/ttyg/chat-list.spec.js +0 -0
  268. /package/{integration → e2e-legacy}/ttyg/delete-agent.spec.js +0 -0
@@ -0,0 +1,87 @@
1
+ import {RepositoriesStubs} from "../../../stubs/repositories/repositories-stubs";
2
+ import {UserAndAccessSteps} from "../../../steps/setup/user-and-access-steps";
3
+ import {LoginSteps} from "../../../steps/login-steps";
4
+ import {ModalDialogSteps} from "../../../steps/modal-dialog-steps";
5
+ import ImportSteps from "../../../steps/import/import-steps";
6
+ import {MainMenuSteps} from "../../../steps/main-menu-steps";
7
+ import {RepositorySelectorSteps} from "../../../steps/repository-selector-steps";
8
+ import {ErrorSteps} from "../../../steps/error-steps";
9
+
10
+ describe('User and Access', () => {
11
+
12
+ let repositoryId1;
13
+ let repositoryId2;
14
+ const graphqlUser = 'graphqlUser';
15
+
16
+ beforeEach(() => {
17
+ cy.viewport(1280, 1000);
18
+ RepositoriesStubs.spyGetRepositories();
19
+ repositoryId1 = 'user-access-repo1-' + Date.now();
20
+ repositoryId2 = 'user-access-repo2-' + Date.now();
21
+ cy.createRepository({id: repositoryId1});
22
+ cy.createRepository({id: repositoryId2});
23
+ cy.presetRepository(repositoryId1);
24
+ UserAndAccessSteps.visit();
25
+ // Users table should be visible
26
+ UserAndAccessSteps.getUsersTable().should('be.visible');
27
+ });
28
+
29
+ afterEach(() => {
30
+ cy.loginAsAdmin().then(() => {
31
+ cy.deleteRepository(repositoryId1, true);
32
+ cy.deleteRepository(repositoryId2, true);
33
+ cy.deleteUser(graphqlUser, true);
34
+ cy.switchOffFreeAccess(true);
35
+ cy.switchOffSecurity(true);
36
+ });
37
+
38
+ });
39
+
40
+ it('should restrict page when free access in on', () => {
41
+ // Given: There at least two repositories.
42
+ // When: I enable the security
43
+ UserAndAccessSteps.toggleSecurity();
44
+ LoginSteps.loginWithUser('admin', 'root');
45
+ // And: turn on Free Access
46
+ UserAndAccessSteps.getFreeAccessSwitchInput().should('not.be.checked');
47
+ UserAndAccessSteps.toggleFreeAccess();
48
+ // And: set graphql rights for the second repository when free access is ON
49
+ UserAndAccessSteps.clickFreeWriteAccessRepo(repositoryId2);
50
+ UserAndAccessSteps.clickFreeGraphqlAccessRepo(repositoryId2);
51
+ ModalDialogSteps.clickOKButton();
52
+
53
+ // When: I logout
54
+ LoginSteps.logout();
55
+ // And: repository with graphql rights is selected
56
+ RepositorySelectorSteps.selectRepository(repositoryId2);
57
+ // And: I click on the Import menu.
58
+ MainMenuSteps.clickOnMenuImport();
59
+
60
+ // Then: I should see the error message, because import view is available only for write access, repositoryId2 has only graphql rights.
61
+ ErrorSteps.verifyError('Some functionalities are not available because you do not have the required repository permissions.')
62
+ });
63
+
64
+ it('should restrict the repositories depending on whether free access is enabled and whether the user is logged in', () => {
65
+ // Given: There at least two repositories.
66
+ // When: I enable the security
67
+ UserAndAccessSteps.toggleSecurity();
68
+ LoginSteps.loginWithUser('admin', 'root');
69
+ // And: turn on Free Access
70
+ UserAndAccessSteps.toggleFreeAccess();
71
+ // And: set rights for the second repository when free access is ON
72
+ UserAndAccessSteps.clickFreeWriteAccessRepo(repositoryId2);
73
+ ModalDialogSteps.clickOKButton();
74
+
75
+ // When: I logout
76
+ LoginSteps.logout();
77
+ // Then: I should see only repositoryId2, as it is the only one configured for free access
78
+ RepositorySelectorSteps.getRepositorySelectorButton(repositoryId1).should('not.exist');
79
+ RepositorySelectorSteps.getRepositorySelectorButton(repositoryId2).should('exist');
80
+
81
+ // When: I log in again with a user who has access to all repositories
82
+ LoginSteps.loginWithUser('admin', 'root');
83
+ // Then: I should see both repositories in the repository selector, because the user has access to all repositories
84
+ RepositorySelectorSteps.getRepositorySelectorButton(repositoryId1).should('exist');
85
+ RepositorySelectorSteps.getRepositorySelectorButton(repositoryId2).should('exist');
86
+ });
87
+ });
@@ -0,0 +1,38 @@
1
+ import {UserAndAccessSteps} from "../../../steps/setup/user-and-access-steps";
2
+ import {MainMenuSteps} from "../../../steps/main-menu-steps";
3
+
4
+ describe('Users and Access initial state', () => {
5
+ beforeEach(() => {
6
+ cy.intercept('GET', '**/rest/security/users').as('getUsers');
7
+ });
8
+
9
+ it('Should display the correct initial state when navigating via URL', () => {
10
+ // Given, I visit the Users and Access page via URL
11
+ UserAndAccessSteps.visit();
12
+ // Then,
13
+ validateInitialState();
14
+ });
15
+
16
+ it('Should display the correct initial state when navigating via the navigation menu', () => {
17
+ // Given, I visit the Users and Access page via the navigation menu
18
+ UserAndAccessSteps.visit();
19
+ MainMenuSteps.clickOnUsersAndAccess();
20
+ // Then,
21
+ validateInitialState();
22
+ });
23
+ })
24
+
25
+ function validateInitialState() {
26
+ cy.wait('@getUsers').then(({ response }) => {
27
+ const users = response.body;
28
+ expect(users).to.have.length(1);
29
+ expect(users[0].grantedAuthorities).to.have.length(1);
30
+ });
31
+
32
+ UserAndAccessSteps.getTableRow().should('have.length', 1);
33
+ UserAndAccessSteps.findUserInTable('admin')
34
+ .within(() => {
35
+ cy.get('.username').should('contain', 'admin');
36
+ });
37
+ UserAndAccessSteps.getToggleSecurityCheckbox().should('not.be.checked');
38
+ }
@@ -285,7 +285,7 @@
285
285
  }
286
286
  },
287
287
  "ttyg": {
288
- "helpInfo": "The <b>Talk to Your Graph</b> view lets you interact with your database through a conversational interface. You can ask natural language questions about the data and receive answers generated through the combined power of GraphDB and OpenAI. It supports multiple agent configurations and persistent chats for ongoing, contextual conversations.",
288
+ "helpInfo": "<b>Talk to Your Graph</b> lets you interact with your database through a conversational interface. Ask natural language questions about the data and receive answers generated through the combined power of GraphDB and LLMs. It supports multiple agent configurations and persistent chats for ongoing, contextual conversations.",
289
289
  "loading": "Loading...",
290
290
  "help": {
291
291
  "btn": {
@@ -397,6 +397,9 @@
397
397
  "called": "Called {{('ttyg.chat_panel.query_name.' + name) | translate}}",
398
398
  "no_query": "There is no query."
399
399
  },
400
+ "placeholder": {
401
+ "ask-input": "Ask anything"
402
+ },
400
403
  "query_name": {
401
404
  "sparql_query":"SPARQL",
402
405
  "fts_search": "Full-text search",
@@ -419,6 +422,13 @@
419
422
  "dialog": {
420
423
  "confirm_repository_change": {
421
424
  "body": "If you proceed with executing of SPARQL query, GraphDB will open in a new tab and switch to the <b>{{repositoryId}}</b> repository."
425
+ },
426
+ "token_usage_info": {
427
+ "title": "Tokens usage",
428
+ "prompt_tokens_info": "{{promptTokens}} prompt tokens",
429
+ "prompt_tokens_info_description": "Tokens used to process instructions, chat history and user input.",
430
+ "completion_tokens_info": "{{completionTokens}} completion tokens",
431
+ "completion_tokens_info_description": "Tokens used to generate the response"
422
432
  }
423
433
  },
424
434
  "messages": {
@@ -430,6 +440,7 @@
430
440
  "loading_agents": "Loading agents...",
431
441
  "deleting_agent": "Deleting agent...",
432
442
  "deleted_repository": "Deleted repository",
443
+ "incompatible_agent": "Incompatible with the current GraphDB version",
433
444
  "create_agent_modal": {
434
445
  "title": {
435
446
  "create": "Create Agent",
@@ -446,14 +457,26 @@
446
457
  "placeholder": "Enter а user friendly name",
447
458
  "tooltip": "A descriptive name that helps you identify this agent."
448
459
  },
460
+ "external_config": {
461
+ "label": "External integration configuration",
462
+ "tooltip": "Show URLs for the agent’s external access and integration"
463
+ },
449
464
  "repository": {
450
465
  "label": "Repository ID",
451
466
  "tooltip": "The ID of the repository that will be used to retrieve information from GraphDB. Ontop and FedX repositories are not supported."
452
467
  },
453
468
  "model": {
454
469
  "label": "Model",
455
- "tooltip": "The model to use for this agent. More powerful models will provide better results.",
456
- "hint": "Check out the available OpenAI models <a href=\"https://platform.openai.com/docs/models\" target=\"_blank\">here</a>."
470
+ "hint": "The default model is an admin-set property. Check with them for other available models.",
471
+ "link_text": " Learn how to configure the model in the GraphDB documentation."
472
+ },
473
+ "context_size": {
474
+ "label": "Context size",
475
+ "tooltip": "Context window size - maximum number of tokens from prior messages included for contextual understanding. Ensure the model can handle the set context limit.",
476
+ "field_addon": "tokens",
477
+ "restore_default_btn": {
478
+ "tooltip": "Reset to default"
479
+ }
457
480
  },
458
481
  "temperature": {
459
482
  "label": "Temperature",
@@ -609,7 +632,11 @@
609
632
  }
610
633
  }
611
634
  },
612
- "autocomplete_disabled_message": "You must <a href=\"{{autocompleteIndexPage}}\" target=\"_blank\">enable the Autocomplete index</a> on chosen repository to use this method",
635
+ "autocomplete_disabled_message": {
636
+ "message_1": "You must",
637
+ "message_2": "enable the Autocomplete index",
638
+ "message_3": "on chosen repository to use this method"
639
+ },
613
640
  "autocomplete_max_number_of_results_per_call": {
614
641
  "label": "Max number of results (IRIs) per call",
615
642
  "placeholder": "Automatic value",
@@ -642,6 +669,9 @@
642
669
  },
643
670
  "confirm_repository_change_before_open_connectors": {
644
671
  "body": "If you proceed with creating the ChatGPT Retrieval connector, GraphDB will open in a new tab and switch to the <b>{{repositoryId}}</b> repository."
672
+ },
673
+ "confirm_repository_change_before_open_autocomplete_index": {
674
+ "body": "If you proceed with enabling the autocomplete index, GraphDB will open in a new tab and switch to the <b>{{repositoryId}}</b> repository."
645
675
  }
646
676
  }
647
677
  },
@@ -679,6 +709,17 @@
679
709
  }
680
710
  }
681
711
  },
712
+ "external_integration_config_modal": {
713
+ "title": "Agent endpoints and external access",
714
+ "label": "Access {{agentName}} query methods via OpenAPI endpoints",
715
+ "agent_id_label": "Agent ID",
716
+ "query_methods": "Query methods via OpenAPI endpoints",
717
+ "dify_extension": "Dify extension",
718
+ "copy_tooltip": "Copy",
719
+ "agent_copied_tooltip": "Agent ID copied",
720
+ "openAPI_copied_tooltip": "OpenAPI endpoints link copied",
721
+ "dify_extension_copied_tooltip": "Dify extension link copied"
722
+ },
682
723
  "agent_select_menu": {
683
724
  "no_selection_label": "Select an agent",
684
725
  "deleted_agent": "[deleted agent]",
@@ -703,6 +744,7 @@
703
744
  "tooltip": "Edit agent settings",
704
745
  "tooltip_disabled": "You do not have permission to edit the agent"
705
746
  },
747
+ "external_integration": "External integration",
706
748
  "clone_agent": {
707
749
  "label": "Clone",
708
750
  "tooltip": "Clone Agent"
@@ -734,7 +776,7 @@
734
776
  "no_agents": "No agents found for the selected filter.",
735
777
  "help_1": "{{'ttyg.helpInfo'|translate|trustAsHtml}}",
736
778
  "help_2": "{{'ttyg.help.how.content2'|translate|trustAsHtml}}",
737
- "help_config": "To use <b>Talk to Your Graph</b>, GraphDB must first be configured to work with OpenAI. Please ensure that the necessary API keys and settings are in place before starting. For detailed setup instructions, refer to the <a href=\"{{talkToGraphDocumentationLink}}\" target=\"_blank\" rel=\"noopener\">documentation<i class=\"icon-external\"></i></a> or contact your administrator.",
779
+ "help_config": "To use <b>Talk to Your Graph</b>, GraphDB must first be configured to work with LLM API. Please ensure that the necessary LLM API type, url and key are in place before starting. For detailed setup instructions, refer to the <a href=\"{{talkToGraphDocumentationLink}}\" target=\"_blank\" rel=\"noopener\">documentation<i class=\"icon-external\"></i></a> or contact your administrator.",
738
780
  "token_prop_warn1": "To enable this feature, set the config property",
739
781
  "token_prop_warn2": "to your GPT token in",
740
782
  "token_prop_warn3": "file.",
@@ -750,7 +792,7 @@
750
792
  "help.what.content": "{{'ttyg.helpInfo'|translate|trustAsHtml}}",
751
793
  "help.how.title": "How does it work?",
752
794
  "help.how.content": "The bot uses the ChatGPT Retrieval connector to fetch information it does not know about. As such, you must first create a suitable connector. See also the settings for fine-tuning the integration with the Retrieval connector.",
753
- "help.how.content1": "<b>Talk to Your Graph</b> is powered by OpenAI's Assistants API. You begin by selecting or configuring an agent, which defines the context and rules for querying. Once set, you can start a conversation by asking questions in natural language. The assistant interprets your query, runs the appropriate query methods to retrieve data, and responds with an answer. Persistent chat ensures conversations stay contextually aware, enabling deeper, more coherent interactions over time. You can use multiple agents concurrently to cover various domains or data sources.",
795
+ "help.how.content1": "<b>Talk to Your Graph</b> is powered by LLM API configured by the database administrator. You begin by selecting or configuring an agent, which defines the context and rules for querying. Once set, you can start a conversation by asking questions in natural language. The assistant interprets your query, runs the appropriate query methods to retrieve data, and responds with an answer. Persistent chat ensures conversations stay contextually aware, enabling deeper, more coherent interactions over time. You can use multiple agents concurrently to cover various domains or data sources.",
754
796
  "help.how.content2": "An agent in <b>Talk to Your Graph</b> is an AI-driven assistant specifically configured to interact with your graph database. It uses advanced natural language processing to understand and respond to your questions by querying the database and delivering relevant information. Each agent is tailored to a specific context, making interactions seamless and efficient, whether you're retrieving data, exploring insights, or working on complex projects."
755
797
  },
756
798
  "graphql": {
@@ -1779,7 +1821,7 @@
1779
1821
  "view.roles.mapping.title": "Roles per Request Mapping",
1780
1822
  "view.register.license.title": "Register GraphDB License",
1781
1823
  "view.register.license.helpInfo": "The Register GraphDB license view is used to set a new GraphDB license. Upload the binary license or copy the license text in the designated text area.",
1782
- "view.existing.license.title": "Current GraphDB license",
1824
+ "view.existing.license.title": "GraphDB license",
1783
1825
  "view.existing.license.helpInfo": "The Current GraphDB license view allows you to check the details of your current GraphDB license, as well as set a new license.",
1784
1826
  "view.similarity.indexes.title": "Similarity indexes",
1785
1827
  "view.similarity.indexes.helpInfo": "Similarity indexes help you look up semantically similar entities and text. Use this view to create, manage and view similarity indexes.",
@@ -2345,7 +2387,6 @@
2345
2387
  "delete.repo.warning.msg": "<p>Are you sure you want to delete the repository <strong>{{repositoryId}}</strong>?</p><p><span class=\"icon-2x icon-warning\" style=\"color: var(--primary-color-dark)\"></span>All data in the repository will be lost.</p>",
2346
2388
  "confirm.restart.repo": "Confirm restart",
2347
2389
  "confirm.restart.repo.warning.msg": "<p>Are you sure you want to restart the repository <strong>{{repositoryId}}</strong>?</p><p><span class=\"icon-2x icon-warning\" style=\"color: var(--primary-color-dark)\"></span>The repository will be shut down immediately and all running queries and updates will be cancelled.</p>",
2348
- "restart.repo.in.cluster.tooltip": "Restarting a repository is not supported in a cluster environment. To apply configuration changes, restart all cluster nodes.",
2349
2390
  "location.cannot.be.empty.error": "Location cannot be empty",
2350
2391
  "required.field": "This field is required",
2351
2392
  "invalid.field.value": "Invalid field value. The value should match the pattern '{{pattern}}'",
@@ -2514,6 +2555,7 @@
2514
2555
  "common.show_all": "Show all",
2515
2556
  "common.hide": "Hide",
2516
2557
  "common.learn_more_in_documentation": "Learn more in the GraphDB documentation",
2558
+ "common.unsaved.changes": "You have unsaved changes. Are you sure that you want to exit?",
2517
2559
  "click.to": "Click to",
2518
2560
  "paginator.first.page.label": "First",
2519
2561
  "paginator.last.page.label": "Last",
@@ -2832,7 +2874,7 @@
2832
2874
  "sign.in": "Sign in",
2833
2875
  "sign.in.openid": "Sign in with OpenID",
2834
2876
  "gdb.license.info.header": "GraphDB License Information",
2835
- "supply.license.or.contact.us.warning": "Please supply a valid license. You can obtain a free license for GraphDB Free or an evaluation license for GraphDB Enterprise at <a href='https://www.ontotext.com/products/graphdb/'>Ontotext's website</a>.",
2877
+ "supply.license.or.contact.us.warning": "Please supply a valid license. You can obtain a free license for GraphDB Free or an evaluation license for GraphDB Enterprise at <a rel=\"noopener\" target=\"_blank\" href='https://www.ontotext.com/products/graphdb/#try-graphdb'>Ontotext's website</a>.",
2836
2878
  "remove.license": "Remove license",
2837
2879
  "no.license.restrictions": "Without a valid license, GraphDB works in restricted mode and the only allowed operation is exporting repositories.",
2838
2880
  "no.license": "No license",
@@ -3171,7 +3213,7 @@
3171
3213
  "guide.step-action.edit-ttyg-agent": "Edit an agent",
3172
3214
  "guide.step-action.create-similarity-index": "Create Similarity index",
3173
3215
  "guide.step_plugin.execute-sparql-query.query-editor.content": "Enter the following SPARQL query: {{queryExplainMessageTranslated}}{{queryAsHtmlCodeElement}}",
3174
- "guide.step_plugin.execute-sparql-query.result-explain.content": "The table shows the results from executing the query.",
3216
+ "guide.step_plugin.sparql-results-explain.content": "The table shows the results from executing the query.",
3175
3217
  "guide.step_plugin.execute-sparql-query.run-sparql-query.content": "Click on the <b>{{'query.editor.run.btn'|translate}}</b> button.",
3176
3218
  "guide.step_plugin.execute-sparql-query.copy-to-editor.button": "Copy to editor",
3177
3219
  "guide.step_plugin.import_rdf_file.content": "Click on the <b>{{'upload.rdf.files.label'|translate}}</b> button and choose a file with the name <b>{{resourceFile}}</b>.",
@@ -3191,7 +3233,7 @@
3191
3233
  "guide.step_plugin.visual-graph-link-focus.title": "Visual graph links",
3192
3234
  "guide.step_plugin.visual-graph-link-focus.content": "An arrow with a label represents one or more links between nodes. In this case, the arrow shows the relation <b>{{fromIriLabel}} &rarr; {{iriLabel}} &rarr; {{toIriLabel}}</b>.",
3193
3235
  "guide.step_plugin.download-guide-resource.title": "Download guide resources",
3194
- "guide.step_plugin.download-guide-resource.content": "This guide requires a file to be downloaded.<br>Please <a href=\"#\" ng-click=\"downloadGuidesFile('{{resourcePath}}', '{{resourceFile}}')\">download {{resourceFile}}</a>.",
3236
+ "guide.step_plugin.download-guide-resource.content": "This guide requires a file to be downloaded.<br>Please <a href=\"#\" class=\"{{downloadButtonClass}}\">download {{resourceFile}}</a>.",
3195
3237
  "guide.step_plugin.download-guide-resource.download.message.failure": "Failed to download the '{{resourceFile}}' file!",
3196
3238
  "guide.step_plugin.choose-repository.content": "Click on the repository selection dropdown.",
3197
3239
  "guide.step_plugin.select-repository.content": "Click on the <b>{{getRepositoryId()}}</b> repository button.",
@@ -3213,17 +3255,18 @@
3213
3255
  "guide.step_plugin.visual-graph-properties-focus-property.content": "The values for generic properties like <b>{{focusProperty}}</b> are listed in dedicated sections.",
3214
3256
  "guide.step_plugin.visual-graph-expand.title": "Visual graph: expand node",
3215
3257
  "guide.step_plugin.visual-graph-expand.content": "Double click on <b>{{iriLabel}}</b> to expand the graph.",
3216
- "guide.step_plugin.class_hierarchy_intro.content": "The biggest circle shows all top-level classes. Every class may have subclasses shown as smaller circles within their parent class. The size of each circle indicates the proportion of RDF resources that belong to that class. Thus, bigger circles are classes that have more instances.",
3217
- "guide.step_plugin.class_hierarchy_zoom.content": "The class <b>{{iri}}</b> is a parent class that has subclasses. Zoom inside to have a better view by scrolling up with the mouse inside the circle.",
3258
+ "guide.step_plugin.class-hierarchy-intro.content": "The biggest circle shows all top-level classes. Every class may have subclasses shown as smaller circles within their parent class. The size of each circle indicates the proportion of RDF resources that belong to that class. Thus, bigger circles are classes that have more instances.",
3259
+ "guide.step_plugin.class-hierarchy-zoom-class.content": "The class <b>{{iri}}</b> is a parent class that has subclasses. Zoom inside to have a better view by scrolling up with the mouse inside the circle.",
3218
3260
  "guide.step_plugin.class-hierarchy-instances.title": "Class hierarchy instances",
3219
- "guide.step_plugin.class-hierarchy-instances.content": "Click on <b>{{iri}}</b> to show its instances.",
3220
- "guide.step_plugin.class-hierarchy-instances-side-panel.content": "The side panel shows the first 1,000 instances of the clicked class, <b>{{iri}}</b>.",
3221
- "guide.step_plugin.class-hierarchy-instances-focus.content": "<b>{{focusInstance}}</b> is an instance of the class <b>{{iri}}</b>.",
3222
- "guide.step_plugin.class-hierarchy-instances-count.content": "This link shows the number of instances for the selected class, <b>{{iri}}</b>. Click on the link to open the SPARQL editor with a preloaded query that selects all instances.",
3223
- "guide.step_plugin.class-hierarchy-instances-side-panel-close.content": "You can close the panel by clicking on the X icon.",
3261
+ "guide.step_plugin.class-hierarchy-open-rdf-instances-side-panel.content": "Click on <b>{{iri}}</b> to show its instances.",
3262
+ "guide.step_plugin.class-hierarchy-rdf-instances-side-panel-intro.content": "The side panel shows the first 1,000 instances of the clicked class, <b>{{iri}}</b>.",
3263
+ "guide.step_plugin.class-hierarchy-explain-rdf-instance.content": "<b>{{focusInstance}}</b> is an instance of the class <b>{{iri}}</b>.",
3264
+ "guide.step_plugin.class-hierarchy-rdf-instances-side-panel-open-all-instances-in-sparql.content": "This link shows the number of instances for the selected class, <b>{{iri}}</b>. Click on the link to open the SPARQL editor with a preloaded query that selects all instances.",
3265
+ "guide.step_plugin.class-hierarchy-close-rdf-instances-side-panel.content": "You can close the panel by clicking on the X icon.",
3224
3266
  "guide.step_plugin.class-hierarchy-instances-query.content": "This SPARQL query selects all instances of the class <b>{{iri}}</b>. The query was entered automatically when you clicked on the view instances link.",
3225
3267
  "guide.step_plugin.class-hierarchy-instances-results.content": "The table shows the results. Note that in this particular case, the query was executed automatically.",
3226
3268
  "guide.step_plugin.class-hierarchy-instances-results.extraContent": "Do not worry &mdash; there will be a dedicated section on the SPARQL editor later in the guide.",
3269
+ "guide.step_plugin.class-hierarchy-toggle-prefixes.content": "Click on <b>Show prefixes/Hide prefixes</b> to toggle the display of the prefixes.",
3227
3270
  "guide.step_plugin.table-graph-overview": "The table shows RDF statements where the subject is the selected IRI, <b>{{iriLabel}}</b>. The view can be configured to show statements where the IRI is the <i>subject</i>, <i>predicate</i>, <i>object</i>, <i>context</i> or in any position.",
3228
3271
  "guide.step_plugin.table-graph-link": "You can click on any IRI in the table to navigate to it. Click on <b>{{iriLabel}}</b>.",
3229
3272
  "guide.step_plugin.table-graph-role": "You can configure the view to show RDF statements where the current IRI is the <i>subject</i>, <i>predicate</i>, <i>object</i>, <i>context</i> or in any position. Click on the <b>{{role|translate}}</b> tab.",
@@ -3241,7 +3284,7 @@
3241
3284
  "guide.step_plugin.welcome-what.content": "{{translatedGuideDescription}}<p>Let's get started for real now!</p>",
3242
3285
  "guide.step_plugin.create-ttyg-agent.intro": "An agent is a helpful assistant that can answer your queries. You need to configure an agent in order to ask anything of Talk to Your Graph.",
3243
3286
  "guide.step_plugin.ttyg.missing-key.title": "Missing OpenAI key",
3244
- "guide.step_plugin.ttyg.missing-key.content": "To use <b>Talk to Your Graph</b>, GraphDB must first be configured to work with OpenAI. Please ensure that the necessary API keys and settings are in place before starting. For detailed setup instructions, refer to the documentation or contact your administrator.",
3287
+ "guide.step_plugin.ttyg.missing-key.content": "To use <b>Talk to Your Graph</b>, GraphDB must first be configured to work with LLM API. Please ensure that the necessary LLM API type, url and key are in place before starting. For detailed setup instructions, refer to the documentation or contact your administrator.",
3245
3288
  "guide.step_plugin.create-ttyg-agent.create-agent": "Click on the create agent button to create a new agent.",
3246
3289
  "guide.step_plugin.create-ttyg-agent.save-agent-settings": "Click to save the agent settings.",
3247
3290
  "guide.step_plugin.sparql-search-method.content": "Enabling SPARQL search allows the agent to answers questions by performing a SPARQL query. This works well for datasets with good ontologies and performs well on closed-ended questions, including aggregations.",
@@ -0,0 +1,13 @@
1
+ {
2
+ "enabled": false,
3
+ "authorities": [
4
+ "READ_REPO_configurations@http://localhost:7202"
5
+ ],
6
+ "appSettings": {
7
+ "DEFAULT_INFERENCE": true,
8
+ "DEFAULT_VIS_GRAPH_SCHEMA": true,
9
+ "DEFAULT_SAMEAS": true,
10
+ "IGNORE_SHARED_QUERIES": false,
11
+ "EXECUTE_COUNT": true
12
+ }
13
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "id": "id",
3
+ "name": "Quadro",
4
+ "model": "gpt-4o",
5
+ "api": "openai-assistants",
6
+ "contextSize": 128000,
7
+ "temperature": 0.7,
8
+ "topP": 1.0,
9
+ "seed": 0,
10
+ "repositoryId": "test-repository",
11
+ "instructions": {
12
+ "systemInstruction": "",
13
+ "userInstruction": "If you need to write a SPARQL query, use only the classes and properties provided in the schema and don't invent or guess any. Always try to return human-readable names or labels and not only the IRIs. If SPARQL fails to provide the necessary information you can try another tool too."
14
+ },
15
+ "assistantExtractionMethods": [
16
+ {
17
+ "method": "sparql_search",
18
+ "ontologyGraph": "http://example.com",
19
+ "sparqlQuery": "CONSTRUCT {?s ?p ?o} WHERE {GRAPH <http://example.org/ontology> {?s ?p ?o .}}",
20
+ "addMissingNamespaces": false
21
+ },
22
+ {
23
+ "method": "fts_search",
24
+ "maxNumberOfTriplesPerCall": 0
25
+ },
26
+ {
27
+ "method": "similarity_search",
28
+ "similarityIndex": "similarity-index",
29
+ "similarityIndexThreshold": 0.6,
30
+ "maxNumberOfTriplesPerCall": 0
31
+ },
32
+ {
33
+ "method": "retrieval_search",
34
+ "retrievalConnectorInstance": "retrieval-connector",
35
+ "queryTemplate": "{\"query\": \"string\"}",
36
+ "maxNumberOfTriplesPerCall": 0
37
+ }
38
+ ],
39
+ "additionalExtractionMethods": [
40
+ {
41
+ "method": "iri_discovery_search"
42
+ }
43
+ ]
44
+ }
@@ -2,6 +2,8 @@
2
2
  "id": "id",
3
3
  "name": "Quadro",
4
4
  "model": "gpt-4o",
5
+ "api": "openai-completions",
6
+ "contextSize": 128000,
5
7
  "temperature": 0.7,
6
8
  "topP": 1.0,
7
9
  "seed": 0,
@@ -0,0 +1,79 @@
1
+ [
2
+ {
3
+ "id": "asst_gAPcrHQQ9ZIxD5eXWH2BNFfo",
4
+ "name": "agent-1",
5
+ "model": "gpt-4o",
6
+ "temperature": 0.0,
7
+ "topP": 0.0,
8
+ "seed": null,
9
+ "repositoryId": "starwars",
10
+ "compatibility": "INCOMPATIBLE",
11
+ "instructions": {
12
+ "systemInstruction": "",
13
+ "userInstruction": ""
14
+ },
15
+ "assistantExtractionMethods": [
16
+ {
17
+ "method": "fts_search",
18
+ "maxNumberOfTriplesPerCall": 44
19
+ }
20
+ ]
21
+ },
22
+ {
23
+ "id": "asst_qMyCpCBmqxV9I2B8UoMfFzc5",
24
+ "name": "agent-2",
25
+ "model": "gpt-4o",
26
+ "temperature": 0.0,
27
+ "topP": 0.0,
28
+ "seed": null,
29
+ "repositoryId": "Not existing repo",
30
+ "compatibility": "COMPATIBLE",
31
+ "instructions": {
32
+ "systemInstruction": "string\n\nstring",
33
+ "userInstruction": "string"
34
+ },
35
+ "assistantExtractionMethods": [
36
+ {
37
+ "method": "fts_search"
38
+ }
39
+ ]
40
+ },
41
+ {
42
+ "id": "asst_Cr0RxobrY07WpOvvyQilEWMI",
43
+ "name": "Databricks-general-unbiased",
44
+ "model": "gpt-4o-2024-08-06",
45
+ "temperature": 1.0,
46
+ "topP": 1.0,
47
+ "seed": null,
48
+ "repositoryId": "starwars",
49
+ "instructions": {
50
+ "systemInstruction": "You are helpful assistant in discovering information regarding diagnostic biomarkers.",
51
+ "userInstruction": null
52
+ },
53
+ "assistantExtractionMethods": [
54
+ {
55
+ "method": "fts_search",
56
+ "maxNumberOfTriplesPerCall": 44
57
+ }
58
+ ]
59
+ },
60
+ {
61
+ "id": "asst_5GxNYTdaOh7Tl6lLl6Pya2aH",
62
+ "name": "Databricks-biomarkers",
63
+ "model": "gpt-3.5-turbo-0125",
64
+ "temperature": 1.0,
65
+ "topP": 1.0,
66
+ "seed": null,
67
+ "repositoryId": "biomarkers",
68
+ "instructions": {
69
+ "systemInstruction": "You're a helpful assistant in discovering new diagnostic biomarkers for given diseases. I'll submit a set of publication abstracts discussing given disease and your task is to find in the abstracts any potential new biomarkers which are not yet listed in the appropriate databases. Each abstract is preceded by identifier - its PubMed id called for short PMID. \n\nReturn the set of biomarkers listed one per row, each marker followed by the | and PMID of the respective abstract if was mentioned in.\n\nExample: \nInput: 36418457\t[Amyotrophic lateral sclerosis (ALS) is a genetically and phenotypically heterogeneous disease results in the loss of motor neurons. Mounting information points to involvement of other systems including cognitive impairment. However, neither the valid biomarker for diagnosis nor effective therapeutic intervention is available for ALS. The present study is aimed at identifying potentially genetic biomarker that improves the diagnosis and treatment of ALS patients based on the data of the Gene Expression Omnibus. We retrieved datasets and conducted a weighted gene co-expression network analysis (WGCNA) to identify ALS-related co-expression genes. Functional enrichment analysis was performed to determine the features and pathways of the main modules. We then constructed an ALS-related model using the least absolute shrinkage and selection operator (LASSO) regression analysis and verified the model by the receiver operating characteristic (ROC) curve. Besides we screened the non-preserved gene modules in FTD and ALS-mimic disorders to distinct ALS-related genes from disorders with overlapping genes and features. Altogether, 4198 common genes between datasets with the most variation were analyzed and 16 distinct modules were identified through WGCNA. Blue module had the most correlation with ALS and functionally enriched in pathways of neurodegeneration-multiple diseases', 'amyotrophic lateral sclerosis', and 'endocytosis' KEGG terms. Further, some of other modules related to ALS were enriched in 'autophagy' and 'amyotrophic lateral sclerosis'. The 30 top of hub genes were recruited to a LASSO regression model and 5 genes (BCLAF1, GNA13, ARL6IP5, ARGLU1, and YPEL5) were identified as potentially diagnostic ALS biomarkers with validating of the ROC curve and AUC value.]\n\nYour response: BCLAF1|36418457\nGNA13|36418457\nARL6IP5|36418457\nARGLU1|36418457\nYPEL5|36418457",
70
+ "userInstruction": null
71
+ },
72
+ "assistantExtractionMethods": [
73
+ {
74
+ "method": "fts_search",
75
+ "maxNumberOfTriplesPerCall": 44
76
+ }
77
+ ]
78
+ }
79
+ ]
@@ -10,7 +10,12 @@
10
10
  "agentId": "requestBody.agentId",
11
11
  "message": "Reply to '${requestBody.question}' Second`",
12
12
  "timestamp": 53425243523,
13
- "name": null
13
+ "name": null,
14
+ "usage": {
15
+ "completionTokens": 82,
16
+ "promptTokens": 10246,
17
+ "totalTokens": 10328
18
+ }
14
19
  },
15
20
  {
16
21
  "id": "msg_Bn07kVDCYT1qmgu1G7Zw0KNe_",
@@ -19,7 +24,12 @@
19
24
  "agentId": "requestBody.agentId",
20
25
  "message": "Reply to '${requestBody.question}",
21
26
  "timestamp": 23432424242,
22
- "name": null
27
+ "name": null,
28
+ "usage": {
29
+ "completionTokens": 80,
30
+ "promptTokens": 10244,
31
+ "totalTokens": 10324
32
+ }
23
33
  }
24
34
  ]
25
35
  }
@@ -37,7 +37,12 @@
37
37
  "role": "assistant",
38
38
  "message": "Han Solo is a fictional character in the Star ",
39
39
  "timestamp": "1725875332",
40
- "name": null
40
+ "name": null,
41
+ "usage": {
42
+ "completionTokens": 81,
43
+ "promptTokens": 10245,
44
+ "totalTokens": 10326
45
+ }
41
46
  }
42
47
  ],
43
48
  "timestamp": "1725875483"