From 7a75bbc25d3757760ab121e5b54c5e27c590f44b Mon Sep 17 00:00:00 2001 From: Neil Dewhurst Date: Wed, 10 Dec 2025 13:11:05 +0000 Subject: [PATCH 1/6] Add workflows --- .github/workflows/docs-deploy-surge.yml | 124 ++++++++++++++++++++++++ .github/workflows/docs-pr-checks.yml | 59 +++++++++++ .github/workflows/docs-teardown.yml | 49 ++++++++++ 3 files changed, 232 insertions(+) create mode 100644 .github/workflows/docs-deploy-surge.yml create mode 100644 .github/workflows/docs-pr-checks.yml create mode 100644 .github/workflows/docs-teardown.yml diff --git a/.github/workflows/docs-deploy-surge.yml b/.github/workflows/docs-deploy-surge.yml new file mode 100644 index 000000000..5c069bfc9 --- /dev/null +++ b/.github/workflows/docs-deploy-surge.yml @@ -0,0 +1,124 @@ +# Use this starter workflow to deploy HTML generated by Antora to surge.sh +# Docs are published at --.surge.sh +# +# By default, this workflow runs on completion of a workflow called "Verify docs PR" +# +# This workflow expects the triggering workflow to generate an artifact called "docs" +# - update the reference to "docs" and "docs.zip" in this workflow if your triggering workflow generates an artifact with a different name + +# change to force workflow with no changelog + +name: "Deploy docs preview" + +on: + workflow_run: + workflows: ["Verify docs PR"] + types: + - completed + +jobs: + deploy-docs: + # Uncomment this if statement to deploy only when the PR builds cleanly + # if: github.event.workflow_run.conclusion == 'success' + + runs-on: ubuntu-latest + + steps: + - name: "Download built documentation" + uses: actions/github-script@v7 + env: + RUN_ID: ${{ github.event.workflow_run.id }} + WORKSPACE: ${{ github.workspace }} + with: + script: | + var artifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: ${{ env.RUN_ID }}, + }); + + var matchArtifactDocs = artifacts.data.artifacts.filter((artifact) => { + return artifact.name == "docs" + })[0]; + var downloadDocs = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifactDocs.id, + archive_format: 'zip', + }); + var fs = require('fs'); + fs.writeFileSync('${{ env.WORKSPACE }}/docs.zip', Buffer.from(downloadDocs.data)); + + var matchArtifactChangelog = artifacts.data.artifacts.filter((artifact) => { + return artifact.name == "changelog" + })[0]; + var downloadChangelog = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifactChangelog.id, + archive_format: 'zip', + }); + fs.writeFileSync('${{ env.WORKSPACE }}/changelog.zip', Buffer.from(downloadChangelog.data)); + + - id: unzip-docs + run: unzip docs.zip + + - id: unzip-changelog + if: ${{ hashFiles('changelog.zip') != '' }} + run: unzip changelog.zip + + - id: get-deploy-id + run: | + deployid=$(> "$GITHUB_OUTPUT" + + - id: get-deploy-url + env: + ORG: ${{ github.event.repository.owner.login }} + REPO: ${{ github.event.repository.name }} + DEPLOYID: ${{ steps.get-deploy-id.outputs.deploy-id }} + run: | + deployurl=$ORG-$REPO-$DEPLOYID.surge.sh + echo "deploy-url=$deployurl" >> $GITHUB_OUTPUT + + - uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Deploy docs to surge + shell: bash + env: + DEPLOY_URL: ${{ steps.get-deploy-url.outputs.deploy-url }} + SURGE_TOKEN: "${{ secrets.DOCS_SURGE_TOKEN }}" + SITE_DIR: ${{ steps.get-top-dir.outputs.top-dir }} + run: | + npm install -g surge + surge . $DEPLOY_URL --token "$SURGE_TOKEN" + + # If the PR artifacts include a changelog file, add it to the PR as a comment + # The changelog contains links to new and changed files in the deployed docs + - name: Comment on PR (changelog) + if: ${{ hashFiles('changelog') != '' }} + uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 #v2 + with: + number: ${{ steps.get-deploy-id.outputs.deploy-id }} + recreate: true + header: docs-pr-changes + path: changelog + GITHUB_TOKEN: ${{ secrets.DOCS_PR_COMMENT_TOKEN }} + + # If there's no changelog, add a generic comment to the PR + - name: Comment on PR (no changelog) + if: ${{ hashFiles('changelog') == '' }} + env: + DEPLOY_URL: ${{ steps.get-deploy-url.outputs.deploy-url }} + uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 #v2 + with: + number: ${{ steps.get-deploy-id.outputs.deploy-id }} + header: docs-pr-changes + message: | + Looks like you've updated the documentation! + + Check out your changes at https://${{ env.DEPLOY_URL }} + GITHUB_TOKEN: ${{ secrets.DOCS_PR_COMMENT_TOKEN }} diff --git a/.github/workflows/docs-pr-checks.yml b/.github/workflows/docs-pr-checks.yml new file mode 100644 index 000000000..2c7fd1eb8 --- /dev/null +++ b/.github/workflows/docs-pr-checks.yml @@ -0,0 +1,59 @@ +name: "Verify docs PR" + +on: + pull_request: + branches: + - main + paths: + - "doc/**" + +jobs: + # Generate HTML + docs-build-pr: + uses: neo4j/docs-tools/.github/workflows/reusable-docs-build.yml@v2 + with: + deploy-id: ${{ github.event.number }} + retain-artifacts: 14 + docs-dir: "doc" + + # Parse the json log output from the HTML build, and output warnings and errors as annotations + # Optionally, fail the build if there are warnings or errors + # By default, the job fails if there are errors, passes if there are warnings only. + docs-verify-pr: + needs: docs-build-pr + uses: neo4j/docs-tools/.github/workflows/reusable-docs-verify.yml@v2 + with: + failOnWarnings: true + + # Get lists of changes in the PR + # - all updated asciidoc files + # - all updated asciidoc pages + # - all new asciidoc pages + docs-changes-pr: + runs-on: ubuntu-latest + outputs: + asciidoc-files: ${{ steps.get-file-changes.outputs.asciidoc_all_changed_files }} + pages-modified: ${{ steps.get-file-changes.outputs.pages_modified_files }} + pages-added: ${{ steps.get-file-changes.outputs.pages_added_files }} + steps: + - name: Get file changes + id: get-file-changes + uses: tj-actions/changed-files@2f7c5bfce28377bc069a65ba478de0a74aa0ca32 # v46.0.1 + with: + separator: "," + files_yaml: | + pages: + - '**/modules/**/pages/**/*.adoc' + asciidoc: + - '**/modules/**/*.adoc' + + # Generate a PR comment if the docs are using the pageList extension + # The extension maps asciidoc source files to their HTML output paths + # The comment will contain links to new and changed pages in the deployed HTML docs + docs-updates-comment-pr: + if: needs.docs-build-pr.outputs.pages-listed == 'success' + needs: [docs-build-pr, docs-changes-pr] + uses: neo4j/docs-tools/.github/workflows/reusable-docs-pr-changes.yml@v2 + with: + pages-modified: ${{ needs.docs-changes-pr.outputs.pages-modified }} + pages-added: ${{ needs.docs-changes-pr.outputs.pages-added }} diff --git a/.github/workflows/docs-teardown.yml b/.github/workflows/docs-teardown.yml new file mode 100644 index 000000000..0484cd106 --- /dev/null +++ b/.github/workflows/docs-teardown.yml @@ -0,0 +1,49 @@ +# copy this workflow into your repo +name: "Documentation Teardown" + +on: + pull_request_target: + branches: + - main + types: + - closed + paths: + - "doc/**" + +jobs: + teardown-docs: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-node@v4 + with: + node-version: lts/* + + - id: get-deploy-url + env: + ORG: ${{ github.event.repository.owner.login }} + REPO: ${{ github.event.repository.name }} + DEPLOYID: ${{ github.event.pull_request.number }} + run: | + deployurl=$ORG-$REPO-$DEPLOYID.surge.sh + echo "deploy-url=$deployurl" >> $GITHUB_OUTPUT + + - name: Teardown documentation + shell: bash + env: + SURGE_TOKEN: "${{ secrets.DOCS_SURGE_TOKEN }}" + DEPLOY_URL: ${{ steps.get-deploy-url.outputs.deploy-url }} + run: | + npm install -g surge + surge teardown $DEPLOY_URL --token "$SURGE_TOKEN" + + - name: Comment on PR + uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 #v2 + with: + number: ${{ github.event.pull_request.number }} + header: docs-pr-changes + message: | + Thanks for the documentation updates. + + The preview documentation has now been torn down - reopening this PR will republish it. + GITHUB_TOKEN: ${{ secrets.DOCS_PR_COMMENT_TOKEN }} From 8ec795398b2e9c2c9a67b4abefbb2282c0980ca6 Mon Sep 17 00:00:00 2001 From: Neil Dewhurst Date: Wed, 10 Dec 2025 13:11:15 +0000 Subject: [PATCH 2/6] Update package.json --- doc/package.json | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/doc/package.json b/doc/package.json index 3333f3360..979502ab7 100644 --- a/doc/package.json +++ b/doc/package.json @@ -5,13 +5,16 @@ "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "nodemon -e adoc --exec \"npm run build && npm run serve\"", - "start:publish": "nodemon -e adoc --exec \"npm run build:publish && npm run serve\"", + "prestart": "npm update", + "start": "nodemon --exec \"npm run build\"", "serve": "node server.js", - "build": "antora preview.yml --stacktrace --log-format=pretty", - "build:publish": "antora publish.yml --stacktrace --log-format=pretty", - "build-verify": "antora --stacktrace --fetch preview.yml --log-format=json --log-level=info --log-file ./build/log/log.json", - "publish-verify": "antora --stacktrace --fetch publish.yml --log-format=json --log-file ./build/log/log.json" + "clean": "rm -rf build", + "build": "npm run build:preview", + "postbuild": "node server.js", + "build:preview": "antora preview.yml --stacktrace --log-format=pretty", + "build:publish": "npm run clean && antora publish.yml --stacktrace --log-format=pretty", + "verify:preview": "antora --stacktrace --fetch preview.yml --log-format=json --log-level=info --log-file ./build/log/log.json", + "verify:publish": "antora --stacktrace --fetch publish.yml --log-format=json --log-level=info --log-file ./build/log/log.json" }, "keywords": [ "antora", @@ -20,25 +23,37 @@ "author": "Neo4j", "license": "ISC", "dependencies": { - "@antora/cli": "^3.1.7", - "@antora/site-generator-default": "^3.1.7", - "@neo4j-antora/antora-add-notes": "^0.3.1", - "@neo4j-antora/antora-modify-sitemaps": "^0.4.4", + "@neo4j-antora/antora-add-notes": "^0.3.2", "@neo4j-antora/antora-page-roles": "^0.3.2", - "@neo4j-antora/antora-table-footnotes": "^0.3.2", - "@neo4j-documentation/macros": "^1.0.2", + "@neo4j-antora/roles-labels": "^0.1.2", + "@neo4j-antora/table-footnotes": "^1.0.0", + "@neo4j-documentation/macros": "^1.0.4", "@neo4j-documentation/remote-include": "^1.0.0", + "antora": "3.1.14", "js-yaml": "^4.1.0", "simple-git": "^3.5.0", "yargs": "^17.5.1" }, "devDependencies": { - "express": "^4.18.2", - "nodemon": "^3.0.2" + "express": "^5.1.0", + "nodemon": "^3.1.0" }, "overrides": { "@antora/site-generator-default": { "glob-parent": "6.0.2" } + }, + "nodemonConfig": { + "watch": [ + "**/modules/**", + "**/antora.yml", + "**/preview.yml", + "**/publish.yml" + ], + "ext": "yml,yaml,adoc,svg,png,jpg", + "ignore": [ + "build", + "node_modules" + ] } } From aaf44d68ea53d541b80f4694f4b1b6b29be2c433 Mon Sep 17 00:00:00 2001 From: Neil Dewhurst Date: Wed, 10 Dec 2025 13:11:23 +0000 Subject: [PATCH 3/6] Update playbooks --- doc/preview.yml | 6 +++++- doc/publish.yml | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/doc/preview.yml b/doc/preview.yml index f0639fe89..04855edff 100644 --- a/doc/preview.yml +++ b/doc/preview.yml @@ -26,12 +26,16 @@ runtime: urls: html_extension_style: indexify +antora: + extensions: + - "@neo4j-antora/table-footnotes" + - "@neo4j-antora/roles-labels" + asciidoc: extensions: - "@neo4j-documentation/remote-include" - "@neo4j-documentation/macros" - "@neo4j-antora/antora-page-roles" - - "@neo4j-antora/antora-table-footnotes" attributes: page-theme: docs page-type: Docs diff --git a/doc/publish.yml b/doc/publish.yml index fbde623a5..e0f01419a 100644 --- a/doc/publish.yml +++ b/doc/publish.yml @@ -25,12 +25,16 @@ ui: urls: html_extension_style: indexify +antora: + extensions: + - "@neo4j-antora/table-footnotes" + - "@neo4j-antora/roles-labels" + asciidoc: extensions: - "@neo4j-documentation/remote-include" - "@neo4j-documentation/macros" - "@neo4j-antora/antora-page-roles" - - "@neo4j-antora/antora-table-footnotes" attributes: page-theme: docs page-type: Docs From 3fc7978451af76ef30fedcbf8c527d66ab3d44bd Mon Sep 17 00:00:00 2001 From: Neil Dewhurst Date: Wed, 10 Dec 2025 13:11:32 +0000 Subject: [PATCH 4/6] Fix footnote syntax --- doc/modules/ROOT/pages/pipelines.adoc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/modules/ROOT/pages/pipelines.adoc b/doc/modules/ROOT/pages/pipelines.adoc index 85fd8e614..5c56ef4e8 100644 --- a/doc/modules/ROOT/pages/pipelines.adoc +++ b/doc/modules/ROOT/pages/pipelines.adoc @@ -42,11 +42,11 @@ Below is a description of the methods on such objects: Union[str, list[str]] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/nodeclassification-pipelines/config/#nodeclassification-pipelines-adding-features[Select node properties to be used as features]. | configureSplit | config: **kwargs | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/nodeclassification-pipelines/config/#nodeclassification-pipelines-configure-splits[Configure the train-test dataset split]. | addLogisticRegression | parameter_space: + - dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/nodeclassification-pipelines/config/#nodeclassification-pipelines-adding-model-candidates[Add a logistic regression model configuration to train as a candidate in the model selection phase]. footnote:range[Ranges can also be given as length two `Tuple`s. I.e. `(x, y)` is the same as `{range: [x, y]}`.] + dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/nodeclassification-pipelines/config/#nodeclassification-pipelines-adding-model-candidates[Add a logistic regression model configuration to train as a candidate in the model selection phase]. footnote:classification-range[Ranges can also be given as length two ``Tuple``s. I.e. `(x, y)` is the same as `{range: [x, y\]}`.] | addRandomForest | parameter_space: + - dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/nodeclassification-pipelines/config/#nodeclassification-pipelines-adding-model-candidates[Add a random forest model configuration to train as a candidate in the model selection phase]. footnote:range[] + dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/nodeclassification-pipelines/config/#nodeclassification-pipelines-adding-model-candidates[Add a random forest model configuration to train as a candidate in the model selection phase]. footnote:classification-range[] | addMLP | parameter_space: + - dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/nodeclassification-pipelines/config/#nodeclassification-pipelines-adding-model-candidates[Add an MLP model configuration to train as a candidate in the model selection phase]. footnote:range[] + dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/nodeclassification-pipelines/config/#nodeclassification-pipelines-adding-model-candidates[Add an MLP model configuration to train as a candidate in the model selection phase]. footnote:classification-range[] | configureAutoTuning | config: **kwargs | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/nodeclassification-pipelines/config/#nodeclassification-pipelines-configure-auto-tuning[Configure the auto-tuning]. | train | G: Graph, + @@ -221,11 +221,11 @@ Below is a description of the methods on such objects: config: **kwargs | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/linkprediction-pipelines/config/#linkprediction-adding-features[Add a link feature for model training based on node properties and a feature combiner]. | configureSplit | config: **kwargs | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/linkprediction-pipelines/config/#linkprediction-configure-splits[Configure the feature-train-test dataset split]. | addLogisticRegression | parameter_space: + - dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/linkprediction-pipelines/config/#linkprediction-adding-model-candidates[Add a logistic regression model configuration to train as a candidate in the model selection phase]. footnote:range[Ranges can also be given as length two `Tuple`s. I.e. `(x, y)` is the same as `{range: [x, y]}`.] + dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/linkprediction-pipelines/config/#linkprediction-adding-model-candidates[Add a logistic regression model configuration to train as a candidate in the model selection phase]. footnote:prediction-range[Ranges can also be given as length two ``Tuple``s. I.e. `(x, y)` is the same as `{range: [x, y\]}`.] | addRandomForest | parameter_space: + - dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/linkprediction-pipelines/config/#linkprediction-adding-model-candidates[Add a random forest model configuration to train as a candidate in the model selection phase]. footnote:range[] + dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/linkprediction-pipelines/config/#linkprediction-adding-model-candidates[Add a random forest model configuration to train as a candidate in the model selection phase]. footnote:prediction-range[] | addMLP | parameter_space: + - dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/linkprediction-pipelines/config/#linkprediction-adding-model-candidates[Add an MLP model configuration to train as a candidate in the model selection phase]. footnote:range[] + dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/linkprediction-pipelines/config/#linkprediction-adding-model-candidates[Add an MLP model configuration to train as a candidate in the model selection phase]. footnote:prediction-range[] | configureAutoTuning | config: **kwargs | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/linkprediction-pipelines/config/#linkprediction-configure-auto-tuning[Configure the auto-tuning]. | train | G: Graph, + @@ -395,9 +395,9 @@ config: **kwargs | Series | https://neo4j.com/docs Union[str, list[str]] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/noderegression-pipelines/config/#noderegression-pipelines-adding-features[Select node properties to be used as features]. | configureSplit | config: **kwargs | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/noderegression-pipelines/config/#noderegression-pipelines-configure-splits[Configure the train-test dataset split]. | addLinearRegression | parameter_space: + -dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/noderegression-pipelines/config/#noderegression-pipelines-adding-model-candidates[Add a linear regression model configuration to train as a candidate in the model selection phase]. footnote:range[Ranges can also be given as length two `Tuple`s. I.e. `(x, y)` is the same as `{range: [x, y]}`.] +dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/noderegression-pipelines/config/#noderegression-pipelines-adding-model-candidates[Add a linear regression model configuration to train as a candidate in the model selection phase]. footnote:regression-range[Ranges can also be given as length two ``Tuple``s. I.e. `(x, y)` is the same as `{range: [x, y\]}`.] | addRandomForest | parameter_space: + -dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/noderegression-pipelines/config/#noderegression-pipelines-adding-model-candidates[Add a random forest model configuration to train as a candidate in the model selection phase]. footnote:range[] +dict[str, any] | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/noderegression-pipelines/config/#noderegression-pipelines-adding-model-candidates[Add a random forest model configuration to train as a candidate in the model selection phase]. footnote:regression-range[] | configureAutoTuning | config: **kwargs | Series | https://neo4j.com/docs/graph-data-science/current/machine-learning/node-property-prediction/noderegression-pipelines/config/#noderegression-pipelines-configure-auto-tuning[Configure the auto-tuning]. | train | G: Graph, + config: **kwargs | NCPredictionPipeline, + From 3463599a62aa0972e7795e0b84c46555029106c1 Mon Sep 17 00:00:00 2001 From: Neil Dewhurst Date: Wed, 10 Dec 2025 13:34:56 +0000 Subject: [PATCH 5/6] add xref validator --- doc/package.json | 1 + doc/preview.yml | 1 + doc/publish.yml | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/package.json b/doc/package.json index 979502ab7..21464c2c0 100644 --- a/doc/package.json +++ b/doc/package.json @@ -27,6 +27,7 @@ "@neo4j-antora/antora-page-roles": "^0.3.2", "@neo4j-antora/roles-labels": "^0.1.2", "@neo4j-antora/table-footnotes": "^1.0.0", + "@neo4j-antora/xref-hash-validator": "^0.1.3", "@neo4j-documentation/macros": "^1.0.4", "@neo4j-documentation/remote-include": "^1.0.0", "antora": "3.1.14", diff --git a/doc/preview.yml b/doc/preview.yml index 04855edff..a49ff1abb 100644 --- a/doc/preview.yml +++ b/doc/preview.yml @@ -30,6 +30,7 @@ antora: extensions: - "@neo4j-antora/table-footnotes" - "@neo4j-antora/roles-labels" + - "@neo4j-antora/xref-hash-validator" asciidoc: extensions: diff --git a/doc/publish.yml b/doc/publish.yml index e0f01419a..e1499f43f 100644 --- a/doc/publish.yml +++ b/doc/publish.yml @@ -29,7 +29,8 @@ antora: extensions: - "@neo4j-antora/table-footnotes" - "@neo4j-antora/roles-labels" - + - "@neo4j-antora/xref-hash-validator" + asciidoc: extensions: - "@neo4j-documentation/remote-include" From 5528a1fa1760464e0753ae35e0ae7d2664e024bd Mon Sep 17 00:00:00 2001 From: Neil Dewhurst Date: Wed, 10 Dec 2025 13:35:01 +0000 Subject: [PATCH 6/6] fix xrefs --- doc/modules/ROOT/pages/graph-object.adoc | 2 +- .../heterogeneous-node-classification-with-hashgnn.adoc | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/modules/ROOT/pages/graph-object.adoc b/doc/modules/ROOT/pages/graph-object.adoc index 9fc17dd6e..edbaa1f1f 100644 --- a/doc/modules/ROOT/pages/graph-object.adoc +++ b/doc/modules/ROOT/pages/graph-object.adoc @@ -86,7 +86,7 @@ Cypher projection is not a dedicated procedure; rather it requires writing a Cyp Read more about Cypher projection in the https://neo4j.com/docs/graph-data-science/current/management-ops/projections/graph-project-cypher-projection/[GDS manual]. -The method `gds.graph.cypher.project` bridges the gap between <> and having to follow with `gds.graph.get`. +The method `gds.graph.cypher.project` bridges the gap between xref:getting-started.adoc#getting-started-minimal-example[`gds.run_cypher`] and having to follow with `gds.graph.get`. === Syntax .Cypher projection signature diff --git a/doc/modules/ROOT/pages/tutorials/heterogeneous-node-classification-with-hashgnn.adoc b/doc/modules/ROOT/pages/tutorials/heterogeneous-node-classification-with-hashgnn.adoc index 6f9236f7d..c8ee258e3 100644 --- a/doc/modules/ROOT/pages/tutorials/heterogeneous-node-classification-with-hashgnn.adoc +++ b/doc/modules/ROOT/pages/tutorials/heterogeneous-node-classification-with-hashgnn.adoc @@ -285,8 +285,8 @@ found was logistic regression with `penalty=0.159748`. Further we note that the test set F1 score is 0.59118347, which is really good to when comparing to scores of other algorithms on this -dataset in the literature. More on this in the -link:#Conclusion[Conclusion] section below. +dataset in the literature. +For more information, see <>. == Making new predictions @@ -328,6 +328,7 @@ _ = pipe.drop() _ = model.drop() ---- +[[conclusion]] == Conclusion By using only the GDS library and its client, we were able to train a