From 97e91a1bedb235e0a78c68c437338c28003d44d3 Mon Sep 17 00:00:00 2001 From: Matthew McNeely Date: Mon, 17 Aug 2026 17:39:05 -0400 Subject: [PATCH 1/2] Chore(CI): repair spell checking and fix the typos it finds Both spellcheck workflows filtered on ./content/, a directory that has not existed since the Docusaurus migration, so neither has run against any documentation. Repointing them exposed two further problems. Vale.Terms treats every Vocab entry as a casing rule, but the Dgraph vocabulary is a spelling accept-list. That mismatch produced 1,378 false positives, including "use 'graphql' instead of 'GraphQL'" 652 times. Terms is now disabled and the vocabulary keeps its intended role. write-good was also enabled, and its E-Prime rule flags every use of "is", "are", and "be". It is a prose-style linter that duplicates documentation-style-guide.md, so this drops it and keeps Vale core. With the check working, Vale.Spelling and Vale.Repetition found 36 real typos that had gone unnoticed: 20 misspellings (Aplha, transactoins, Retreive, prediate, forfull, wouild, and others) and 16 duplicated words. All are fixed in the next content and backported to version-v25.4, the version served as latest. deployments.yml is removed. It ran reviewdog misspell, which Vale supersedes, and its name described a deployment it never performed. Lint scope is the four next-content directories. The versioned snapshots are frozen copies, and a version cut carries this content forward already checked. Verified with Vale 3.7.1: 0 errors, 0 warnings, and 0 suggestions across 293 files. npm run build passes. Co-Authored-By: Claude Opus 5 (1M context) --- .github/.vale.ini | 24 +- .../config/vocabularies/Dgraph/accept.txt | 444 +++++++++++------- .github/workflows/ci-spell-checking.yml | 105 +++-- .github/workflows/deployments.yml | 22 - .../docs-graphql/custom/directive.md | 4 +- .../graphql-dql/graphql-data-loading.md | 2 +- .../graphql-dql/graphql-dql-schema.md | 4 +- .../docs-graphql/graphql-dql/index.md | 2 +- .../docs-graphql/queries/search-filtering.md | 2 +- .../docs-graphql/schema/graph-links.md | 2 +- docusaurus-docs/docs-graphql/schema/types.md | 2 +- .../security/graphtraversal-rules.md | 2 +- .../docs-graphql/security/index.md | 2 +- .../tutorial-6/index.md | 2 +- .../tutorial-8/index.md | 2 +- .../developer/react/graphql/graphql-schema.md | 2 +- .../developer/react/react-introduction.md | 2 +- .../react-ui/react-ui-graphql-mutations.md | 4 +- .../react-ui/react-ui-graphql-queries.md | 2 +- .../todo-app-tutorial/todo-auth0-jwt.md | 2 +- .../docs/design-concepts/clients-concept.md | 4 +- .../docs/design-concepts/consistency-model.md | 4 +- .../docs/design-concepts/facets-concept.md | 2 +- .../design-concepts/index-tokenize-concept.md | 2 +- .../minimizing-network-calls.md | 2 +- .../network-call-minimization-concept.md | 2 +- .../design-concepts/posting-list-concept.md | 4 +- .../docs/design-concepts/queries-process.md | 2 +- docusaurus-docs/docs/design-concepts/raft.md | 2 +- docusaurus-docs/docs/dgraph-glossary.md | 4 +- docusaurus-docs/docs/dql/dql-rdf.md | 2 +- .../docs/dql/json-mutation-format.md | 2 +- docusaurus-docs/docs/dql/query/dql-query.md | 2 +- docusaurus-docs/docs/migration/export-data.md | 2 +- .../design-concepts/clients-concept.md | 4 +- .../design-concepts/consistency-model.md | 4 +- .../design-concepts/facets-concept.md | 2 +- .../design-concepts/index-tokenize-concept.md | 2 +- .../minimizing-network-calls.md | 2 +- .../network-call-minimization-concept.md | 2 +- .../design-concepts/posting-list-concept.md | 4 +- .../design-concepts/queries-process.md | 2 +- .../version-v25.4/design-concepts/raft.md | 2 +- .../version-v25.4/dgraph-glossary.md | 4 +- .../version-v25.4/dql/dql-rdf.md | 2 +- .../version-v25.4/dql/json-mutation-format.md | 2 +- .../version-v25.4/dql/query/dql-query.md | 2 +- .../version-v25.4/migration/export-data.md | 2 +- .../version-v25.4/custom/directive.md | 4 +- .../graphql-dql/graphql-data-loading.md | 2 +- .../graphql-dql/graphql-dql-schema.md | 4 +- .../version-v25.4/graphql-dql/index.md | 2 +- .../version-v25.4/queries/search-filtering.md | 2 +- .../version-v25.4/schema/graph-links.md | 2 +- .../version-v25.4/schema/types.md | 2 +- .../security/graphtraversal-rules.md | 2 +- .../version-v25.4/security/index.md | 2 +- 57 files changed, 406 insertions(+), 321 deletions(-) delete mode 100644 .github/workflows/deployments.yml diff --git a/.github/.vale.ini b/.github/.vale.ini index b0c25338..fa554cd1 100644 --- a/.github/.vale.ini +++ b/.github/.vale.ini @@ -1,10 +1,14 @@ -StylesPath = styles - -MinAlertLevel = suggestion - -Packages = write-good, Hugo - -Vocab = Dgraph - -[*.{md,txt}] -BasedOnStyles = Vale, write-good +StylesPath = styles + +MinAlertLevel = error + +Vocab = Dgraph + +[*.{md,mdx}] +BasedOnStyles = Vale + +# Vale.Terms enforces the exact casing of every Vocab entry. The Dgraph vocab is +# an accept-list for the spell checker, not a casing authority, so Terms reads it +# as thousands of false positives (for example "use 'graphql' instead of +# 'GraphQL'"). Spelling and Repetition carry the useful signal. +Vale.Terms = NO diff --git a/.github/styles/config/vocabularies/Dgraph/accept.txt b/.github/styles/config/vocabularies/Dgraph/accept.txt index 1ac0c675..9647db4a 100644 --- a/.github/styles/config/vocabularies/Dgraph/accept.txt +++ b/.github/styles/config/vocabularies/Dgraph/accept.txt @@ -1,203 +1,287 @@ -Dgraph -superflag -Dev -dev -Namespace -namespace -sharding +accessKey ACL -dgo -nquads -numgoroutines -goroutines -Goroutines -Mutex -mutex +addon +addUser +Akhtar +Algo +alice +allofterms +alloftext +alphanumerics +alpha_grpc +Anakin +analysisTools +analyz +aName +Ang +anyofterms +API +Async +avg_rating +AZs +backplane +backpressure +backtrace +backupId +backupNum +basic_member +Bauman +Baz +Bcrypt +bg +Bleve +blogpost +bName +bool +C'mon +Caro +CDNs +character_name +checkpwd +claimRef +CLI +Cloudwatch Cluster -Diggy -upsert -Upsert +codepoints +Cognito +compactionAnalysis cond -uid -UID -txn -TXN -xid -lexing -subgraph -GraphQL -graphql -substring +config +connectionParams +cosine_distance +CPUs +da +Darth +Datadog +deduplicate +deserialize +Dev +dgo +Dgraph +Diggy +directorScore +director_id +DQL's +DQLParse +efSearch +eg +Eifel +elses +en +eu +export_backup +failover +Farhan +fetchOptions +fi +film_name +forceFull +francesc fulltext -allofterms -anyofterms -orderasc -recurse -lt -le -ge -lt -gt func -Ratel -alpha_grpc -Jepsen -RDF -listBackups - -predicate -initial_release_date +ga +GB +gcs +ge genre_name -orderdesc -film_name +geo +geojson getJeunet -total_actors -totalActors -movie_total -perf_total -total_movies -num_actors -numFilms -character_name -someInfo -num_raters -avg_rating -num_rated -directorScore +Github +glog +goe +Golang +Gopher +Gophercon +goroutines +Grafana grandTotal -director_id -last_name -has_for_child - -performant -stderr -SDK -backtrace -Bleve -analyz GraphDB -HTTP +GraphQL gRPC -jq -JavaScript -transactionally -relref -Jaeger -zPages +gt +gzip +gzipped +Hashicorp +hasName +has_for_child +Hauer +HDDs hostname -Hostname -CLI -subcommand -Datadog -repo +hostPath +HTTP +hu +hy +idn +id_of_backup_to_restore +ie +iggy +indiana +initial_release_date +IP +isPartial +Jaeger +JavaScript +Jepsen +Jeunet +Jolie +jones +jq +json +jurassic +JWK +JWT +KGkit +ko +kubectl +kv +last_name +le +Leia +Levenshtein +lexing +Linearizability +linux +listBackups +located_in +logRequest +loopback +lt +Luhrmann +Luke +Luxon +Minio +mins +mkdir Mobx +Modus +morgan +movie_total +Mutex +Namespace +name_v +Netlify +ngram +nl +nouvel +nquads +nullability +nullable +num +numFilms +numgoroutines +num_actors +num_rated +num_raters +NVMe +OAuth +Obi-Wan +orderasc +orderdesc +parameterization +performant +perf_total +pitt +Plotly +Pokedex +posts_liked pprof +Pre +predicate +Priyanka +PV's +PVCs +PVs +queryContact +Rajiv +Ratel RDBMS -unencrypted - -Zstandard -GB -JWT -JWK -Webapp -OAuth -Surveyo -surveyo -signup -SignUp -todo -Todo -signin -bool -API -nullable -geo -geojson -json -JSON -Grafana -Cloudwatch -uncheck -config -syscalls -tarball -unicode -Unicode -IP -codepoints +RDF +readIndex rebalance rebalancing -unary -loopback -snake_case +recoverability +recurse +relref +repo +restoreInput +ro +RPCs +ru +SDK +secretHeaders +secretKey semver - -Leia +serializability +sharded +sharding +signin +signup +similarity_score +similar_to Skywalker -Luke -Anakin -Darth -Vader -Luhrmann -Obi-Wan -Jolie -pitt -Pitt -jones -Jones -indiana -Indiana -francesc +snake_case +snapshotting +someInfo +sourc spielberg -Spielberg -morgan -Morgan -Jeunet -Caro +SSDs +SSTs +stderr +stemmer steve +subcommand +subgraph +subnet +substring +superflag +superset +Surveyo +sv +syscalls +systemd Taraji +tarball +taskId +timeframe +tls +todo +totalActors +total_actors +total_movies +transactionally +Tsui +txn Uber -Eifel -Github -GitHub -Golang -Gopher -Gophercon -Levenshtein -Minio -MinIO -systemd -gzipped -gzip -blogpost -jurassic -Jurassic -Farhan -Akhtar -Hashicorp - -hy -eu -bg +uid +Un +unary +uncheck +unencrypted +unicode +untyped +upsert +URIs +url +urql +Vader +variadic +varints +vCPUs +vec +vector_distance +vemb +vlog +VMs +VSCode +vSlow +Vue +Webapp +Webpack +websocket +worksFor +xid zh -da -nl -en -fi -sv -ru -ro -ko -hu -hu -eg -ie - -Baz -Tsui - -aName -bName - -addUser -elses +zPages +Zsh +Zstandard diff --git a/.github/workflows/ci-spell-checking.yml b/.github/workflows/ci-spell-checking.yml index f403c250..590d75b3 100644 --- a/.github/workflows/ci-spell-checking.yml +++ b/.github/workflows/ci-spell-checking.yml @@ -1,43 +1,62 @@ -name: ci-spell-checking - -on: - push: - branches: - - main - pull_request: - types: - - opened - - reopened - - synchronize - - ready_for_review - branches: - - main - -jobs: - lint: - runs-on: ubuntu-latest - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - steps: - - uses: actions/checkout@v3 - - name: Get changed files in the content folder - id: changed-files-specific - uses: tj-actions/changed-files@v46 - with: - files: ./content/ - - name: Install Vale - if: steps.changed-files-specific.outputs.any_changed == 'true' - run: | - sudo apt-get update - sudo apt-get install curl - curl -Ls https://api.github.com/repos/errata-ai/vale/releases/latest \ - | grep "browser_download_url.*vale_[0-9.]*_Linux_64-bit.tar.gz" \ - | cut -d : -f 2,3 \ - | tr -d \" \ - | xargs curl -Ls \ - | tar xz - sudo mv ./vale /usr/bin/vale - vale --config=./.github/.vale.ini sync - - name: Run Vale - if: steps.changed-files-specific.outputs.any_changed == 'true' - run: vale --config=./.github/.vale.ini ${{ steps.changed-files-specific.outputs.all_changed_files }} +name: ci-spell-checking + +on: + push: + branches: + - main + pull_request: + types: + - opened + - reopened + - synchronize + - ready_for_review + branches: + - main + +permissions: + contents: read + +env: + # Pinned so a new Vale release cannot change what CI accepts without a commit. + VALE_VERSION: "3.7.1" + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + # changed-files needs history to diff against the base ref. + fetch-depth: 0 + + # Only the "next" content is linted. The *_versioned_docs snapshots are + # frozen copies of past releases, so they are not edited in place and a + # version cut copies this content forward already spell-checked. + - name: Get changed documentation files + id: changed-files + uses: tj-actions/changed-files@v46 + with: + files: | + docusaurus-docs/docs/**/*.{md,mdx} + docusaurus-docs/docs-graphql/**/*.{md,mdx} + docusaurus-docs/docs-ratel/**/*.{md,mdx} + docusaurus-docs/docs-learn/**/*.{md,mdx} + + - name: Install Vale + if: steps.changed-files.outputs.any_changed == 'true' + run: | + curl -fsSL -o vale.tar.gz \ + "https://github.com/errata-ai/vale/releases/download/v${VALE_VERSION}/vale_${VALE_VERSION}_Linux_64-bit.tar.gz" + tar -xzf vale.tar.gz vale + sudo mv vale /usr/local/bin/vale + vale --config=./.github/.vale.ini sync + + - name: Run Vale + if: steps.changed-files.outputs.any_changed == 'true' + env: + # Passed through the environment rather than interpolated into the + # shell, so a crafted filename cannot inject commands. + ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + run: | + echo "$ALL_CHANGED_FILES" | tr ' ' '\n' \ + | xargs --no-run-if-empty vale --config=./.github/.vale.ini diff --git a/.github/workflows/deployments.yml b/.github/workflows/deployments.yml deleted file mode 100644 index caab7e8a..00000000 --- a/.github/workflows/deployments.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: spellchecker - -on: - pull_request: - branches: - - main - -jobs: - misspell: - name: runner / misspell - runs-on: ubuntu-latest - steps: - - name: Check out code. - uses: actions/checkout@v1 - - name: misspell - id: check_for_typos - uses: reviewdog/action-misspell@v1 - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - path: "./content" - locale: "US" - diff --git a/docusaurus-docs/docs-graphql/custom/directive.md b/docusaurus-docs/docs-graphql/custom/directive.md index 9c2aed06..6f7a46ba 100644 --- a/docusaurus-docs/docs-graphql/custom/directive.md +++ b/docusaurus-docs/docs-graphql/custom/directive.md @@ -42,7 +42,7 @@ Each definition of custom logic must include: Optionally, the custom logic definition can also include: -* a `body` definition that can be used to construct a HTTP body from from arguments or fields. +* a `body` definition that can be used to construct a HTTP body from arguments or fields. * a list of `forwardHeaders` to take from the incoming request and add to the outgoing HTTP call. Used, for example, if the incoming request contains an auth token that must be passed to the custom logic. * a list of `secretHeaders` to take from the `Dgraph.Secret` defined in the schema file and add to the outgoing HTTP call. @@ -378,7 +378,7 @@ For example, a query from a custom HTTP endpoint will return an error in the fol ## How custom fields are resolved -When evaluating a request that includes custom fields, Dgraph might run multiple resolution stages to resolve all the fields. Dgraph must also ensure it requests enough data to forfull the custom fields. For example, given the `User` type defined as: +When evaluating a request that includes custom fields, Dgraph might run multiple resolution stages to resolve all the fields. Dgraph must also ensure it requests enough data to fulfill the custom fields. For example, given the `User` type defined as: ```graphql type User { diff --git a/docusaurus-docs/docs-graphql/graphql-dql/graphql-data-loading.md b/docusaurus-docs/docs-graphql/graphql-dql/graphql-data-loading.md index bc5f2264..87cdee90 100644 --- a/docusaurus-docs/docs-graphql/graphql-dql/graphql-data-loading.md +++ b/docusaurus-docs/docs-graphql/graphql-dql/graphql-data-loading.md @@ -10,7 +10,7 @@ After you have deployed your first GraphQL Schema, you get a GraphQL API served A more efficient way to populate the database is to use the Dgraph's [import tools](/migration/import-data). The first step is to understand the [schema mapping](/graphql/graphql-dql/graphql-dql-schema) and to prepare your RDF files or JSON files to follow the internal Dgraph predicates names. -You also have to make sure that you properly generate data for the `dgraph.type` predicate so that each node is asscociated with it's type. +You also have to make sure that you properly generate data for the `dgraph.type` predicate so that each node is associated with it's type. If you are using the [initial import](/migration/bulk-loader) tool, you can provide the GraphQL schema along with the data to import when executing the bulk load. diff --git a/docusaurus-docs/docs-graphql/graphql-dql/graphql-dql-schema.md b/docusaurus-docs/docs-graphql/graphql-dql/graphql-dql-schema.md index 91df57b9..ac6c29c5 100644 --- a/docusaurus-docs/docs-graphql/graphql-dql/graphql-dql-schema.md +++ b/docusaurus-docs/docs-graphql/graphql-dql/graphql-dql-schema.md @@ -53,7 +53,7 @@ type Person { } ``` -will lead the the declaration of 3 predicates in the DQL Schema: +will lead to the declaration of 3 predicates in the DQL Schema: - ``Person.id default`` - ``Person.name string`` @@ -83,7 +83,7 @@ type Person { name: String @search(by: [hash]) ... ``` -Is simply translated into a prediate index specification in the Dgraph schema: +Is simply translated into a predicate index specification in the Dgraph schema: ``` Person.name: string @index(hash) . ``` diff --git a/docusaurus-docs/docs-graphql/graphql-dql/index.md b/docusaurus-docs/docs-graphql/graphql-dql/index.md index eb4086fb..6676d090 100644 --- a/docusaurus-docs/docs-graphql/graphql-dql/index.md +++ b/docusaurus-docs/docs-graphql/graphql-dql/index.md @@ -8,7 +8,7 @@ As aGraphQL developer, you can deploy a GraphQL Schema in Dgraph and immediately However, by leveraging the graph database and using Dgraph Query Language (DQL), the Dgraph’s proprietary language, you can address advanced use cases and overcome some limitations of the GraphQL specification. -This section covers how to use DQL in the conjunction with GraphQL API, what are the best parctices and the points of attention. +This section covers how to use DQL in the conjunction with GraphQL API, what are the best practices and the points of attention. ### In this section diff --git a/docusaurus-docs/docs-graphql/queries/search-filtering.md b/docusaurus-docs/docs-graphql/queries/search-filtering.md index 98749a76..3fc752d2 100644 --- a/docusaurus-docs/docs-graphql/queries/search-filtering.md +++ b/docusaurus-docs/docs-graphql/queries/search-filtering.md @@ -95,7 +95,7 @@ Users are advised to use the `query` API instead. ### Query a list of objects -You can query a list of objects using GraphQL. For example, the following query fetches the `title`, `text` and and `datePublished` for all posts: +You can query a list of objects using GraphQL. For example, the following query fetches the `title`, `text` and `datePublished` for all posts: ```graphql query { diff --git a/docusaurus-docs/docs-graphql/schema/graph-links.md b/docusaurus-docs/docs-graphql/schema/graph-links.md index da675882..691bfae3 100644 --- a/docusaurus-docs/docs-graphql/schema/graph-links.md +++ b/docusaurus-docs/docs-graphql/schema/graph-links.md @@ -107,4 +107,4 @@ type Post { } ``` -Now, Dgraph will manage the connection between posts and authors and you can get on with concentrating on what your app needs to to - suggesting them interesting content. +Now, Dgraph will manage the connection between posts and authors and you can get on with concentrating on what your app needs to do - suggesting them interesting content. diff --git a/docusaurus-docs/docs-graphql/schema/types.md b/docusaurus-docs/docs-graphql/schema/types.md index f038513f..26e0de4c 100644 --- a/docusaurus-docs/docs-graphql/schema/types.md +++ b/docusaurus-docs/docs-graphql/schema/types.md @@ -53,7 +53,7 @@ Scalar lists in Dgraph act more like sets, so `tags: [String]` would always cont A Float array can be used as a vector using `@embedding` directive. It denotes a vector of floating point numbers, i.e an ordered array of float32. A type can contain more than one vector predicate. -Vectors are normaly used to store embeddings obtained from an ML model. +Vectors are normally used to store embeddings obtained from an ML model. When a Float vector is indexed, the GraphQL `querySimilarByEmbedding` and `querySimilarById` functions can be used for [similarity search](/graphql/queries/vector-similarity). diff --git a/docusaurus-docs/docs-graphql/security/graphtraversal-rules.md b/docusaurus-docs/docs-graphql/security/graphtraversal-rules.md index 6febc4cf..0eb4492c 100644 --- a/docusaurus-docs/docs-graphql/security/graphtraversal-rules.md +++ b/docusaurus-docs/docs-graphql/security/graphtraversal-rules.md @@ -110,7 +110,7 @@ type Todo @auth( } ``` -The @auth query rule will only return ``Todos`` having an owner matching the condition: the owner ``username`` must be equal the the JWT claim ``USER``. +The @auth query rule will only return ``Todos`` having an owner matching the condition: the owner ``username`` must be equal to the JWT claim ``USER``. All blocks must return some data for the query to succeed. You may want to use the field `__typename` in the most inner block to ensure a data match at this level. diff --git a/docusaurus-docs/docs-graphql/security/index.md b/docusaurus-docs/docs-graphql/security/index.md index 9c74f7eb..fe3031c7 100644 --- a/docusaurus-docs/docs-graphql/security/index.md +++ b/docusaurus-docs/docs-graphql/security/index.md @@ -8,7 +8,7 @@ When you deploy a GraphQL schema, Dgraph automatically generates the query and m Dgraph's GraphQL authorization features let you specify : -- if the client requires an API key or notif **anonymous access** is allowed to invoke a specific operation of the API. +- if the client requires an API key or if **anonymous access** is allowed to invoke a specific operation of the API. - if a client must present an identity in the form of a **JWT token** to use the API. - **RBAC rules** (Role Based Access Control) at operation level based on the claims included in the client JWT token. - **ABAC rules** (Attribute Based Access COntrol) at data level using graph traversal queries. diff --git a/docusaurus-docs/docs-learn/data-engineer/get-started-with-dgraph/tutorial-6/index.md b/docusaurus-docs/docs-learn/data-engineer/get-started-with-dgraph/tutorial-6/index.md index 4aee561a..4708b5dc 100644 --- a/docusaurus-docs/docs-learn/data-engineer/get-started-with-dgraph/tutorial-6/index.md +++ b/docusaurus-docs/docs-learn/data-engineer/get-started-with-dgraph/tutorial-6/index.md @@ -354,7 +354,7 @@ But we only have the following hashtags in the result: `Dgraph` and `graphqlconf That's because `regexp` function is case-sensitive by default. -Add the character `i` at the the end of the second argument of the `regexp` function to make it case insensitive: `regexp(predicate, /regular-expression/i)` +Add the character `i` at the end of the second argument of the `regexp` function to make it case insensitive: `regexp(predicate, /regular-expression/i)` ![regex-2](/images/tutorials/6/regex-query-2.png) diff --git a/docusaurus-docs/docs-learn/data-engineer/get-started-with-dgraph/tutorial-8/index.md b/docusaurus-docs/docs-learn/data-engineer/get-started-with-dgraph/tutorial-8/index.md index e02d6911..850b18ae 100644 --- a/docusaurus-docs/docs-learn/data-engineer/get-started-with-dgraph/tutorial-8/index.md +++ b/docusaurus-docs/docs-learn/data-engineer/get-started-with-dgraph/tutorial-8/index.md @@ -1489,7 +1489,7 @@ Our graph has: - One blue `city node`. We just have one node which represents the city of `San Francisco`. -- The green ones are the the `location` nodes. +- The green ones are the `location` nodes. We have a total of 13 locations. - The pink nodes represent the `location types`. We have four kinds of locations in our dataset: `museum`, `zoo`, `hotel`, and `tourist attractions`. diff --git a/docusaurus-docs/docs-learn/developer/react/graphql/graphql-schema.md b/docusaurus-docs/docs-learn/developer/react/graphql/graphql-schema.md index 0639c595..e50172d6 100644 --- a/docusaurus-docs/docs-learn/developer/react/graphql/graphql-schema.md +++ b/docusaurus-docs/docs-learn/developer/react/graphql/graphql-schema.md @@ -143,7 +143,7 @@ type Post { GraphQL schemas are always under-specified in this way. It's left up to the documentation and implementation to make a two-way connection, if it exists. There might be multiple connections between two types; for example, an author -might also be linked to the the posts they have commented on. So, it makes sense +might also be linked to the posts they have commented on. So, it makes sense that you need something other than just the types as defined above to specify two-way edges. diff --git a/docusaurus-docs/docs-learn/developer/react/react-introduction.md b/docusaurus-docs/docs-learn/developer/react/react-introduction.md index 17bb3fbf..1b61ecc3 100644 --- a/docusaurus-docs/docs-learn/developer/react/react-introduction.md +++ b/docusaurus-docs/docs-learn/developer/react/react-introduction.md @@ -12,7 +12,7 @@ subscriptions. ## The App -This app is designed to manage lists of posts in in different categories. A home +This app is designed to manage lists of posts in different categories. A home page lets each user view a feed of posts, as follows: diff --git a/docusaurus-docs/docs-learn/developer/react/react-ui/react-ui-graphql-mutations.md b/docusaurus-docs/docs-learn/developer/react/react-ui/react-ui-graphql-mutations.md index 4c9d01a5..995ed23a 100644 --- a/docusaurus-docs/docs-learn/developer/react/react-ui/react-ui-graphql-mutations.md +++ b/docusaurus-docs/docs-learn/developer/react/react-ui/react-ui-graphql-mutations.md @@ -199,7 +199,7 @@ as follows: ``` -That sets up the the `addPost` function to run the `addPost` mutation, and on +That sets up the `addPost` function to run the `addPost` mutation, and on completion inserts the new post into the cache. ## Layout for the mutation @@ -218,7 +218,7 @@ const [createPost, setCreatePost] = useState(false) ``` -The state for the the new post data is again controlled by React state. The +The state for the new post data is again controlled by React state. The modal gives the user input options to update that data, as follows: ```js diff --git a/docusaurus-docs/docs-learn/developer/react/react-ui/react-ui-graphql-queries.md b/docusaurus-docs/docs-learn/developer/react/react-ui/react-ui-graphql-queries.md index adfa08dd..d5327f08 100644 --- a/docusaurus-docs/docs-learn/developer/react/react-ui/react-ui-graphql-queries.md +++ b/docusaurus-docs/docs-learn/developer/react/react-ui/react-ui-graphql-queries.md @@ -19,7 +19,7 @@ Firstly, add all the GraphQL Code Generator dependencies as development dependen yarn add -D @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-operations @graphql-codegen/typescript-react-apollo @graphql-codegen/add @graphql-codegen/near-operation-file-preset @graphql-codegen/named-operations-object ``` -You can then run the following command to to set up GraphQL Code Generator for +You can then run the following command to set up GraphQL Code Generator for the project: ```sh diff --git a/docusaurus-docs/docs-learn/developer/todo-app-tutorial/todo-auth0-jwt.md b/docusaurus-docs/docs-learn/developer/todo-app-tutorial/todo-auth0-jwt.md index 2080e068..84ddecb9 100644 --- a/docusaurus-docs/docs-learn/developer/todo-app-tutorial/todo-auth0-jwt.md +++ b/docusaurus-docs/docs-learn/developer/todo-app-tutorial/todo-auth0-jwt.md @@ -12,7 +12,7 @@ So we can use something known as "Rules" (left sidebar on dashboard page under " ![Rule](/images/graphql/tutorial/todo/rule.png) -Replace the content with the the following - +Replace the content with the following - ```javascript function (user, context, callback) { const namespace = "https://dgraph.io/jwt/claims"; diff --git a/docusaurus-docs/docs/design-concepts/clients-concept.md b/docusaurus-docs/docs/design-concepts/clients-concept.md index 1438de13..8881f53b 100644 --- a/docusaurus-docs/docs/design-concepts/clients-concept.md +++ b/docusaurus-docs/docs/design-concepts/clients-concept.md @@ -2,11 +2,11 @@ title: Dgraph Clients --- -A client is a program that calls dgraph. Broadly, there are stand alone clients such as Ratel, which is a graphical web-based application, and programmatic client libraries which are embedded in larger programs to efficiently and idomatically call Dgraph. +A client is a program that calls dgraph. Broadly, there are stand alone clients such as Ratel, which is a graphical web-based application, and programmatic client libraries which are embedded in larger programs to efficiently and idiomatically call Dgraph. GraphQL is an open standard with many clients (graphical and libraries) also, and GraphQL clients work with Dgraph. -Dgraph provides [client libraries](../clients) for many languages. These clients send DQL queries, and perform useful functions such as logging in, in idomatic ways in each language. +Dgraph provides [client libraries](../clients) for many languages. These clients send DQL queries, and perform useful functions such as logging in, in idiomatic ways in each language. Note that Dgraph does not force or insist on any particular GraphQL client. Any GraphQL client, GUI, tool, or library will work well with Dgraph, and it is the users' choice which to choose. Dgraph only provides clients for the proprietary DQL query language. GraphQL clients are available for free from many organizations. diff --git a/docusaurus-docs/docs/design-concepts/consistency-model.md b/docusaurus-docs/docs/design-concepts/consistency-model.md index db604b52..54a48fb3 100644 --- a/docusaurus-docs/docs/design-concepts/consistency-model.md +++ b/docusaurus-docs/docs/design-concepts/consistency-model.md @@ -3,7 +3,7 @@ title: Consistency Model --- ### Dgraph supports MVCC, Read Snapshots and Distributed ACID transactions -Multi-version concurrency control (MVCC) is a technique where many versions of data are written (but never modified) on disk, so many versions exist. This helps control concurrency because the database is queried at a particular "timestamp" for the duration of one query to provide snapshot isolation and ensure data is consistent for that transaction. (Note that MVCC is losely related to LSM trees - in LSM parlance, data is "logged" to write-only files, which are later merged via Log Compaction.) +Multi-version concurrency control (MVCC) is a technique where many versions of data are written (but never modified) on disk, so many versions exist. This helps control concurrency because the database is queried at a particular "timestamp" for the duration of one query to provide snapshot isolation and ensure data is consistent for that transaction. (Note that MVCC is loosely related to LSM trees - in LSM parlance, data is "logged" to write-only files, which are later merged via Log Compaction.) Writes are faster with MVCC because data is always written by flushing a larger in-memory buffer (a memtable) to new, contiguous files (SST files), and newer data obscures or replaces older data. Consistent updates from each transaction share a logical commit timestamp (a 64 bit, increasing number loosely correlated to wall clock time), and all reads occur "at a point in time" meaning any read accesses a known, stable set of committed data using these same commit timestamps. New or in-process commits are associated with a later timestamp so they do not affect running queries at earlier timestamps. This allows pure queries (reads) to execute without any locks. @@ -13,7 +13,7 @@ One special set of structures are "memtables" which are also referred to as bein Dgraph uses the RAFT protocol to synchronize updates and ensure updates are durably written to a majority of alpha nodes in a cluster before the transaction is considered successful. RAFT ensures true, distributed, cluster wide transactions across multiple nodes, keys, edges, indexes and facets. Dgraph provides true ACID transactions, and does not impose limitations on what can be in a transaction: a transaction can involve multiple predicates, multiple nodes, multiple keys and even multiple shards. ### Transactions are lockless -Dgraph transactoins do not use locks, allowing fast, distributed transactions. +Dgraph transactions do not use locks, allowing fast, distributed transactions. For reads, queries execute at a particular timestamp based on snapshot isolation, which isolates reads from any concurrent write activity. All reads access snapshots across the entire cluster, seeing all previously committed transactions in full, regardless of which alpha node received earlier queries. diff --git a/docusaurus-docs/docs/design-concepts/facets-concept.md b/docusaurus-docs/docs/design-concepts/facets-concept.md index 46432b57..681afaf4 100644 --- a/docusaurus-docs/docs/design-concepts/facets-concept.md +++ b/docusaurus-docs/docs/design-concepts/facets-concept.md @@ -4,6 +4,6 @@ title: Facets Dgraph allows a set of properties to be associated with any `Relationship`. E.g. if there is a "worksFor" relationships between Node "Bob" and Node "Google", this relationship may have facet values of "since": 2002-05-05 and "position": "Engineer". -Facets can always be replaced by adding a new Node representing the relationship and storing the facet data as attriubutes of the new Node. +Facets can always be replaced by adding a new Node representing the relationship and storing the facet data as attributes of the new Node. The term "facet" is also common in database and search engine technology, and indicates a dimension or classification of data. One way to use facets it to indicate a relationship type. diff --git a/docusaurus-docs/docs/design-concepts/index-tokenize-concept.md b/docusaurus-docs/docs/design-concepts/index-tokenize-concept.md index 0bf2e9c8..5d188d21 100644 --- a/docusaurus-docs/docs/design-concepts/index-tokenize-concept.md +++ b/docusaurus-docs/docs/design-concepts/index-tokenize-concept.md @@ -10,4 +10,4 @@ Typically, Dgraph query access is optimized for forward access. When other acces Tokenizers are simply small algorithms that create indexed values from some Node property. E.g. if a Book Node has a Title attribute, and you add a "term" index, each word (term) in the text will be indexed. The word "Tokenizer" derives its name from tokenizing operations to create this index type. -Similary if the Book has a publicationDateTime you can add a day or year index. The "tokenizer" here extracts the value to be indexed, which may be the day or hour of the dateTime, or only the year. +Similarly if the Book has a publicationDateTime you can add a day or year index. The "tokenizer" here extracts the value to be indexed, which may be the day or hour of the dateTime, or only the year. diff --git a/docusaurus-docs/docs/design-concepts/minimizing-network-calls.md b/docusaurus-docs/docs/design-concepts/minimizing-network-calls.md index efcdb7ae..6db5db55 100644 --- a/docusaurus-docs/docs/design-concepts/minimizing-network-calls.md +++ b/docusaurus-docs/docs/design-concepts/minimizing-network-calls.md @@ -33,7 +33,7 @@ Approach 2: * Find all their friends (call this `result set 2`). * Intersect `result set 1` with `result set 2`. -Both approaches wouild result in a lot of data moving back and forth between database and +Both approaches would result in a lot of data moving back and forth between database and application; would be slow to execute, and may require running an offline job. ### Dgraph Approach diff --git a/docusaurus-docs/docs/design-concepts/network-call-minimization-concept.md b/docusaurus-docs/docs/design-concepts/network-call-minimization-concept.md index 1b0e2341..84ab584f 100644 --- a/docusaurus-docs/docs/design-concepts/network-call-minimization-concept.md +++ b/docusaurus-docs/docs/design-concepts/network-call-minimization-concept.md @@ -4,4 +4,4 @@ title: Network Call Minimization Compared to RAM or SSD access, network calls are slow, so Dgraph is built from the ground up to minimize them. For graph databases which store sub-graphs on different shards, this is difficult or impossible, but predicate-based (relationship-based) sharding allows fast distributed query with Dgraph. -See [How Dgraph Minmizes Network Calls](minimizing-network-calls) for more details. +See [How Dgraph Minimizes Network Calls](minimizing-network-calls) for more details. diff --git a/docusaurus-docs/docs/design-concepts/posting-list-concept.md b/docusaurus-docs/docs/design-concepts/posting-list-concept.md index 00da61b9..b1b2f508 100644 --- a/docusaurus-docs/docs/design-concepts/posting-list-concept.md +++ b/docusaurus-docs/docs/design-concepts/posting-list-concept.md @@ -44,7 +44,7 @@ person4 | friend | person3   -The corrsponding posting lists would be something like: +The corresponding posting lists would be something like: ``` person1UID+friend->[person2UID, person4UID] @@ -94,6 +94,6 @@ If other types such as Pets or Cities also have a name property, their data will ### Performance implications A key advantage of grouping data into predicate-based shards is that we have all the data to do one join in one `tablet` on one server/shard. This means, one RPC to -the machine serving that `tablet` will be adequate, as documented in [How Dgraph Minmizes Network Calls](minimizing-network-calls). +the machine serving that `tablet` will be adequate, as documented in [How Dgraph Minimizes Network Calls](minimizing-network-calls). Posting lists are the unit of data access and caching in Dgraph. The underlying key-value store stores and retrieves posting lists as a unit. Queries that access larger posting lists will use more cache and may incur more disk access for un-cached posting lists. diff --git a/docusaurus-docs/docs/design-concepts/queries-process.md b/docusaurus-docs/docs/design-concepts/queries-process.md index 951d2f91..ae8ad591 100644 --- a/docusaurus-docs/docs/design-concepts/queries-process.md +++ b/docusaurus-docs/docs/design-concepts/queries-process.md @@ -27,7 +27,7 @@ To understand how query execution works, look at an example. Let's assume we have 3 Alpha instances, and instance id=2 receives this query. These are the steps: * This query specifies the exact UID list (one UID) to start with, so there is no root query clause. -* Retreive posting lists using keys = `0x1::rel_A`, `0x1::rel_B`, and `0x1::rel_C`. +* Retrieve posting lists using keys = `0x1::rel_A`, `0x1::rel_B`, and `0x1::rel_C`. * At worst, these predicates could belong to 3 different groups if the DB is sharded, so this would incur at most 3 network calls. * The above posting lists would include three lists of UIDs or values. * The UID results (id1, id2, ..., idn) for `rel_B` are converted into queries for `id1::rel_B1` `id2::rel_B1`, etc., and for `id1::rel_B2` `id2::rel_B2`, etc. diff --git a/docusaurus-docs/docs/design-concepts/raft.md b/docusaurus-docs/docs/design-concepts/raft.md index 9428ed31..c0b0dc2e 100644 --- a/docusaurus-docs/docs/design-concepts/raft.md +++ b/docusaurus-docs/docs/design-concepts/raft.md @@ -2,7 +2,7 @@ title: RAFT --- -Dgraph uses RAFT whenever consensus among a distribued set of servers is required, such as ensuring that a transaction has been properly committed, or determining the proper timestamp for a read or write. Each zero or alpha `group` uses raft to elect leaders. +Dgraph uses RAFT whenever consensus among a distributed set of servers is required, such as ensuring that a transaction has been properly committed, or determining the proper timestamp for a read or write. Each zero or alpha `group` uses raft to elect leaders. This section aims to explain the RAFT consensus algorithm in simple terms. The idea is to give you just enough to make you understand the basic concepts, without going into explanations about why it diff --git a/docusaurus-docs/docs/dgraph-glossary.md b/docusaurus-docs/docs/dgraph-glossary.md index 4a6d26ad..a08f2bb3 100644 --- a/docusaurus-docs/docs/dgraph-glossary.md +++ b/docusaurus-docs/docs/dgraph-glossary.md @@ -41,7 +41,7 @@ A mutation is a request to modify the database. Mutations include insert, update ### Node ### Conceptually, a node is "a thing" or an object of the business domain. For every node, Dgraph stores and maintains a universal identifier [UID](#uid), a list of properties, and the [relationships](#relationship) the node has with other nodes. -The term "node" is also used in software architecture to reference a physical computer or a virtual machine running a module of Dgraph in a cluster. See [Aplha node](#alpha) and [Zero node](#zero). +The term "node" is also used in software architecture to reference a physical computer or a virtual machine running a module of Dgraph in a cluster. See [Alpha node](#alpha) and [Zero node](#zero). ### Predicate ### In [RDF](#rdf) terminology, a predicate is the smallest piece of information about an object. A predicate can hold a literal value or can describe a relation to another entity : @@ -73,7 +73,7 @@ A UID is the Universal Identifier of a node. `uid` is a reserved property holdin ### Upsert ### -An upsert operation combines a Query with a [Mutation](#mutation). Typically, a node is searched for, and then depending on if it is found or not, a new node is created with associated predicates or the exixting node relationships are updated. Upsert operations are important to implement uniqueness of predicates. +An upsert operation combines a Query with a [Mutation](#mutation). Typically, a node is searched for, and then depending on if it is found or not, a new node is created with associated predicates or the existing node relationships are updated. Upsert operations are important to implement uniqueness of predicates. ### Zero ### Dgraph consists of Zero and [Alpha](#alpha) nodes. Zero nodes control the Dgraph database cluster. It assigns Alpha nodes to groups, re-balances data between groups, handles transaction timestamp and UID assignment. diff --git a/docusaurus-docs/docs/dql/dql-rdf.md b/docusaurus-docs/docs/dql/dql-rdf.md index 0593a10e..353b2544 100644 --- a/docusaurus-docs/docs/dql/dql-rdf.md +++ b/docusaurus-docs/docs/dql/dql-rdf.md @@ -69,7 +69,7 @@ The supported [RDF datatypes](https://www.w3.org/TR/rdf11-concepts/#section-Data ### Facets -Dgraph is more expressive than RDF in that it allows properties to be stored on every relation. These properties are called Facets in Dgraph, and dgraph allows an extension to RDF where facet values are incuded in any triple. +Dgraph is more expressive than RDF in that it allows properties to be stored on every relation. These properties are called Facets in Dgraph, and dgraph allows an extension to RDF where facet values are included in any triple. #### Creating a list with facets The following set operation uses a sequence of RDF statements with additional facet information: diff --git a/docusaurus-docs/docs/dql/json-mutation-format.md b/docusaurus-docs/docs/dql/json-mutation-format.md index 20267e2b..a3a9c489 100644 --- a/docusaurus-docs/docs/dql/json-mutation-format.md +++ b/docusaurus-docs/docs/dql/json-mutation-format.md @@ -326,7 +326,7 @@ To remove one value from the list: } ``` -To remove multiple multiple values: +To remove multiple values: ```JSON { "delete": { diff --git a/docusaurus-docs/docs/dql/query/dql-query.md b/docusaurus-docs/docs/dql/query/dql-query.md index f93f8884..a1f61315 100644 --- a/docusaurus-docs/docs/dql/query/dql-query.md +++ b/docusaurus-docs/docs/dql/query/dql-query.md @@ -280,7 +280,7 @@ Query Example: _"Movies containing both Angelina Jolie and Morgan Freeman sorted ### Combining multiple `var` blocks -You could get the same query results by logically combining both both `var` blocks +You could get the same query results by logically combining both `var` blocks in the films block, as follows: ``` { diff --git a/docusaurus-docs/docs/migration/export-data.md b/docusaurus-docs/docs/migration/export-data.md index af103cb4..79f85793 100644 --- a/docusaurus-docs/docs/migration/export-data.md +++ b/docusaurus-docs/docs/migration/export-data.md @@ -2,7 +2,7 @@ title: Export data --- -As an `Administrator` you can export data from Dgraph to an an object store, NFS, or a file path. +As an `Administrator` you can export data from Dgraph to an object store, NFS, or a file path. When you export data, three files are generated: diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/clients-concept.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/clients-concept.md index 1438de13..8881f53b 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/clients-concept.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/clients-concept.md @@ -2,11 +2,11 @@ title: Dgraph Clients --- -A client is a program that calls dgraph. Broadly, there are stand alone clients such as Ratel, which is a graphical web-based application, and programmatic client libraries which are embedded in larger programs to efficiently and idomatically call Dgraph. +A client is a program that calls dgraph. Broadly, there are stand alone clients such as Ratel, which is a graphical web-based application, and programmatic client libraries which are embedded in larger programs to efficiently and idiomatically call Dgraph. GraphQL is an open standard with many clients (graphical and libraries) also, and GraphQL clients work with Dgraph. -Dgraph provides [client libraries](../clients) for many languages. These clients send DQL queries, and perform useful functions such as logging in, in idomatic ways in each language. +Dgraph provides [client libraries](../clients) for many languages. These clients send DQL queries, and perform useful functions such as logging in, in idiomatic ways in each language. Note that Dgraph does not force or insist on any particular GraphQL client. Any GraphQL client, GUI, tool, or library will work well with Dgraph, and it is the users' choice which to choose. Dgraph only provides clients for the proprietary DQL query language. GraphQL clients are available for free from many organizations. diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/consistency-model.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/consistency-model.md index db604b52..54a48fb3 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/consistency-model.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/consistency-model.md @@ -3,7 +3,7 @@ title: Consistency Model --- ### Dgraph supports MVCC, Read Snapshots and Distributed ACID transactions -Multi-version concurrency control (MVCC) is a technique where many versions of data are written (but never modified) on disk, so many versions exist. This helps control concurrency because the database is queried at a particular "timestamp" for the duration of one query to provide snapshot isolation and ensure data is consistent for that transaction. (Note that MVCC is losely related to LSM trees - in LSM parlance, data is "logged" to write-only files, which are later merged via Log Compaction.) +Multi-version concurrency control (MVCC) is a technique where many versions of data are written (but never modified) on disk, so many versions exist. This helps control concurrency because the database is queried at a particular "timestamp" for the duration of one query to provide snapshot isolation and ensure data is consistent for that transaction. (Note that MVCC is loosely related to LSM trees - in LSM parlance, data is "logged" to write-only files, which are later merged via Log Compaction.) Writes are faster with MVCC because data is always written by flushing a larger in-memory buffer (a memtable) to new, contiguous files (SST files), and newer data obscures or replaces older data. Consistent updates from each transaction share a logical commit timestamp (a 64 bit, increasing number loosely correlated to wall clock time), and all reads occur "at a point in time" meaning any read accesses a known, stable set of committed data using these same commit timestamps. New or in-process commits are associated with a later timestamp so they do not affect running queries at earlier timestamps. This allows pure queries (reads) to execute without any locks. @@ -13,7 +13,7 @@ One special set of structures are "memtables" which are also referred to as bein Dgraph uses the RAFT protocol to synchronize updates and ensure updates are durably written to a majority of alpha nodes in a cluster before the transaction is considered successful. RAFT ensures true, distributed, cluster wide transactions across multiple nodes, keys, edges, indexes and facets. Dgraph provides true ACID transactions, and does not impose limitations on what can be in a transaction: a transaction can involve multiple predicates, multiple nodes, multiple keys and even multiple shards. ### Transactions are lockless -Dgraph transactoins do not use locks, allowing fast, distributed transactions. +Dgraph transactions do not use locks, allowing fast, distributed transactions. For reads, queries execute at a particular timestamp based on snapshot isolation, which isolates reads from any concurrent write activity. All reads access snapshots across the entire cluster, seeing all previously committed transactions in full, regardless of which alpha node received earlier queries. diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/facets-concept.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/facets-concept.md index 46432b57..681afaf4 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/facets-concept.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/facets-concept.md @@ -4,6 +4,6 @@ title: Facets Dgraph allows a set of properties to be associated with any `Relationship`. E.g. if there is a "worksFor" relationships between Node "Bob" and Node "Google", this relationship may have facet values of "since": 2002-05-05 and "position": "Engineer". -Facets can always be replaced by adding a new Node representing the relationship and storing the facet data as attriubutes of the new Node. +Facets can always be replaced by adding a new Node representing the relationship and storing the facet data as attributes of the new Node. The term "facet" is also common in database and search engine technology, and indicates a dimension or classification of data. One way to use facets it to indicate a relationship type. diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/index-tokenize-concept.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/index-tokenize-concept.md index 0bf2e9c8..5d188d21 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/index-tokenize-concept.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/index-tokenize-concept.md @@ -10,4 +10,4 @@ Typically, Dgraph query access is optimized for forward access. When other acces Tokenizers are simply small algorithms that create indexed values from some Node property. E.g. if a Book Node has a Title attribute, and you add a "term" index, each word (term) in the text will be indexed. The word "Tokenizer" derives its name from tokenizing operations to create this index type. -Similary if the Book has a publicationDateTime you can add a day or year index. The "tokenizer" here extracts the value to be indexed, which may be the day or hour of the dateTime, or only the year. +Similarly if the Book has a publicationDateTime you can add a day or year index. The "tokenizer" here extracts the value to be indexed, which may be the day or hour of the dateTime, or only the year. diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/minimizing-network-calls.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/minimizing-network-calls.md index efcdb7ae..6db5db55 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/minimizing-network-calls.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/minimizing-network-calls.md @@ -33,7 +33,7 @@ Approach 2: * Find all their friends (call this `result set 2`). * Intersect `result set 1` with `result set 2`. -Both approaches wouild result in a lot of data moving back and forth between database and +Both approaches would result in a lot of data moving back and forth between database and application; would be slow to execute, and may require running an offline job. ### Dgraph Approach diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/network-call-minimization-concept.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/network-call-minimization-concept.md index 1b0e2341..84ab584f 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/network-call-minimization-concept.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/network-call-minimization-concept.md @@ -4,4 +4,4 @@ title: Network Call Minimization Compared to RAM or SSD access, network calls are slow, so Dgraph is built from the ground up to minimize them. For graph databases which store sub-graphs on different shards, this is difficult or impossible, but predicate-based (relationship-based) sharding allows fast distributed query with Dgraph. -See [How Dgraph Minmizes Network Calls](minimizing-network-calls) for more details. +See [How Dgraph Minimizes Network Calls](minimizing-network-calls) for more details. diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/posting-list-concept.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/posting-list-concept.md index 00da61b9..b1b2f508 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/posting-list-concept.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/posting-list-concept.md @@ -44,7 +44,7 @@ person4 | friend | person3   -The corrsponding posting lists would be something like: +The corresponding posting lists would be something like: ``` person1UID+friend->[person2UID, person4UID] @@ -94,6 +94,6 @@ If other types such as Pets or Cities also have a name property, their data will ### Performance implications A key advantage of grouping data into predicate-based shards is that we have all the data to do one join in one `tablet` on one server/shard. This means, one RPC to -the machine serving that `tablet` will be adequate, as documented in [How Dgraph Minmizes Network Calls](minimizing-network-calls). +the machine serving that `tablet` will be adequate, as documented in [How Dgraph Minimizes Network Calls](minimizing-network-calls). Posting lists are the unit of data access and caching in Dgraph. The underlying key-value store stores and retrieves posting lists as a unit. Queries that access larger posting lists will use more cache and may incur more disk access for un-cached posting lists. diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/queries-process.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/queries-process.md index 951d2f91..ae8ad591 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/queries-process.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/queries-process.md @@ -27,7 +27,7 @@ To understand how query execution works, look at an example. Let's assume we have 3 Alpha instances, and instance id=2 receives this query. These are the steps: * This query specifies the exact UID list (one UID) to start with, so there is no root query clause. -* Retreive posting lists using keys = `0x1::rel_A`, `0x1::rel_B`, and `0x1::rel_C`. +* Retrieve posting lists using keys = `0x1::rel_A`, `0x1::rel_B`, and `0x1::rel_C`. * At worst, these predicates could belong to 3 different groups if the DB is sharded, so this would incur at most 3 network calls. * The above posting lists would include three lists of UIDs or values. * The UID results (id1, id2, ..., idn) for `rel_B` are converted into queries for `id1::rel_B1` `id2::rel_B1`, etc., and for `id1::rel_B2` `id2::rel_B2`, etc. diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/raft.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/raft.md index 9428ed31..c0b0dc2e 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/raft.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/design-concepts/raft.md @@ -2,7 +2,7 @@ title: RAFT --- -Dgraph uses RAFT whenever consensus among a distribued set of servers is required, such as ensuring that a transaction has been properly committed, or determining the proper timestamp for a read or write. Each zero or alpha `group` uses raft to elect leaders. +Dgraph uses RAFT whenever consensus among a distributed set of servers is required, such as ensuring that a transaction has been properly committed, or determining the proper timestamp for a read or write. Each zero or alpha `group` uses raft to elect leaders. This section aims to explain the RAFT consensus algorithm in simple terms. The idea is to give you just enough to make you understand the basic concepts, without going into explanations about why it diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/dgraph-glossary.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/dgraph-glossary.md index 4a6d26ad..a08f2bb3 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/dgraph-glossary.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/dgraph-glossary.md @@ -41,7 +41,7 @@ A mutation is a request to modify the database. Mutations include insert, update ### Node ### Conceptually, a node is "a thing" or an object of the business domain. For every node, Dgraph stores and maintains a universal identifier [UID](#uid), a list of properties, and the [relationships](#relationship) the node has with other nodes. -The term "node" is also used in software architecture to reference a physical computer or a virtual machine running a module of Dgraph in a cluster. See [Aplha node](#alpha) and [Zero node](#zero). +The term "node" is also used in software architecture to reference a physical computer or a virtual machine running a module of Dgraph in a cluster. See [Alpha node](#alpha) and [Zero node](#zero). ### Predicate ### In [RDF](#rdf) terminology, a predicate is the smallest piece of information about an object. A predicate can hold a literal value or can describe a relation to another entity : @@ -73,7 +73,7 @@ A UID is the Universal Identifier of a node. `uid` is a reserved property holdin ### Upsert ### -An upsert operation combines a Query with a [Mutation](#mutation). Typically, a node is searched for, and then depending on if it is found or not, a new node is created with associated predicates or the exixting node relationships are updated. Upsert operations are important to implement uniqueness of predicates. +An upsert operation combines a Query with a [Mutation](#mutation). Typically, a node is searched for, and then depending on if it is found or not, a new node is created with associated predicates or the existing node relationships are updated. Upsert operations are important to implement uniqueness of predicates. ### Zero ### Dgraph consists of Zero and [Alpha](#alpha) nodes. Zero nodes control the Dgraph database cluster. It assigns Alpha nodes to groups, re-balances data between groups, handles transaction timestamp and UID assignment. diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/dql-rdf.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/dql-rdf.md index 0593a10e..353b2544 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/dql-rdf.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/dql-rdf.md @@ -69,7 +69,7 @@ The supported [RDF datatypes](https://www.w3.org/TR/rdf11-concepts/#section-Data ### Facets -Dgraph is more expressive than RDF in that it allows properties to be stored on every relation. These properties are called Facets in Dgraph, and dgraph allows an extension to RDF where facet values are incuded in any triple. +Dgraph is more expressive than RDF in that it allows properties to be stored on every relation. These properties are called Facets in Dgraph, and dgraph allows an extension to RDF where facet values are included in any triple. #### Creating a list with facets The following set operation uses a sequence of RDF statements with additional facet information: diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/json-mutation-format.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/json-mutation-format.md index 20267e2b..a3a9c489 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/json-mutation-format.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/json-mutation-format.md @@ -326,7 +326,7 @@ To remove one value from the list: } ``` -To remove multiple multiple values: +To remove multiple values: ```JSON { "delete": { diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/query/dql-query.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/query/dql-query.md index f93f8884..a1f61315 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/query/dql-query.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/dql/query/dql-query.md @@ -280,7 +280,7 @@ Query Example: _"Movies containing both Angelina Jolie and Morgan Freeman sorted ### Combining multiple `var` blocks -You could get the same query results by logically combining both both `var` blocks +You could get the same query results by logically combining both `var` blocks in the films block, as follows: ``` { diff --git a/docusaurus-docs/docs_versioned_docs/version-v25.4/migration/export-data.md b/docusaurus-docs/docs_versioned_docs/version-v25.4/migration/export-data.md index af103cb4..79f85793 100644 --- a/docusaurus-docs/docs_versioned_docs/version-v25.4/migration/export-data.md +++ b/docusaurus-docs/docs_versioned_docs/version-v25.4/migration/export-data.md @@ -2,7 +2,7 @@ title: Export data --- -As an `Administrator` you can export data from Dgraph to an an object store, NFS, or a file path. +As an `Administrator` you can export data from Dgraph to an object store, NFS, or a file path. When you export data, three files are generated: diff --git a/docusaurus-docs/graphql_versioned_docs/version-v25.4/custom/directive.md b/docusaurus-docs/graphql_versioned_docs/version-v25.4/custom/directive.md index 9c2aed06..6f7a46ba 100644 --- a/docusaurus-docs/graphql_versioned_docs/version-v25.4/custom/directive.md +++ b/docusaurus-docs/graphql_versioned_docs/version-v25.4/custom/directive.md @@ -42,7 +42,7 @@ Each definition of custom logic must include: Optionally, the custom logic definition can also include: -* a `body` definition that can be used to construct a HTTP body from from arguments or fields. +* a `body` definition that can be used to construct a HTTP body from arguments or fields. * a list of `forwardHeaders` to take from the incoming request and add to the outgoing HTTP call. Used, for example, if the incoming request contains an auth token that must be passed to the custom logic. * a list of `secretHeaders` to take from the `Dgraph.Secret` defined in the schema file and add to the outgoing HTTP call. @@ -378,7 +378,7 @@ For example, a query from a custom HTTP endpoint will return an error in the fol ## How custom fields are resolved -When evaluating a request that includes custom fields, Dgraph might run multiple resolution stages to resolve all the fields. Dgraph must also ensure it requests enough data to forfull the custom fields. For example, given the `User` type defined as: +When evaluating a request that includes custom fields, Dgraph might run multiple resolution stages to resolve all the fields. Dgraph must also ensure it requests enough data to fulfill the custom fields. For example, given the `User` type defined as: ```graphql type User { diff --git a/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/graphql-data-loading.md b/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/graphql-data-loading.md index bc5f2264..87cdee90 100644 --- a/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/graphql-data-loading.md +++ b/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/graphql-data-loading.md @@ -10,7 +10,7 @@ After you have deployed your first GraphQL Schema, you get a GraphQL API served A more efficient way to populate the database is to use the Dgraph's [import tools](/migration/import-data). The first step is to understand the [schema mapping](/graphql/graphql-dql/graphql-dql-schema) and to prepare your RDF files or JSON files to follow the internal Dgraph predicates names. -You also have to make sure that you properly generate data for the `dgraph.type` predicate so that each node is asscociated with it's type. +You also have to make sure that you properly generate data for the `dgraph.type` predicate so that each node is associated with it's type. If you are using the [initial import](/migration/bulk-loader) tool, you can provide the GraphQL schema along with the data to import when executing the bulk load. diff --git a/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/graphql-dql-schema.md b/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/graphql-dql-schema.md index 91df57b9..ac6c29c5 100644 --- a/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/graphql-dql-schema.md +++ b/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/graphql-dql-schema.md @@ -53,7 +53,7 @@ type Person { } ``` -will lead the the declaration of 3 predicates in the DQL Schema: +will lead to the declaration of 3 predicates in the DQL Schema: - ``Person.id default`` - ``Person.name string`` @@ -83,7 +83,7 @@ type Person { name: String @search(by: [hash]) ... ``` -Is simply translated into a prediate index specification in the Dgraph schema: +Is simply translated into a predicate index specification in the Dgraph schema: ``` Person.name: string @index(hash) . ``` diff --git a/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/index.md b/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/index.md index eb4086fb..6676d090 100644 --- a/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/index.md +++ b/docusaurus-docs/graphql_versioned_docs/version-v25.4/graphql-dql/index.md @@ -8,7 +8,7 @@ As aGraphQL developer, you can deploy a GraphQL Schema in Dgraph and immediately However, by leveraging the graph database and using Dgraph Query Language (DQL), the Dgraph’s proprietary language, you can address advanced use cases and overcome some limitations of the GraphQL specification. -This section covers how to use DQL in the conjunction with GraphQL API, what are the best parctices and the points of attention. +This section covers how to use DQL in the conjunction with GraphQL API, what are the best practices and the points of attention. ### In this section diff --git a/docusaurus-docs/graphql_versioned_docs/version-v25.4/queries/search-filtering.md b/docusaurus-docs/graphql_versioned_docs/version-v25.4/queries/search-filtering.md index 98749a76..3fc752d2 100644 --- a/docusaurus-docs/graphql_versioned_docs/version-v25.4/queries/search-filtering.md +++ b/docusaurus-docs/graphql_versioned_docs/version-v25.4/queries/search-filtering.md @@ -95,7 +95,7 @@ Users are advised to use the `query` API instead. ### Query a list of objects -You can query a list of objects using GraphQL. For example, the following query fetches the `title`, `text` and and `datePublished` for all posts: +You can query a list of objects using GraphQL. For example, the following query fetches the `title`, `text` and `datePublished` for all posts: ```graphql query { diff --git a/docusaurus-docs/graphql_versioned_docs/version-v25.4/schema/graph-links.md b/docusaurus-docs/graphql_versioned_docs/version-v25.4/schema/graph-links.md index da675882..691bfae3 100644 --- a/docusaurus-docs/graphql_versioned_docs/version-v25.4/schema/graph-links.md +++ b/docusaurus-docs/graphql_versioned_docs/version-v25.4/schema/graph-links.md @@ -107,4 +107,4 @@ type Post { } ``` -Now, Dgraph will manage the connection between posts and authors and you can get on with concentrating on what your app needs to to - suggesting them interesting content. +Now, Dgraph will manage the connection between posts and authors and you can get on with concentrating on what your app needs to do - suggesting them interesting content. diff --git a/docusaurus-docs/graphql_versioned_docs/version-v25.4/schema/types.md b/docusaurus-docs/graphql_versioned_docs/version-v25.4/schema/types.md index f038513f..26e0de4c 100644 --- a/docusaurus-docs/graphql_versioned_docs/version-v25.4/schema/types.md +++ b/docusaurus-docs/graphql_versioned_docs/version-v25.4/schema/types.md @@ -53,7 +53,7 @@ Scalar lists in Dgraph act more like sets, so `tags: [String]` would always cont A Float array can be used as a vector using `@embedding` directive. It denotes a vector of floating point numbers, i.e an ordered array of float32. A type can contain more than one vector predicate. -Vectors are normaly used to store embeddings obtained from an ML model. +Vectors are normally used to store embeddings obtained from an ML model. When a Float vector is indexed, the GraphQL `querySimilarByEmbedding` and `querySimilarById` functions can be used for [similarity search](/graphql/queries/vector-similarity). diff --git a/docusaurus-docs/graphql_versioned_docs/version-v25.4/security/graphtraversal-rules.md b/docusaurus-docs/graphql_versioned_docs/version-v25.4/security/graphtraversal-rules.md index 6febc4cf..0eb4492c 100644 --- a/docusaurus-docs/graphql_versioned_docs/version-v25.4/security/graphtraversal-rules.md +++ b/docusaurus-docs/graphql_versioned_docs/version-v25.4/security/graphtraversal-rules.md @@ -110,7 +110,7 @@ type Todo @auth( } ``` -The @auth query rule will only return ``Todos`` having an owner matching the condition: the owner ``username`` must be equal the the JWT claim ``USER``. +The @auth query rule will only return ``Todos`` having an owner matching the condition: the owner ``username`` must be equal to the JWT claim ``USER``. All blocks must return some data for the query to succeed. You may want to use the field `__typename` in the most inner block to ensure a data match at this level. diff --git a/docusaurus-docs/graphql_versioned_docs/version-v25.4/security/index.md b/docusaurus-docs/graphql_versioned_docs/version-v25.4/security/index.md index 9c74f7eb..fe3031c7 100644 --- a/docusaurus-docs/graphql_versioned_docs/version-v25.4/security/index.md +++ b/docusaurus-docs/graphql_versioned_docs/version-v25.4/security/index.md @@ -8,7 +8,7 @@ When you deploy a GraphQL schema, Dgraph automatically generates the query and m Dgraph's GraphQL authorization features let you specify : -- if the client requires an API key or notif **anonymous access** is allowed to invoke a specific operation of the API. +- if the client requires an API key or if **anonymous access** is allowed to invoke a specific operation of the API. - if a client must present an identity in the form of a **JWT token** to use the API. - **RBAC rules** (Role Based Access Control) at operation level based on the claims included in the client JWT token. - **ABAC rules** (Attribute Based Access COntrol) at data level using graph traversal queries. From a861de61e4f96c65031e01620c5f8376ffbb1f3c Mon Sep 17 00:00:00 2001 From: Matthew McNeely Date: Mon, 17 Aug 2026 17:46:03 -0400 Subject: [PATCH 2/2] Chore(CI): exempt deliberate work from the stale bot stale.yml has run with no exempt labels, so re-enabling Actions after a long quiet period would mark a backlog of still-wanted work as stale. Exempts the labels that denote deliberate, open work for issues and PRs. Dependabot PRs are deliberately left unexempt, since the next bump supersedes them and closing is the right outcome. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/stale.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index ccd2485a..f48f221d 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -17,3 +17,9 @@ jobs: stale-issue-message: 'This issue has been stale for 60 days and will be closed automatically in 7 days. Comment to keep it open.' stale-pr-message: 'This PR has been stale for 60 days and will be closed automatically in 7 days. Comment to keep it open.' operations-per-run: 100 + # Labels that mark deliberate, still-wanted work. Anything carrying one + # of these is never marked stale, so a quiet backlog is not mistaken for + # an abandoned one. Dependabot PRs are deliberately not exempt: they are + # superseded by the next bump, so closing them is the correct outcome. + exempt-issue-labels: 'bug,accepted,RFC,help wanted,good first issue,investigate,triage:delayed,reviewing' + exempt-pr-labels: 'accepted,RFC,reviewing,triage:delayed,cherry-pick'