diff --git a/README.md b/README.md index 4f2bf7d77e9..e9ba9985931 100644 --- a/README.md +++ b/README.md @@ -240,7 +240,6 @@ This repository's contents is divided across several primary sections: - [**`/apps`**](/apps) contains the primary code powering our runnable [applications](https://github.com/hashintel/hash/tree/main/apps#applications) - The HASH application itself is divided into various different services which can be found in this directory. - [**`/blocks`**](/blocks) contains our public _Block Protocol_ [blocks](https://github.com/hashintel/hash/tree/main/blocks#blocks) -- [**`/content`**](/content) contains our publicly-editable website [content](https://github.com/hashintel/hash/tree/main/content#content) (e.g. glossary definitions, user docs) - [**`/infra`**](/infra) houses deployment scripts, utilities and other [infrastructure](https://github.com/hashintel/hash/tree/main/infra#infrastructure) useful in running our apps - [**`/libs`**](/libs) contains [libraries](https://github.com/hashintel/hash/tree/main/libs#libraries) including npm packages and Rust crates - [**`/tests`**](/tests) contains end-to-end and integration tests that span across one or more apps, blocks or libs diff --git a/content/LICENSE.md b/content/LICENSE.md deleted file mode 100644 index d9d661ad4db..00000000000 --- a/content/LICENSE.md +++ /dev/null @@ -1,169 +0,0 @@ -# Attribution-NonCommercial-ShareAlike 4.0 International - -Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. - -### Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. - -* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). - -* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). - -## Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. - -### Section 1 – Definitions. - -a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. - -b. __Adapter's License__ means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. - -c. __BY-NC-SA Compatible License__ means a license listed at [creativecommons.org/compatiblelicenses](http://creativecommons.org/compatiblelicenses), approved by Creative Commons as essentially the equivalent of this Public License. - -d. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. - -e. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. - -f. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. - -g. __License Elements__ means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike. - -h. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License. - -i. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. - -h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License. - -i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. - -j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. - -k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. - -l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. - -### Section 2 – Scope. - -a. ___License grant.___ - - 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: - - A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and - - B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only. - - 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. - - 3. __Term.__ The term of this Public License is specified in Section 6(a). - - 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. - - 5. __Downstream recipients.__ - - A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. - - B. __Additional offer from the Licensor – Adapted Material.__ Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. - - C. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. - - 6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). - -b. ___Other rights.___ - - 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this Public License. - - 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. - -### Section 3 – License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the following conditions. - -a. ___Attribution.___ - - 1. If You Share the Licensed Material (including in modified form), You must: - - A. retain the following if it is supplied by the Licensor with the Licensed Material: - - i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of warranties; - - v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; - - B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and - - C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. - - 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. - -b. ___ShareAlike.___ - -In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. - - 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. - -### Section 4 – Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: - -a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only; - -b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and - -c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. - -### Section 5 – Disclaimer of Warranties and Limitation of Liability. - -a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ - -b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__ - -c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. - -### Section 6 – Term and Termination. - -a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. - -b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or - - 2. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or - - For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. - -c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. - -d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. - -### Section 7 – Other Terms and Conditions. - -a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. - -b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. - -### Section 8 – Interpretation. - -a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. - -b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. - -c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. - -d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. diff --git a/content/README.md b/content/README.md deleted file mode 100644 index 88b558f78a3..00000000000 --- a/content/README.md +++ /dev/null @@ -1,22 +0,0 @@ -[`blockprotocol/blockprotocol`]: https://github.com/blockprotocol/blockprotocol -[mdx]: https://mdxjs.com/?utm_source=hash&utm_medium=github&utm_id=hashdotai&utm_content=readme-file - - - -[github_star]: https://github.com/hashintel/hash# - -[![github_star](https://img.shields.io/github/stars/hashintel/hash?label=Star%20on%20GitHub&style=social)][github_star] - -# Content - -This directory contains content from various of our websites (e.g. `hash.ai`, `hash.dev`, etc.) which is intended to be publicly-editable. If you have a change suggestion, typo fix, or improvement, please feel free to open a PR. All submissions are reviewed by a human and only those deemed to be helpful will be accepted. - -Content pertaining to the Block Protocol can be found separately in the [`blockprotocol/blockprotocol`] repository. - -## MDX file format - -Our resources are written in [MDX], a format which allows for using JSX tags in Markdown documents. - -This has the same syntax as Markdown documents, except for special tags we use to highlight certain elements, which you can see examples of in existing documents. - -There is currently an issue with code blocks _inside of_ Custom MDX components, eg, `Tabs` or `Hint`. There needs to be a new line before any code block (i.e. text preceded by backticks ```) so that the code inside isn't interpreted as JSX by the MDX parser. This issue should be fixed by improvements to the parser documented in the `mdx-js` repo (https://github.com/mdx-js/mdx/issues/1041) which were introduced in MDX v2. diff --git a/content/hashdotai/LICENSE.md b/content/hashdotai/LICENSE.md deleted file mode 100644 index cae102f8164..00000000000 --- a/content/hashdotai/LICENSE.md +++ /dev/null @@ -1,12 +0,0 @@ -[contributing]: https://github.com/hashintel/hash/blob/main/.github/CONTRIBUTING.md -[hash.ai]: https://hash.ai/?utm_medium=organic&utm_source=github_license_hashdotai - -# License - -**Copyright © 2019–, HASH. All Rights Reserved.** - -The [hash.ai] website contains educational material and general information regarding HASH. - -Unlike the vast majority of this repository, the contents of this particular directory are _not_ open-source, but have nevertheless been made available on GitHub so that their provenance and integrity can be confirmed — and user-suggested changes can be accepted [as outlined](../README.md). - -For more information about contributing to the HASH public website, see our repo-wide [CONTRIBUTING] guide. diff --git a/content/hashdotai/README.md b/content/hashdotai/README.md deleted file mode 100644 index 893a2e35256..00000000000 --- a/content/hashdotai/README.md +++ /dev/null @@ -1,22 +0,0 @@ -[`docs`]: https://github.com/hashintel/hash/tree/main/content/hashdotai/docs -[`glossary`]: https://github.com/hashintel/hash/tree/main/content/hashdotai/glossary -[`internal` monorepo]: https://github.com/hashintel/internal -[hash.ai]: https://hash.ai/?utm_medium=organic&utm_source=github_readme_hashdotai -[hash.ai/docs]: https://hash.ai/docs?utm_medium=organic&utm_source=github_readme_hashdotai -[hash.ai/glossary]: https://hash.ai/glossary?utm_medium=organic&utm_source=github_readme_hashdotai -[license determination instructions]: https://github.com/hashintel/hash/blob/main/LICENSE.md#1-license-determination - - - -[github_star]: https://github.com/hashintel/hash# - -[![github_star](https://img.shields.io/github/stars/hashintel/hash?label=Star%20on%20GitHub&style=social)][github_star] - -# `hash.ai` content - -## Overview - -The [hash.ai] website code resides in our private [`internal` monorepo]. However, certain site content is made publicly editable, and/or is distributed under Creative Commons/open-source licenses. Please check the individual `LICENSE` information within each file or sub-directory as appropriate, per the [license determination instructions]. - -- **User Guide** ([hash.ai/docs]): in the [`docs`] sub-directory -- **Glossary Definitions** ([hash.ai/glossary]): in the [`glossary`] sub-directory diff --git a/content/hashdotai/glossary/LICENSE.md b/content/hashdotai/glossary/LICENSE.md deleted file mode 100644 index d9d661ad4db..00000000000 --- a/content/hashdotai/glossary/LICENSE.md +++ /dev/null @@ -1,169 +0,0 @@ -# Attribution-NonCommercial-ShareAlike 4.0 International - -Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. - -### Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. - -* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). - -* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). - -## Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. - -### Section 1 – Definitions. - -a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. - -b. __Adapter's License__ means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. - -c. __BY-NC-SA Compatible License__ means a license listed at [creativecommons.org/compatiblelicenses](http://creativecommons.org/compatiblelicenses), approved by Creative Commons as essentially the equivalent of this Public License. - -d. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. - -e. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. - -f. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. - -g. __License Elements__ means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike. - -h. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License. - -i. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. - -h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License. - -i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. - -j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. - -k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. - -l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. - -### Section 2 – Scope. - -a. ___License grant.___ - - 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: - - A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and - - B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only. - - 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. - - 3. __Term.__ The term of this Public License is specified in Section 6(a). - - 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. - - 5. __Downstream recipients.__ - - A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. - - B. __Additional offer from the Licensor – Adapted Material.__ Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. - - C. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. - - 6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). - -b. ___Other rights.___ - - 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this Public License. - - 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. - -### Section 3 – License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the following conditions. - -a. ___Attribution.___ - - 1. If You Share the Licensed Material (including in modified form), You must: - - A. retain the following if it is supplied by the Licensor with the Licensed Material: - - i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of warranties; - - v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; - - B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and - - C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. - - 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. - -b. ___ShareAlike.___ - -In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. - - 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. - -### Section 4 – Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: - -a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only; - -b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and - -c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. - -### Section 5 – Disclaimer of Warranties and Limitation of Liability. - -a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ - -b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__ - -c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. - -### Section 6 – Term and Termination. - -a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. - -b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or - - 2. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or - - For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. - -c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. - -d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. - -### Section 7 – Other Terms and Conditions. - -a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. - -b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. - -### Section 8 – Interpretation. - -a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. - -b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. - -c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. - -d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. diff --git a/content/hashdotai/glossary/WIP_agents.mdx b/content/hashdotai/glossary/WIP_agents.mdx deleted file mode 100644 index 8b137891791..00000000000 --- a/content/hashdotai/glossary/WIP_agents.mdx +++ /dev/null @@ -1 +0,0 @@ - diff --git a/content/hashdotai/glossary/WIP_autoregression.mdx b/content/hashdotai/glossary/WIP_autoregression.mdx deleted file mode 100644 index 8b137891791..00000000000 --- a/content/hashdotai/glossary/WIP_autoregression.mdx +++ /dev/null @@ -1 +0,0 @@ - diff --git a/content/hashdotai/glossary/WIP_event-driven-knowledge-graphs.mdx b/content/hashdotai/glossary/WIP_event-driven-knowledge-graphs.mdx deleted file mode 100644 index 17c00d6a9bb..00000000000 --- a/content/hashdotai/glossary/WIP_event-driven-knowledge-graphs.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Event-Driven Knowledge Graphs -description: "Event-driven knowledge graphs are commonly used to power decision support and simulation tools." -slug: event-driven-knowledge-graphs -tags: ["Graphs"] ---- - -**Event-driven knowledge graphs** sit at the intersection of [discrete event models](/glossary/discrete-event-modeling) which help simulate processes and the state of real-world systems, and [knowledge graphs](/glossary/knowledge-graphs) which help represent objects, events, situations, or concepts (often using [graph databases](/glossary/graph-databases)). - -By introducing an event-driven approach (aka. “event sourcing via streaming platforms”), platforms like HASH can extract and link data from multiple data silos in near real time. In practice, an event-sourcing pipeline streams key data changes (events) from disparate systems, deduplicates and unifies them, and updates a knowledge graph accordingly – resulting in an up-to-date, event-driven knowledge graph. This differs from traditional knowledge graphs that are typically entity-centric and updated in batches or via periodic processes. Traditional KGs capture mostly static facts and relationships, whereas an event-driven KG continually incorporates dynamic, temporal information (events) as first-class data. As such, event-driven graphs are always evolving to reflect the latest state of the business. diff --git a/content/hashdotai/glossary/WIP_foundation-models.mdx b/content/hashdotai/glossary/WIP_foundation-models.mdx deleted file mode 100644 index 8b137891791..00000000000 --- a/content/hashdotai/glossary/WIP_foundation-models.mdx +++ /dev/null @@ -1 +0,0 @@ - diff --git a/content/hashdotai/glossary/WIP_labeled-property-graphs.mdx b/content/hashdotai/glossary/WIP_labeled-property-graphs.mdx deleted file mode 100644 index 422bbe8c7dd..00000000000 --- a/content/hashdotai/glossary/WIP_labeled-property-graphs.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Labeled Property Graphs -description: "Labeled Property Graphs consist of nodes (also called vertices) and relationships (edges), each of which can hold associated data." -slug: labeled-property-graphs -tags: ["Graphs"] ---- - -# **Data Modeling Principles** - -## **Structure of Labeled Property Graphs** - -A **labeled property graph (LPG)** consists of *entities* (also called nodes or vertices) and *links* (relationships or edges), each of which can have a series of attributes associated with it which contain relevant information. In an LPG, entities have simple textual labels like `Person` or `Product`, and so do links - for example, `Friends With` or `Purchased`. These help categorize entities and links. - -In more advanced "LPG inspired" systems like HASH, instead of using simple textual labels, entities and links are assigned one or more [entity types](/guide/types/entity-types) or [link types](/guide/types/link-types) (as appropriate). - -In LPGs, both entities and links can have any number of _properties_, which are key–value pairs storing additional information (for example, a Person node might have properties like `name:"Alice"` and `age:30`). In HASH, both entities and links can contain any number of properties, or other _links_ (allowing links to point to other links, as required). - -In LPGs and HASH, links are usually **directed**, meaning that one entity is the source and the other is the target, and which is which is important – though in some use cases direction can be ignored or traversed in both ways as needed. - -The LPG model is best understood with a simple example. Consider two `Person` entities and a friendship between them: - -``` -CREATE (p:Person { name: "Alice", age: 30 }); -CREATE (q:Person { name: "Bob", age: 32 }); -CREATE (p)-[:Friends With]->(q); -``` - -Here we created two entities with the **Person** label (or entity type, if using HASH), which allows certain properties to be associated with them. We've also created a link with the label (or link type) **Friends With** that points from Alice to Bob. In LPGs and HASH, this data is stored as a graph structure – you can later query it by traversing from `Alice` to find all `Friends With` connections, for example. In both LPGs and HASH this works very similarly: except in LPGs we are querying by "label" and in HASH instead by "type". Both the entities and links between them have labels/types. In HASH, these types indicate what information can be associated with an entity (the expected attributes: properties and links). For example, one could add a property `Since` and corresponding value of `2020` on the `Friends With` link to indicate when a friendship started. This enriched graph structure makes LPGs and typed alternatives like HASH extremely expressive for modeling complex domains. - -## **LPG vs. Other Graph Models (e.g. RDF)** - -Labeled property graphs are one of the two major graph data modeling paradigms in wide use today, the other being the **RDF** (Resource Description Framework) triple model. While both represent data as networks of connected entities, there are fundamental differences in how data is structured and annotated: - -- **Node properties _vs._ Triples**: In LPGs/HASH, an entity can have attributes stored directly as properties (as in the Alice example above). In RDF, by contrast, there is *no concept of an attribute on an entity* – every piece of information is expressed as a separate triple (subject–predicate–object). For example, to represent a person’s birthdate in RDF, one would create a triple like `(BarackObama) -[birthDate]-> ("1961")`, essentially treating the date "1961" as an object node or literal connected via a predicate. In an LPG, that same fact could simply be a property `birthDate: 1961` on the Barack Obama entity, with no extra link needed. This means RDF tends to produce many more small connecting elements, whereas LPGs can store richer information per entity/link (more analogous to an object in object-oriented programming with fields). -- **Global _vs._ Local identification**: RDF uses globally unique identifiers (URIs) for each entity and link type, aiming for web-scale data integration. Every predicate (link type) and often entities are defined by URIs that can link across datasets. LPG systems meanwhile typically use application-local identifiers (like string names for link types and entity types, which they call "labels") and do not inherently link across databases. This makes property graphs simpler to work with in a closed-world context, whereas RDF is built for interoperability at the cost of some verbosity. [HASH](https://hash.ai/) is a next-generation platform that combines the interoperability and mutual intelligibility of RDF with the expressiveness and customizability of LPG, with all entities, links, entity types, link types and associated resources having fixed URIs which can be relied upon internally (or even published to the world wide web) as desired. -- **Atomic unit of data**: The atomic unit in RDF is the triple. Even a single entity with multiple attributes is essentially a collection of triples sharing the same subject. LPGs do not have a single fixed atomic structure; an entity with properties is a self-contained data structure, and a link with its properties is another. This means an LPG can be thought of as a collection of entities and links (each a small record with key-values), rather than a collection of triples. -- **Schema and semantics**: RDF is tightly connected to the Semantic Web and has a rich standard stack for defining ontologies and schemas (RDF Schema, OWL) that let you formally specify classes, relationships, and even logical inference rules. An RDF graph can be “self-describing” to a degree, as the meaning of relationships and nodes can be defined through shared vocabularies/ontologies. Property graphs, on the other hand, do not enforce any specific global schema or ontology layer; the **interpretation of the labels and properties is left to the consumer** or defined at the application level. This gives LPGs more flexibility (you can add any property to any node without prior schema setup), but it also means that understanding the data’s meaning relies on external documentation or conventions rather than inherent semantics. As a hybrid of RDF and LPG-based approaches, HASH relies upon a [type system](/guide/types) to describe labeled property graphs and ensure interoperability. These types can be kept private or publicly shared, and users can fork on, extend, re-use and crosswalk between standardized definitions of entities created by anyone else. This makes HASH well-suited to collaboration within and across companies, while HASH's UI abstracts away complexity and ensures type creation and editing remains simple and easy. - -In summary: - -- **LPGs** emphasize a pragmatic, object-like approach to graph data modeling: entities and links have attributes which make them suitable for straightforward querying and mutation in graph databases. -- **RDF** emphasizes a web-standard, triple-based approach with powerful integration and reasoning capabilities. -- While RDF is common in open knowledge graphs and linked data scenarios, LPGs are frequently found in graph databases for operational or analytic applications. -- **HASH** extends the "LPG" model, replacing simple text "labels" with formally-defined types, while supporting the common RDF paradigm of stable, referenceable URIs. As such, HASH combines the benefits of both LPG and RDF approaches into a single new approach. - -## Best Practices for Graph Data Modeling - -Designing a graph data model requires careful thought to fully leverage the power of the LPG model while keeping the graph efficient and comprehensible. Here are some core data modeling principles and best practices: - -1. **Identify nodes and relationships from entities**: Start by identifying the main kinds of entities you store information about, to map to [entity types](/guide/types/entity-types) (your node labels), and the important relationships between them, to map to [link types](/guide/types/link-types). - * If you have an Entity Relationship (ER) diagram or an object model, it can often be translated: entities/node labels map to *entity types*, and relationships/edges/associations map to *link types*. For example, in a retail scenario you might have nodes labeled `Customer`, `Product`, and `Order`, with relationships like `(:Customer)-[:PLACED]->(:Order)` and `(:Order)-[:CONTAINS]->(:Product)`. - * In HASH, connecting to existing data sources via [integrations](/integrations) automatically populates your web with properly typed entities, eliminating any need for time-consuming transformation or manual mapping of data to entities. -2. **Use properties for simple attributes**: For attributes that don’t naturally need to be separate nodes, use properties. In a relational database, you might normalize certain data into separate tables, but in a graph it’s often unnecessary unless you plan to traverse or query that attribute as a relationship. For instance, an `email` or `age` of a person can be a property on the Person node. On the other hand, something like an `Address` might be a node of its own if you want to connect people living at the same address or perform graph queries on the network of locations. A key difference from RDF here is that in LPG such as HASH you don’t need to create intermediate nodes for every value. Properties on entities and links in HASH help keep the graph compact and performant. -3. **Use links when appropriate**: Oftentimes data can be modeled either as a property or as a link (relationship between two entities). A good general rule of thumb is if the data item is primarily an attribute of *one* entity (and not something you'd traverse or connect to from other entities), a property is appropriate. If the data item represents a connection or entity in its own right that *other things* may relate to, create a separate entity and link to it. For example, if modeling a person’s employer: if you only care to store the employer’s name, you could use an `Employer Name` property type. But if you want to connect the `Person` to another entity, `Company` (which in turn might have its own properties or connect to other companies), create a `Works For` link type and model `(:Person)-[:WORKS_FOR]->(:Company)` instead. As an LPG, HASH supports both approaches, and you should circumstantially pick the one that makes querying for data most natural and avoids duplication of data across your [web](/guide/webs). -4. **Avoid superfluous nodes or relationships**: Every entity (node) and link (relationship) in your web should represent something meaningful. If you find entities of a given type that have only one link and no properties, ask if they’re actually necessary, or if they could just be properties on another entity or link. Unnecessary indirection can slow down queries, and make information harder to understand at a glance. Similarly, avoid introducing link types that duplicate what could be captured via properties or existing links. In general, you want to ensure information is only represented once in your graph (eliminating a need to sync distinct values), and your ontology is as simple as possible (to make understanding it and checking for consistency easier), while still representing all distinctions you care about. -5. **Leverage entity types properly**: In many LPGs, entity types (labels on nodes) and link types (relationship types) can be indexed or used to efficiently select subgraphs. In HASH, all entities are typed, and this is handled automatically. - * Whether you’re using HASH or another LPG, make sure that entities are assigned the correct entity types – e.g. that an individual entity is assigned both the entity type (label) `Employee` and `Customer` if they happen to fall into both categories. - * When creating entity types, avoid becoming too fine-grained. For example, having an entity type per country of citizenship (both `US Person` and `UK Person`) may be overkill, if a `Country` property on a `Person` entity would suffice. However, if you want to associate unique attributes (properties or links) with people in your graph, depending on their place of residence (e.g. `SSN` in the US, and `National Insurance Number` in the UK) such granularity could be appropriate. -6. **Minimize redundant data**: One sign of a suboptimal graph model is a large number of duplicate entities scattered across a web. Instead of duplicating entities to indicate multiple roles, add multiple entity types (labels) to a single entity, storing its values in one place, and linking to it from elsewhere if required, rather than duplicating information in different places (necessitating they then be kept in sync, lest they drift causing confusion). Graphs by nature can represent many-to-many connections without duplication. If you notice identical subgraphs repeated, you may need to refactor your model. In graph design, it's generally often better to increase the number of relationships rather than duplicate nodes. This means linking data points with new relationships so they can be shared or traversed, rather than copying data into separate parts of the graph. -7. **Watch for modeling anti-patterns**: Three common issues can signal a need to adjust your data model: - 1. *Sparse or tree-like graph structure*: If your web has very few links (like a shallow tree), you aren’t leveraging graph traversal much. Webs, graph databases, and linked property graphs show their strength when data is highly connected; a purely hierarchical or isolated data model might perform just as well in a relational system. - 2. *Data duplication*: as mentioned, repeated entities/links usually indicate the data model could be more normalized within the graph. - 3. *Overly complex queries*: If you find yourself writing very convoluted graph queries to get simple answers, the model might be forcing workarounds. The ideal is that queries align with how you naturally think of the problem. Complex, multi-step queries might mean some important link is missing in the data model, or data is embedded in properties when it should be connected via edges. Revisit the model to see if a different arrangement of entities/links would answer that query more directly (for example, adding a shortcut link for a frequently needed connection). - -Following these principles helps maintain a graph model that is both expressive and performant. A well-designed LPG will make it easier to formulate queries, ensure the database can traverse efficiently, and reduce the chances of anomalies (like contradictory data) by storing each fact in an appropriate place. diff --git a/content/hashdotai/glossary/WIP_string-diagrams.mdx b/content/hashdotai/glossary/WIP_string-diagrams.mdx deleted file mode 100644 index 63ec5b84ae7..00000000000 --- a/content/hashdotai/glossary/WIP_string-diagrams.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: String Diagrams -description: "TBC" -slug: string-diagrams -tags: ["Computer Science"] ---- diff --git a/content/hashdotai/glossary/actor-model.mdx b/content/hashdotai/glossary/actor-model.mdx deleted file mode 100644 index 3ab8b23d0be..00000000000 --- a/content/hashdotai/glossary/actor-model.mdx +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Actor Model -description: "There are two main approaches to building agent-based simulations: object-oriented programming and the actor-based model." -slug: actor-model -tags: ["Simulation Modeling", "Software Engineering"] ---- - -[HASH Engine](/platform/engine) provides an ultra-fast framework for running large-scale simulations in a distributed fashion. To enable this, an _actor model_ is utilized, and simulations built atop HASH must take this into account. This sets HASH apart from more traditionally _object-oriented_ simulation packages. - -## What is object-oriented simulation? - -Object-oriented programming on the surface looks like a good fit for agent-based simulation of the world (and indeed for many years, given both hardware and data processing constraints, it has arguably been the best approach). - -Object-oriented simulations have classes and objects: - -- **Classes** can be thought of as descriptions or specifications of agents. -- **Objects** are instances of classes. Many instances of a single class may exist. - -Object-oriented programming requires careful hierarchical defining of agents, abstraction, and subdivision of problems into manageable pieces. For one-shot simulations of static systems, this planning-heavy process is eminently doable, albeit time-consuming. - -However, whilst class hierarchies can provide useful means for describing agents, and objects direct ways to perform actions — learning to think in terms of an actor system enables reproducible, large-scale, distributed, asynchronous simulations to be built — which ultimately contain agents who are more easily extensible and representative of the real-world. - -## An example simulation - -To illustrate the key differences between the traditional object-oriented approach to simulations, and the actor model approach taken by HASH, we will compare and contrast an implementation of a simple simulation using each paradigm. - -This example simulation consists of several people scattered on a grid, each starting with 1,000 “coins”. On each iteration, agents engage in a bet with one of their neighbors. Both agents in a bet stake an amount of coins equal to 10% of the coins owned by the agent with fewer coins, and the winner is chosen by the flip of a coin. - -The code block below shows a traditional object-oriented approach to implementing this simulation. The full implementation is available [here](https://gist.github.com/nonparibus/bc30b19ba18a200b192ca144a398eaea). - -```python -# Traditional OOP Approach -import random - -class Person: - def __init__(self, position, coins): - self.position = position - self.coins = coins - self.neighbors = [] - - def make_bet(self): - if len(self.neighbors) == 0: - return - player = random.choice(self.neighbors) - stakes = min(self.coins, player.coins) // 10 - result = stakes if random.random() < 0.5 else -stakes - self.coins += result - player.coins -= result - -def create_scatter_grid(num_people, init_coins, grid_size, search_radius): - """ - Initialize a grid containing a random scatter of people. - A person's neighbors are those people within search_radius - of their position. - """ - # Implementation ommited for brevity ... - -def run_simulation(): - people = create_people_grid( - num_people=20, - init_coins=1000, - search_radius=5 - ) - - num_iterations = 1000 - for i in range(num_iterations): - for person in people: - person.make_bet() -``` - -Before we consider the actor-based approach, there are a few aspects of the object-oriented implementation which are worth highlighting. - -1. Agents can both see and directly modify the state of other agents. We see this in the `make_bet` method of the `Person` class, where the agent updates both their own coin balance and the balance of their neighbor. Two problems arise when we allow agents to directly modify the state of another agent. First, in simulations with many different types of interactions between agents, it is difficult to maintain the complexity of managing agent state when modifications to that state are scattered throughout the codebase. And secondly, while the above implementation executes sequentially on a single thread, extending the object-oriented paradigm to a multi-threaded or distributed architecture requires locking primitives, such as [mutexes](), on agent state to prevent [race conditions](https://en.wikipedia.org/wiki/Race_condition). These locking primitives, in turn, add another level of complexity and require careful implementation so as not to introduce further concurrency bugs such as [deadlocks](https://en.wikipedia.org/wiki/Deadlock). -1. Agents maintain direct references to their neighbors through the `neighbors` field in the `Person` class. If an agent were to be removed from the simulation, agents must somehow be made aware of this change so as not to interact with “dead” agents. -1. The main simulation loop, as specified by the `run_simulation` function, is responsible for invoking agent actions. This means that agents cannot asynchronously react to the state of the simulation or to actions intiated by other agents. - -## What is actor-based simulation? - -In the actor model, agents consist of **state**, have **behaviors**, and communicate through **messaging**. - -**State** contains information about an agent. There is no practical limit to how much information can be stored about an agent in its state. You might choose to store information like height, wealth, or occupation on an agent designed to represent a person. Or you might store a list of employees, products offered, or opening-hours on an agent that represents a shop. In geospatial models positional information is typically also included, and social network graph connections are frequently also embedded within state. In contrast to the object-oriented paradigm, _only an agent can change its own state._ - -**Behaviors**, meanwhile, are the ‘logic’ that drive agents. Without behaviors, agents cannot change their own state, nor do anything else for that matter. Behaviors are stored as a list within an agent’s state, so it is always possible to see what is driving them, and they can be changed during simulation runtime alongside any other part of the state (but only by the agent itself). A key distinction between behaviors and object-oriented methods is that an agent decides which behaviors it executes, and when it does so, during the simulation. This inversion of control, from the top-down object-oriented execution loop, to an agent-local approach allows agents to react _asynchronously_ to the state of the simulation - -**Messages** are how agents communicate with the world around them, and impact their environments. Sending a message alone isn’t enough to modify another agent’s state. That agent has to receive and process the message, as well.Behaviors provide the logic that agents use both to send outbound messages and process inbound messages received. - -## Actor-based implementation - -The same simulation shown in object-oriented form can easily be implemented using the actor-based framework in HASH. This simulation is available to view and run on [HASH](https://simulation.hash.ai/@hash/random-coins). We start by initializing the simulation — specifying which agents should be created and setting their initial state. This may be performed declaratively as shown in `init.json` below. - -```json -[ - { - "behaviors": [ - "@hash/create-scatters/create_scatters.js", - "@hash/create-agents/create_agents.js", - "@hash/remove-self/remove_self.js" - ], - "scatter_templates": [ - { - "template_name": "people", - "template_count": 20, - "coins": 1000, - "behaviors": ["make_bet.js", "@hash/random-movement/random_movement.rs"] - } - ] - } -] -``` - -There a few interesting points of note here. First, agents in hash can create other agents. The simulation is initialized with a single agent which in-turn creates all people agents in the model. Second, behaviors compose with each other. All people agents have two behaviors: `make_bet.js` and `@hash/random-movement/random_movement.rs`. The first is a user-defined behavior which allows an agent to engage in bets, and the second allows agents to move throughout the grid as the simulation progresses — one of the many behaviors made available by the community on [HASH](https://simulation.hash.ai/index). - -The `make_bet.js` behavior is shown below. - -```javascript -// make_bet.js - -const behavior = (state, context) => { - // Check for bets other agents made with me - context - .messages() - .filter((m) => m.type === "coins") - .forEach((m) => (state.coins += m.data.count)); - - // Make a bet with one of my neighbors - const neighbors = context.neighbors(); - if (neighbors.length === 0) { - return; - } - const i = Math.floor(Math.random() * neighbors.length); - const neighbor = neighbors[i]; - const stakes = Math.floor(Math.min(state.coins, neighbor.coins) / 10); - const result = Math.random() < 0.5 ? stakes : -stakes; - state.coins += result; - - // Tell my neighbor to update their coin balance - state.addMessage(neighbor.agent_id, "coins", { - count: -result, - }); -}; -``` - -The behavior logic is similar to that of the object-oriented method, but is crucially different in a number of aspects: - -1. An agent gets a read-only view of its neighbors through `context.neighbors()`. It uses this list to choose which neighbor to engage in a bet with, and updates its own state right away. -1. An agent cannot modify the state of another agent. Instead, it sends messages to other agents using `state.addMessage`. All agents are uniquely identified by an ID, and messages are given a type `"coins"` so that agents can decide how to respond to different messages. An agent can read the messages it has received in the previous iteration through `context.messages()`, and is free to decide how it should react, or not react, to each message. -1. The user is not responsible for specifying how the behavior is executed in the simulation loop as in the object-oriented implementation. HASH takes care of this, leaving the user to concentrate on how the agent updates itself during the simulation. - -The actor model allows HASH to present a user-friendly and intuitive approach to agent-based modelling. Because only agents can modify their own state, the requirement that object-oriented frameworks place on the user to implement lock-based synchronization is removed, allowing for much more scalable world-building. The very same simulations run locally on multiple cores, and scale seamlessly to large clusters running in the cloud. - -For users looking for an approach to class inheritance offered by object-oriented programming, HASH provides [Entity Types](/glossary/entity-types) which allow both [attribute](/glossary/attributes) and [behavior inheritance](https://hash.dev/docs/simulations/create/behaviors/inheritance). Agents in HASH can have any number of types, allowing agent logic to be similarly clustered, inherited, and attached in the form of grouped behaviors. diff --git a/content/hashdotai/glossary/agent-based-modeling.mdx b/content/hashdotai/glossary/agent-based-modeling.mdx deleted file mode 100644 index 3c5c960f5eb..00000000000 --- a/content/hashdotai/glossary/agent-based-modeling.mdx +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Agent-Based Modeling -description: ABMs simulate entities in virtual environments, or digital twins, in order to help better understand both entities and their environments. -slug: agent-based-modeling -tags: ["Simulation Modeling"] ---- - -## What is ABM? - -An Agent-Based Model (ABM) is a construction of how [entities](/glossary/entities) (agents) act in an imagined environment. Typically used as aides when modeling difficult or complex real-world systems, ABMs allow environments to be synthesized in digital form, with differing scenarios run within them, in order to observe how the behavior of agents changes under varying conditions, and itself can impact the broader system. This coevolution, and modeling of interdependencies, can be hard to capture via other means. ABMs are often used in support of probabilistic modeling efforts. - -Agents in ABMs do not necessarily have ‘agency’ in the traditional sense of the word, but should be thought of as component parts of a wider system capable of impacting it and/or being affected by it. Varying any of the number, type, or properties/behaviors of agents can have a ripple effect on the system as a whole. Experiments within ABMs seek to tweak these variables to explore how different scenarios unfold, and what end-states are likely to result. - -Agent-based modeling is an inherently “first-principles” way to explore system dynamics. ABMs require their creators to think about the constituent parts of systems, and how they interact with one another. For consumers of these models, microscopic parts of systems can be individually zoomed-in on, and their effect on the wider system as a whole (macro outcomes) observed in detail. - -ABMs consequently have the potential to be highly-explainable in a way that many forms of AI or modeling are not. And whilst most ABM platforms limit you to seeing only the last-computed step, or end-state of a model, [HASH](/platform) saves all states of a [simulation](/glossary/simulation) to allow for retrospective analysis and exploration. This makes witnessing emergent phenomena and understanding complex systems a breeze. [Read more about what agent-based modeling is >](/blog/what-is-agent-based-modeling) - -## What are the core components of an ABM? - -An agent-based model consists of 4 core components: - -1. **Agents**: entities in the model that can interact with one another as well as their informations, and pass information between each other. Agents might represent animals, individuals, households, organisations, or even entire countries. -1. **Properties**: agents have properties. A property might be memory; a state, characteristic, or attribute, such as hunger, speed, or health. Properties are discrete, and can be binary (yes/no), numerical (e.g. on a 1–100 scale), or contain any other fixed value (e.g. a tag, name, or other label). -1. **Environment**: the virtual world in which agents act and interact. An environment is any context in which agents are situated — it could be 2D, 3D, spatial or not — a neutral medium with no effect on agents whatsoever, or a prime determinant of their ability to act. Environments can be abstract and imagined, or digital twins and replications of real-world buildings or cities. -1. **Rules**: rules are the logic that govern what happens when agents interact (or come into contact) with each other, or their environments. They may also govern how learning and adaptation occur within an environment. These rules may be pre-programmed, or automatically inferred/evolved in ABM platforms like HASH. - -The complexity of a model may be constrained by either: - -- **Resources**: the tools, time and manpower available to build in all known rules, information, agents, and their properties; or -- **Understanding**: the limits of our certainty and knowledge about the rules that govern a system, or the agents that make it up. - -## When would you use an agent-based model? - -Agent-based models allow for heterogeneity within agents to be modeled, and individual preferences — as well as their emergent effects within larger systems — to be captured and explored. This is frequently critical in economic, biological, and behavioral models, amongst others. Without such the detail enabled by agent-based modeling, simulation results can grossly overlook long-tail edge-cases and black swans, defeating the purpose of utilizing simulation in the first place, and providing decision-makers with an unfounded degree of confidence in their decisions. This is one of the prime reasons dynamical systems, or “system dynamics” models are falling out of favor. - -## When shouldn’t you use an agent-based model? - -With HASH, modeling systems in an agent-based fashion can be just as easy as using more traditional system dynamics or differential equation models. In the past, however, if modeling simple systems consisting of largely homogenous entities, something like an ABM may have been overkill, and imposed unnecessary computational complexity and cost. diff --git a/content/hashdotai/glossary/arrays.mdx b/content/hashdotai/glossary/arrays.mdx deleted file mode 100644 index 92c57ee1497..00000000000 --- a/content/hashdotai/glossary/arrays.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Arrays -description: "Arrays are collections of variables or values, each of which can be identified by at least one key (e.g. their order in an array)." -slug: arrays -tags: ["Data Science"] ---- - -In programming, **arrays** are collections of [variables](/glossary/variables) or [values](/glossary/values), each of which can be identified within the array by at least one "key" (typically its position in the array). Arrays themselves can in turn also be variables or values. - -Some data types are arrays. For example, `Color` when expressed as an `RGB` value, contains three numbers which refer to the relative amount of red, green, and blue light that make up a color (each on a scale of 0 to 255). For example, `0,0,0` is white, `255,0,0` is red, `0,0,255` is blue, and `255,255,255` is black. - -In HASH, arrays are found in the context of [property types](/guide/types/property-types). Property types describe the acceptable value(s) that a property can have. They are either expressed as [data types](/guide/types/data-types), property objects (other property types, nested within the parent), or arrays (which can contain data-typed values, property objects, or further nested arrays). diff --git a/content/hashdotai/glossary/ats.mdx b/content/hashdotai/glossary/ats.mdx deleted file mode 100644 index 14f99bb68f3..00000000000 --- a/content/hashdotai/glossary/ats.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Applicant Tracking System -description: "Applicant tracking systems help employers manage recruitment and hiring." -slug: ats -tags: ["Business Software"] ---- - -Applicant Tracking Systems are applications which help employers manage recruitment and hiring operations. They function as a single source of information, storing data submitted by the applicant as well as notes and feedback captured by the hiring and interview teams. Many ATS solutions also provide communication capabilities through the application, and will also improve the process from the applicant’s end by providing streamlined and clear interfaces for submitting resumes and other employer-requested information. - -ATS track applicants through the hiring process, helping recruiting ops teams schedule interviews, organize and filter interviewer feedback, manage communications with candidates, and eventually track offer acceptances or rejections. As these services have developed they have also incorporated more artificial intelligence techniques, primarily Natural Language Processing which can perform initial screenings of applications (e.g. by searching for key words or phrases). - -Applicant tracking systems are increasingly serving as data sources to power models and simulations to inform strategic HR decisions. diff --git a/content/hashdotai/glossary/attributes.mdx b/content/hashdotai/glossary/attributes.mdx deleted file mode 100644 index 67dd3207b03..00000000000 --- a/content/hashdotai/glossary/attributes.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Attributes -description: "Attributes are the properties and links that exist on and describe an entity." -slug: attributes -tags: ["Data Science", "Graphs"] ---- - -Attributes describe [entities](/glossary/entities) and are either [properties](/glossary/properties) or [links](/glossary/links). - -The attributes that exist on an entity are determined by an [entity's type](/glossary/entity-types), which in turn defines what kinds of properties and links can be associated with it (through [property types](/glossary/property-types) and [link types](/glossary/link-types)). - -A single entity can be of more than one entity type. For example, a `Person` entity might also be an `Employee`, allowing specific employment-related information to be stored in conjunction with a person's record in HASH. diff --git a/content/hashdotai/glossary/autocorrelation.mdx b/content/hashdotai/glossary/autocorrelation.mdx deleted file mode 100644 index 26529145e7b..00000000000 --- a/content/hashdotai/glossary/autocorrelation.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Autocorrelation -description: Autocorrelation is a measure of the degree of similarity between any time series and a lagged or offset version of itself over successive time intervals. -slug: autocorrelation -tags: ["Data Science"] ---- - -Correlation is the act of comparing two things to one another, and exploring their relationship. When measured on a `-1` to `1` scale, the former implies ‘perfect negative correlation’ (when one goes up, the other must go down), whilst the latter implies they are perfectly in lockstep (an increase in one by _x_ amount is accompanied by an increase in the other of an equal amount _x_). - -Autocorrelation is a measure of the degree of similarity between any [time series](/glossary/time-series) and a lagged or offset version of itself over successive time intervals. - -Instead of comparing one time series to another, the same time series is used twice, offset by a lag. As a result, autocorrelation is sometimes called “lagged correlation” or “serial correlation”. - -Like correlation, autocorrelation is measured on a -1 (perfect negative correlation) to 1 (perfect correlation) scale. - -**Autocorrelation is used to measure the relationship between the current value of a variable and its past value(s).** High levels of autocorrelation indicate that a variable may not be random. diff --git a/content/hashdotai/glossary/block-protocol.mdx b/content/hashdotai/glossary/block-protocol.mdx deleted file mode 100644 index e3e246c3444..00000000000 --- a/content/hashdotai/glossary/block-protocol.mdx +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Block Protocol -description: "The open Block Protocol standardizes the means by which blocks and the applications that embed them communicate." -slug: block-protocol -tags: ["Software Engineering", "Standards"] ---- - - - This glossary definition refers to technical concepts that are only relevant - to developer users of HASH who are familiar with programming. Understanding - these is not necessary to use the HASH application itself. - - -The Block Protocol is an open standard which standardizes the means by which [blocks](/glossary/blocks) and applications are able to communicate, so that any block can be embedded in any application, without either one possessing any special knowledge about the other. - -The Block Protocol consists of a **Core** specification, and various optional **modules**, each with their own additional specifications. You can learn about these in full by reading the [Block Protocol documentation](https://blockprotocol.org/docs) and [Block Protocol specification](https://blockprotocol.org/spec). - -Blocks built in accordance with the Block Protocol are also made available on the [Block Protocol Hub](https://blockprotocol.org/hub). - -A high-level summary of the Block Protocol is provided below. - -## Target Audience - -The Block Protocol was designed to be understood by two different audiences: - -1. Potential block developers who wish to build interoperable, cross-application blocks -1. Potential embedding application developers who wish to build block-based ‘embedding applications’ that leverage the Block Protocol. - -While end-users of block-embedding applications may interface with Block Protocol blocks, they are not required or expected to understand its technical implementation or even be aware of its existence. - -## Architectural Overview - -### Block Protocol Core - -The [Block Protocol _Core_](https://blockprotocol.org/spec/core) specification outlines what constitutes a block publishable to the Block Protocol Hub. At minimum, a publishable block combines: - -- some source code; and -- a block metadata file (which can be used to identify a block by potential embedding applications). - -The combination of these two things is called a **block package**, and it is these that can be submitted for listing on the Block Protocol Hub, for download and use by others as **blocks**. - -### Block Protocol Modules - -While the Block Protocol Core specifies how a block is defined, and how it communicates with an embedding application, modules define what kinds of things blocks and applications can communicate about. - -Modules provide logical groups of functionality or aim to solve a specific problem related to block-application interaction. Modules are defined in their own specifications that live separate to, but alongside, the Block Protocol Core. - -Most blocks will want to use one or more modules defined as part of the Block Protocol specification. - -For example: - -- the [Graph](https://blockprotocol.org/spec/graph) module defines the protocol by which blocks can create, read, update or delete **entities** -- as well as any **links** between those entities -- within an embedding application’s datastore; -- the [Hook](https://blockprotocol.org/spec/hook) module defines a protocol via which embedding applications can take over specific parts of a block to insert a native application experience, if one exists (e.g. a file picker, or photo gallery); -- the [Service](https://blockprotocol.org/spec/service) module provides a standardized capability for blocks to interact with external APIs, without needing to ship with their own API keys or prompt users to insert their own. - -There are many different types of modules under discussion for inclusion in the Block Protocol, which are described [alongside the specification](https://blockprotocol.org/roadmap#new-modules). - -In their metadata, blocks can declare which modules (and which version of those modules) they support. - -Not all embedding applications will support all modules. For example: - -- New modules are likely to be added on a regular basis, and embedding application developers will require time to build in support for them within their applications. -- Application developers may have limited bandwidth, and elect to support modules in an incremental manner - prioritizing support for some modules before others. -- Application developers may never intend to support certain modules, disagreeing with their approach to solving a problem, or because the module is related to functionality which is irrelevant to or unwanted by the application. - -In any case, embedding applications can filter the blocks on the Block Protocol Hub to ensure only those blocks requiring modules that their application supports are shown. This allows application creators (and sometimes their users, depending on how the Block Protocol has been integrated) to search, embed and use blocks that are guaranteed to work out-the-box, extending the functionality of embedding applications beyond their original purposes. - -HASH supports all of the published Block Protocol modules, and lets you access and use any block published on the Block Protocol Hub. diff --git a/content/hashdotai/glossary/blocks.mdx b/content/hashdotai/glossary/blocks.mdx deleted file mode 100644 index 1473d95ec05..00000000000 --- a/content/hashdotai/glossary/blocks.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Blocks -description: "Blocks are single units of content that are assigned ‘types’ which determine how they display data." -slug: blocks -tags: ["Software Engineering", "Standards"] ---- - -## What are blocks? - -Blocks are single units of content within a page, document or canvas which have ‘types’ that determine how they display data. - -For example, a block may be a ‘table’, ‘kanban board’, ‘gantt chart’, or anything else that the application which contains it supports. - -While the type of a block can be changed, the underlying data remains the same. This separation of 'view' and 'data' allows the representation of information referenced by a block to be changed (e.g. a table converted into a kanban board, and back again) without risking loss, corruption or inadvertent modification of the underlying data in the process. - -Blocks typically allow end-users to input, edit, and delete the data within them -- but can also be rendered in ‘view-only’ modes. Typically when in an editing context, blocks can be flexibly composed and arranged. - -Blocks enable the creation of modular, composable documents and interfaces. - -## Block instances - -A single individual block can be referred to as an ‘instance of a block’, or a ‘block instance’. - -## The Block Protocol - -The [Block Protocol](/glossary/block-protocol) is an open standard for developing blocks, and block-based applications. It defines the methods by which blocks may communicate and interact with the applications that embed them (“embedding applications”). - -## Using blocks - -Blocks are most prominently used within HASH in [pages](/guide/pages). You can learn more about [using blocks within pages](/guide/pages/blocks) in the HASH user guide. diff --git a/content/hashdotai/glossary/business-intelligence.mdx b/content/hashdotai/glossary/business-intelligence.mdx deleted file mode 100644 index 04913f8db25..00000000000 --- a/content/hashdotai/glossary/business-intelligence.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Business Intelligence -description: "Business Intelligence allows companies to make data-driven decisions." -slug: business-intelligence -tags: ["Business Intelligence"] ---- - -Business Intelligence is a methodology which uses data collection and analysis to produce informed business decisions. It is an example of data-driven decision-making which seeks to increase revenue, improve efficiency, and provide businesses with a competitive advantage. The standard data pipeline is typically used: data is collected from both internal (sales, performance, reach) and external sources (market share, economic indicators), cleaned and prepared, then visualized or queried for insights. Visualization is often in the form of interactive dashboards which allow decision-makers to easily explore the data. Business Intelligence software can provide tooling which assists with each step in this pipeline. - -Business Intelligence is typically a descriptive technique, as opposed to a predictive one, since it provides transparency and insights into the current state of a business and its market. When paired with modeling and simulation techniques, Business Intelligence methodologies can provide input data to make predictions more accurate and powerful. diff --git a/content/hashdotai/glossary/business-process-modeling.mdx b/content/hashdotai/glossary/business-process-modeling.mdx deleted file mode 100644 index b73efb341ff..00000000000 --- a/content/hashdotai/glossary/business-process-modeling.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Business Process Modeling -description: Business Process Modeling (BPM) helps organizations catalog, understand and improve their processes. -slug: business-process-modeling -tags: ["Business Intelligence", "Simulation Modeling"] ---- - -## What is business process modeling? - -Business Process Modeling (or BPM) formally captures an organization’s processes in a standardized form, typically for the purposes of analysis and improvement. - -Typically in BPM, an organization’s current processes are captured _as they exist_ at that point in time, and steps in processes are then tweaked to improve the performance, generalizability, or resilience of the overall process. BPM is widely used in management consultancy and operational research. - -In total a BPM project consists of several unique stages: - -1. **Process mapping:** defining what needs doing, who is responsible, to what standard a process should be completed, and what the acceptance or success criteria are. -1. **Process discovery:** capturing the steps involved in a current business process (and any variations of it) in writing (for example as a checklist), or in illustrated form (e.g. a flowchart). -1. **Process simulation:** capturing a process in model form (i.e. as code). This allows processes to be tested safely in virtual environments under a wide variety of pre-specified or dynamically generated conditions. -1. **Process analysis:** actively using process simulations and models to identify opportunities for improvement. This could be through running [optimization experiments](/cases/optimization) in a simulation, or more traditional means (e.g. conducting cost-benefit or value-added analyses. -1. **Process improvement:** testing improvements to processes, measuring their performance, and iterating on them to achieve more, in less time, with fewer resources, with a greater degree of consistency and reliability. - -Many BPM tools are only useful during steps one and two. [HASH](/platform) is an integrated, end-to-end solution for completing all five steps of a business process reengineering project. - -## Why use business process models? - -- **Enable measurement against a baseline.** Without a sense of how a process should or does (in practice) work, performance monitoring is subjective. Good process modeling enables standards to be monitored and improved. -- **Improve efficiency.** By simulating the performance of processes in virtual environments, and running [optimization experiments](/cases/optimization) it is possible to automatically identify opportunity for cost-savings and output-improvements, contributing to a firm’s competitive advantage. -- **Intuitively, visually represent steps in a process.** Improve understanding of processes, make them more easily inspectable by others, and provide easy-to-follow blueprints that reduce “key person” or “bus factor” risks within a business. -- **Ensure consistency in changing environments.** During reorganizations it can become easy to lose track of critical steps in a process, and at the same time identify which steps may no longer be required. Good BPM helps in the identification of redundancies, waste, and duplicative work, whilst safeguarding mission-critical operations. -- **Improve communication.** Making processes and the steps within them explicit codifies informal knowledge and understanding, improving consistency, and eliminating guesswork (especially around exception-handling). - -## What are the best tools for creating business process models? - -Many tools exist for creating business process models. - -Older software typically only supports the mapping and discovery (often diagraming) of business processes. These are tools like Visio, Lucidchart, and Omnigraffle. - -New software like HASH enable users to not only easily and simply draw out business processes, but also optimize their performance and robustness under a wide range of conditions through [multi-agent simulation](/glossary/simulation). - -HASH can also ingest data obtained through [process mining](/glossary/process-mining) in order to automatically suggest processes for use in simulations, as well as receive live sensor or system data to measure the impact of real-world changes to processes as improvement experiments take place. diff --git a/content/hashdotai/glossary/cms.mdx b/content/hashdotai/glossary/cms.mdx deleted file mode 100644 index b921fc27eae..00000000000 --- a/content/hashdotai/glossary/cms.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Content Management System -description: "Content management systems allow you to build and manage websites." -slug: cms -tags: ["Business Software"] ---- - -Applications used to manage web content are known as Content Management Systems. They allow users to create, manage, and modify content being displayed on a website. These are typically collaborative, allowing multiple users or teams to be responsible for their own content. - -Content management systems typically provide two main features: a Content Delivery System and a Content Management Application. The first provides infrastructure to host and render a website, while the second provides a user interface to generate, upload, and modify the content. The management interface generally provides document and digital asset management. Document management allows users to write and format text content, while digital asset management provides functionality to store and display images, videos, and other file types. - -CMSs may be used to power public-facing websites or internal knowledge-bases, wikis and intranets. Traditional CMSs are often static, requiring human management and intervention in order to keep content up to date. Using a HASH graph as a “headless” CMS can allow for more efficient, accurate and timely delivery of information to end-users - ensuring information, wherever it is displayed, reflects an organization’s up-to-date understanding of a problem space, environment, or it’s parameters. diff --git a/content/hashdotai/glossary/crm.mdx b/content/hashdotai/glossary/crm.mdx deleted file mode 100644 index 3dbe30e7f1c..00000000000 --- a/content/hashdotai/glossary/crm.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Customer Relationship Management System -description: "Customer relationship management systems track and coordinate interactions between a company and its customers." -slug: crm -tags: ["Business Software"] ---- - -Customer relationship management (CRM) systems are applications for tracking and coordinating interactions between customers and the company. CRM systems track customers across their lifecycle, from initial contact through their purchase, onboarding, and general use. The value of a CRM comes from improving the operational handling of customer needs, and the strategic value of improving the company’s insights into customer behavior and relationships. - -CRMs often store some of a company’s most valuable commercial business data - getting insight from that data and analyzing it to help management make decisions is increasingly a feature of CRMs and other applications. Simulations, powered by CRMs, can be used for [business intelligence](/glossary/business-intelligence) and scenario planning (e.g. basic probabilistic forecasting, through the assignment of "likelihoods of closing" to leads). diff --git a/content/hashdotai/glossary/dag.mdx b/content/hashdotai/glossary/dag.mdx deleted file mode 100644 index dfdc9d580dc..00000000000 --- a/content/hashdotai/glossary/dag.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Directed Acyclic Graphs -description: If you don’t know your DAGs from your dogs, you can finally get some clarity and sleep easily tonight. Learn what makes a Directed Acyclic Graph a DAG. -slug: dag -tags: ["Data Science", "Graphs", "Software Engineering"] ---- - -## What is a DAG? - -A Directed Acyclic Graph (or _DAG_) is a special type of graph made up of nodes (also known as _vertices_), and edges, in which: - -1. all edges have a direction associated with them, and -1. the graph as a whole contains no cycles (aka. _loops_). - -The below figure illustrates a classic DAG, in which all nodes are connected by at least one directional edge, and all pathways lead to a single end-state. - -![A Directed Acylic Graph in HASH](https://cdn-us1.hash.ai/site/dag-example.png) - -## Uses of DAGs in Data Science - -In data applications like [HASH](/platform), DAGs are commonly used to illustrate: - -- **[data pipelines](/glossary/data-pipelines):** the decision and processing steps taken as data flows through a pipeline -- **schedules:** any system of tasks with ordering constraints (not just a data pipeline) can be illustrated with a DAG -- **dependency/citation graphs:** a list of dependencies or citations that allows the provenance of work to be tracked - -## More information - -In mathematical terms, DAGs are a specific subclass of **oriented graphs** (graphs without bidirectional edges). Ultimately though, you don’t have to understand the technical ins and outs of DAGs in order to utilize them as part of a data pipeline. - -Modern data engineering tools such as [hCore](/platform/core) abstract away complexity through simple, easy-to-use interfaces that provide prompts and feedback, preventing the creation of malformed DAGs (for example, those which may inadvertently contain circular loops or cycles). diff --git a/content/hashdotai/glossary/data-drift.mdx b/content/hashdotai/glossary/data-drift.mdx deleted file mode 100644 index 5783256a168..00000000000 --- a/content/hashdotai/glossary/data-drift.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Data Drift -description: Data Drift is the phenomenon where changes to data degrade model performance. -slug: data-drift -tags: ["Data Science"] ---- - -Also known as distributional shift, data drift is where changes in the underlying data causes models to become less accurate over time. Since models tend to be trained on an initial set of data and are then put into production, if the underlying data changes the model will become unaccurate. - -There are many potential causes of data drift. - -- The process that produces the data could change. Example: An IoT sensor measuring data could become uncalibrated. -- Unexpected changes to the data infrastructure: Example: A team serving data in an enterprise setting changes their data definitions. -- General exogenous changes to the data. Example: Behavioral changes that cause people to drive faster or slower would change a traffic dataset. - -To combat data drift, it's important to monitor the data and frequently retrain models. diff --git a/content/hashdotai/glossary/data-mesh.mdx b/content/hashdotai/glossary/data-mesh.mdx deleted file mode 100644 index e371e243290..00000000000 --- a/content/hashdotai/glossary/data-mesh.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Data Mesh -description: "Data meshes are decentralized database solutions." -slug: data-mesh -tags: ["Data Science"] ---- - -A data mesh is a new paradigm for data management. Unlike existing data platforms that focus on centralizing and unifying data, a data mesh emphasizes decentralization of data control and management, with each team or domain handling and serving data products. Its analogous to a micro services architecture in web development; instead of a monolithic data warehouse serving all of the data, teams provide their own data products. The teams have ownership over the scope of the data and governance, providing them through APIs and discoverability services. The potential of data meshes is greater flexibility and a devolution of authority and responsibility to the data owners, ensuring that the teams best placed to maintain data sources do. diff --git a/content/hashdotai/glossary/data-mining.mdx b/content/hashdotai/glossary/data-mining.mdx deleted file mode 100644 index 1db3976916c..00000000000 --- a/content/hashdotai/glossary/data-mining.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Data Mining -description: Data Mining is a process applied to find unknown patterns, correlations, and anomalies in data. Through mining, meaningful insights can be extracted from data. -slug: data-mining -tags: ["Data Science", "Machine Learning"] ---- - -## What is Data Mining? - -Data Mining is a process applied to find unknown patterns, correlations, and anomalies in data. Through mining, large datasets can be transformed into meaningful insights. This process can uncover valuable and actionable information contained within data that may otherwise be hidden from the user. Data Mining is especially effective at unveiling insights from messy, unstructured data, sifting through and sorting the information within by relevance. - -Data Mining has a lot in common with Machine Learning — fundamentally sharing many of the same statistical methods and large scale data management techniques. But whilst Data Mining concerns itself with finding insights in and between datasets, Machine Learning extends the concept further to incorporate the idea of “updating over time” (automatically finding correlations _and_ applying them to new algorithms). - -## How does Data Mining work? - -There are two main approaches to Data Mining: **Supervised** and **Unsupervised** Learning. - - - -### Key Concepts - -**Supervised Data Mining**: example outputs are labelled beforehand, and the goal is to learn the function that transforms the inputs into outputs — so that this can be applied to future unseen information-sets. - -**Unsupervised Data Mining**: outputs are not labelled in advance, and the goal is to deduce natural underlying structures within data (making unsupervised data mining a useful tool for exploratory analysis). - - - -A typical Data Mining workflow often looks something like this: - -1. **Business understanding is established**: analysts and management with an understanding of an organization’s goals agree what type of information they hope to uncover through Data Mining, as well as how they will organize and use that data. Performance can later be analyzed against these predefined business objectives. -1. **Data identification and preparation**: data from sources of interest are loadedinto a data warehouse, or other datastore. Some of these may be “analysis-ready”. Others may require transformation or normalization in order to get them into a state from which they can be analyzed. Data quality/integrity tests may form part of the “pipeline” that this process constitutes. Frameworks like _Great Expectations_ assist greatly in this, and users can make use of them within _[HASH Flows](/platform/core#flows)_. At this stage, the number of features in a dataset may be reduced to those most closely aligned with business goals. Some amount of manual human-led data exploration may be performed at this point, in conjunction with the information acquired during step one, to guide later expectations. -1. **Data mining**: test scenarios are generated to gauge the validity and quality of the data, and data mining begins. Various types of mining may take place, including: - 1. **Automated classification**: placing a data point into a predefined category, if an existing structure is known to the user (used by banks to check credit scores when issuing loans/mortgages, by companies looking to gender-stratify their audiences, and platforms looking to identify the genre or category of user-created content). - 1. **Regression analysis**: identifying the relationship between 1 dependent and ≥1 independent variables. Frequently utilized in the context of predictive analytics, to forecast future data, based on that available today. - 1. **Association analysis**: identifying which independent variables are frequently correlative (used by online retailers to recommend similar items). - 1. **Outlier recognition**: identifying the data points that fall outside a predefined category (and do not follow the rules of mutual interdependence between variables). Anomaly detection is often used in security and investigations contexts, as well as by arbitrageurs in financial markets. - 1. **Cluster identification**: extending the idea of ‘automated classification’, Data Mining can be used to identify recurring similarities between data, and suggest new groups by which entities might be accordingly clustered (frequently used in marketing to target specific consumer demographics, and in [process mining](/glossary/process-mining)). -1. **Collation and evaluation**: initial results are viewed in light of the original project objectives mapped out before work began. Data visualization tools such as Power BI, Looker or [hCore](/platform/core) can be used to neatly present findings from research to end-users, so they can decide what to do with the information. -1. **Application**: lessons learned can be applied in-business. Some insights can be shared across functions to help improve all levels of business performance — through a data and experiment catalog like [hIndex](/platform/index) — but it is up to the user to selectively act upon any insights drawn from data mining processes (in contrast to Machine Learning, in which results may be fed back into algorithms as part of an automated workflow, powered by a system such as [hCloud](/platform/cloud)). - - - -### 3 Types of Data Modeling - -1. **Descriptive**: reveals similarities and differences between data points in a dataset, identifying any anomalies and highlighting relationships between variables. -1. **Predictive**: forecasts what will happen in the future, based on the data available today. -1. **Prescriptive**: using an initial predictive model, prescriptive modeling recommends potential steps to alter the outcome of this model. - - diff --git a/content/hashdotai/glossary/data-pipelines.mdx b/content/hashdotai/glossary/data-pipelines.mdx deleted file mode 100644 index 4a51c5984f8..00000000000 --- a/content/hashdotai/glossary/data-pipelines.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Data Pipelines -description: Data pipelines are processes that result in the production of data products, including datasets and models. -slug: data-pipelines -tags: ["Data Science"] ---- - -## What are data pipelines? - -Data pipelines are processes (typically represented as [DAGs](/glossary/dag)) that result in the production of data products, including datasets and models. - -## Types of data pipelines - -### ETL Pipelines - -Until recently, ETL pipelines were the dominant form of data pipeline. ETL stands for **E**xtract, **T**ransform, and **L**oad. Data would be extracted from its original source, ‘transformed’ into a form in which it might be consumable, and then ‘loaded’ into a database. - -### ELT Pipelines - -ELT pipelines re-order the **T**ransform and **L**oad operations, instead loading _all_ extracted data from a source into a data warehouse first, and allowing users to decide what transformations to run later. - -ELT pipelines are often configured to capture all raw data of interest that a source emits, and the products of transformations are appended as additional columns within the warehouse in which that data is stored. The raw data extracted meanwhile remains accessible in its original form. This has a number of benefits: - -- **Provenance:** It becomes possible to view the original source data that was used in the production of a finalized data product. -- **Robustness:** Compared to ETL pipelines, ELT pipelines are typically less brittle and prone to breakage. -- **Speed:** Data loading is quicker, as transformations are executed once the raw data is in the warehouse. -- **Agile and accessible:** ELT pipelines have the advantage of not requiring their users to know ahead of time exactly how they’ll use the data. Querying, slicing and transforming data can be conducted at any time. When it comes to enabling self-service analytics, this is particularly important. -- **Differing cost profile:** All these things typically mean that data storage and processing costs are higher than in ETL solutions, but data bandwidth costs are reduced with ELTs as data is only ever loaded once. - -### ML Pipelines - -Whereas ETL and ELT pipelines result in the production of data files and tables, Machine Learning (ML) pipelines produce ML models. An ML model represents what was learned by executing an ML algorithm on a dataset, and represents the process (rules, parameters, and other data structures) required to make predictions or decisions. - -## Data pipeline tools - -Different software packages exist for orchestrating data pipelines such as _Airflow_, _Prefect_, and _Dagster_. Tools also exist for transforming data within pipelines such as _dbt_, and _dataform_. Then there are utilities for testing data such as _Great Expectations_. The capabilities and functionality of all of these tools are found with in HASH [flows](/guide/flows). - -## How data pipelines work in HASH - -There are three ways to utilize data pipelines in HASH: - -1. With an external data warehouse and pipelines, using HASH solely as a modeling engine -1. With an external data warehouse, using HASH to manage data pipelines as well as models -1. Using HASH as your data warehouse, pipeline, and modeling engine - -Users are free to create, run and maintain their data pipelines outside of HASH, both operating on and feeding external data warehouses which can then be accessed from or imported into HASH. - -[HASH](/platform/hash) offers the ability to set up [flows](/guide/flows), which can process data for you. With zero of the usual setup required, complexity, maintenance and monitoring concerns are abstracted away allowing data analysts as well as engineers to focus on the important work of simulation modeling and inferring insights. diff --git a/content/hashdotai/glossary/data-types.mdx b/content/hashdotai/glossary/data-types.mdx deleted file mode 100644 index 08e2734a110..00000000000 --- a/content/hashdotai/glossary/data-types.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Data Types -description: "Data types describe a space of possible values through the specification of constraints" -slug: data-types -tags: ["Graphs", "Standards"] ---- - -## What are data types? - -**Data types** describe a space of possible valid [values](/glossary/values). For instance, the _string_ value `foo` might be an instance of a `Text` data type, or a _float_ value of `0.6` might be an instance of a `Number` data type. - -Data types describe their possible values by specifying _constraints_. For an instance of a value to be _valid_, it must satisfy the constraints expressed on the associated data type. - -Data types consist of the following: - -- a **required** `url`, which is a globally unique identifier, where the data type’s definition can be accessed (in most cases this will be a URL) -- a **required** `name`, which should generally be a non-pluralized short description of the data type (for example: “Number” not “Numbers”) -- **optionally** a `description` to further explain the semantic meaning of the data type -- a **required** definition of its possible value - -### Top-level data types in HASH - -The [Block Protocol](/glossary/block-protocol) specifies a set of primitive top-level data types, which we use in [HASH](/platform). - -These can be considered the least restrictive value spaces: - -- `Text` -- `Number` -- `Boolean` -- `Null` -- `Object` diff --git a/content/hashdotai/glossary/datasets.mdx b/content/hashdotai/glossary/datasets.mdx deleted file mode 100644 index bdb2e3ec200..00000000000 --- a/content/hashdotai/glossary/datasets.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Datasets -description: Datasets are collections of numbers or words, generally centered around a single topic or subject. -slug: datasets -tags: ["Business Intelligence", "Data Science"] ---- - -## What is a dataset? - -A collection of numbers or words, generally centered around a single particular topic or subject. - -Datasets are most commonly compiled and stored in a tabular format (for example, as a CSV file). - -Typically, each row corresponds to one [entity](/glossary/entities), and each column to a [property](/glossary/properties). The intersection of each column and row contains the relevant property’s [value](/glossary/values). - -## Where do datasets come from? - -Datasets are typically compiled from observations and measurements made by people, recorded through sensors, or otherwise tracked by software systems. - -## Synthetic Data - -Datasets can also be _[generated](/glossary/synthetic-data-generation)_ for the purpose of training a [machine learning](/glossary/machine-learning) model, or providing a dataset that approximates a real-world one, without exposing potentially sensitive real underlying data. diff --git a/content/hashdotai/glossary/deep-reinforcement-learning.mdx b/content/hashdotai/glossary/deep-reinforcement-learning.mdx deleted file mode 100644 index 93eaa8d7fb9..00000000000 --- a/content/hashdotai/glossary/deep-reinforcement-learning.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Deep Reinforcement Learning -description: DRL is a subset of Machine Learning in which agents are allowed to solve tasks on their own, and thus discover new solutions independent of human intuition. -slug: deep-reinforcement-learning -tags: ["Machine Learning", "Simulation Modeling"] ---- - -## What is DRL? - -Deep Reinforcement Learning (DRL) is a subset of Machine Learning and an amalgamation of methods from both Deep Learning and Reinforcement Learning, through which agents autonomously complete tasks. - -DRL allows agents to solve tasks on their own, and thus discover new solutions independent of human intuition, historical understanding, and path-dependent thinking. Sifting through mutli-dimensional, non-linear data and instantaneously taking action means that DRL outperforms its human counterpart through both depth and breadth of perception. - -The use of sequential decision-making is a key differentiator from other types of Machine Learning. DRL employs multiple neural networks, layered on top of each other (thus the term ‘deep’), which can represent more complex policies. Through combining concepts from both Deep Learning and Reinforcement Learning, DRL is able to overcome the ‘[catastrophic forgetting](https://www.jstor.org/stable/26480357)’ that is often a byproduct of deep neural networks. - -It is particularly useful as an iterative and adaptive process through which actions can be tested and refined, with the agents changing their behavior based on the result. - - - -### Key Concepts - -- **Agent**: an autonomous entity whose activity is directed towards achieving goals. -- **State:** a comprehensive description of the world. -- **Observation**: a partial description of the state (world). -- **Action Spaces**: the valid actions that the agent is allowed to take within a state; may be discrete or continuous. -- **Policy**: a rule used by an agent to decide which action to take; may be deterministic or stochastic (based on a Gaussian/normal distribution). -- **Policy network**: conversion of inputted problems into outputted actions. -- **Policy gradient**: method for optimizing parametrized policy to maximize the expected return for an agent. -- **Trajectories**: a sequence of states and actions within a world (originating from the agents within it); may also be deterministic or stochastic. -- **Reward**: the positive number an agent receives when it has taken a successful action. -- **Return**: the cumulative effect of multiple rewards received by an agent. An agent will want to maximize its expected return. -- **Value Functions**: the expected return if an agent starts in a state, and then follows a policy continuously. - - - -## How does DRL work? - -The goal of DRL is to develop a robust ‘policy network’ — the name for converting presented problems into outputted actions. This functions as a loop of _learned behavior_ for the agent. Each time it reacts to a problem, it produces a new and better-informed action. - -1. Using a sample distribution of available actions, we can vary the information we feed to the agent. This allows it to explore the possibilities available to it (the ‘action spaces), through randomization of possible actions. With this sample distribution of potential actions, the balance of probability determines that the agent will theoretically find the best possible action to take. -1. We provide feedback to the agent whenever it completes a task. If successful, we reward the agent with a positive integer. Using this integer (a ‘policy gradient’), we can make the probability of the agent selecting the _successful actions_ _more likely_ in the future. (Inversely, we make the _unsuccessful actions less likely_ to be selected, by feeding the agent a negative integer.) -1. During this process, the policy network is “recording” through the updates to its weights from the signal from the cost function. The policy network is ‘recording’ the information at its disposal through constantly updating the signals it receives from the value function. -1. The cumulative effect of maximizing the chances of the agent selecting successful actions and minimizing the chances of it selecting unsuccessful actions optimizes the agent’s future behavior. The reinforcement of positive behavior incentivizes the agent to figure out the best method for tackling future problems, learning from its successes and failures (to improve its ‘expected return’). -1. This trial-and-error approach is constantly improving and compounding the agent’s actions over time (in the form of ‘value functions’), so that we no longer need a human model to intervene. - -## How can we use DRL? - -Although DRL is currently widely used in robotics, computer science and video game development, other industries are set to benefit from its proliferation. The opportunities for scaling this technology span multiple industries, from public health and education to transport and the financial services. - -By eliminating human miscalculation and improving a machine’s retention of past activity, DRL uses agents to find the optimal action for a given problem. - -**Here are some key case uses:** - -- Healthcare: automating medical diagnosis from both unstructured and structured clinical data ([paper](https://arxiv.org/pdf/1908.08796.pdf)), then controlling dosage of medication through mapping from registry databases ([paper](https://arxiv.org/pdf/2008.12333.pdf)). -- Finance: integrating macro economic analysis with predictive technology to forecast future systems-level shifts, while adhering to pre-determined risk parameters ([paper](https://arxiv.org/ftp/arxiv/papers/2004/2004.01509.pdf)); analyzing uncorrelated trading signals to achieve superior short-term returns across financial markets ([paper](https://arxiv.org/ftp/arxiv/papers/1907/1907.04373.pdf)). -- Cybersecurity: use of DRL-based simulations of intrusion attempts to detect potential cyber attacks ([paper](https://arxiv.org/pdf/1906.05799.pdf)). - -Deep Reinforcement Learning is a promising approach for implementing powerful, autonomous agents. It has the potential to dramatically expand the use of AI in new and existing domains. - -## Applying DRL in practice - -At HASH we’re building a platform to create environments and agents useful both in training DRL agents and, in the near future, incorporate DRL trained agents into the simulation to navigate and discover solutions in complex systems. [Learn more about HASH’s platform >](/platform) diff --git a/content/hashdotai/glossary/diff.mdx b/content/hashdotai/glossary/diff.mdx deleted file mode 100644 index bb4c5e68a5c..00000000000 --- a/content/hashdotai/glossary/diff.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Diffing -description: Diffs are used to track changes between different versions or forks of a project, providing an overview regarding files changed, and the nature of those changes. -slug: diff -tags: ["Software Engineering"] ---- - -Diffs are used to track changes between two different versions or [forks](/glossary/fork) of a project. - -A diff provides a list of what files have been changed, and what changes have occurred. For example, a new file might have been created, another deleted, and the contents of a third modified. - -Command-line Git software and clients often contain built-in tools for diffing. [HASH](/platform) contains these built-in, removing the need for additional external tooling: - -- Line-by-line diffing is automatically conducted as part of the [merge process](/glossary/merge) in HASH. -- When you upgrade individual behaviors or other dependencies in the [hCore](/platform/core) editor, you may see a “diff view” highlighting what’s new and updated in an upgraded version of a file. diff --git a/content/hashdotai/glossary/digital-twin.mdx b/content/hashdotai/glossary/digital-twin.mdx deleted file mode 100644 index b7734efda46..00000000000 --- a/content/hashdotai/glossary/digital-twin.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Digital Twin -description: "Digital twins are a detailed simulated analogue to a real-world system" -slug: digital-twin -tags: ["Business Intelligence", "Simulation Modeling"] ---- - -The term digital twin (sometimes used interchangeably with "synthetic environment") refers to an in-silico, computer simulated analogue to a real-world system. It is often used to describe computer simulations that mirror real-world biological systems, engineering projects (like jet engines, wind turbines, or vehicles), and architectural spaces, as well as individual factories and warehouses within larger supply chains. - -These "digital twins" (individual [entities](/glossary/entities) or entire [simulation models](/glossary/simulations)) mirroring real-world counterparts can be placed in different virtual environments, and have their parameters modified, to allow them to be inexpensively and safely examined under a wide range of conditions, often exceeding the number and range of environments affordable or practical to test in the physical, offline world. - -These simulations can also be used to generate [synthetic data](/glossary/synthetic-data-generation), perform low-cost tradespace analyses, and generate risk assessments (e.g. by introducing simulated stochastic failures). - -All of these things can be fed back into the design of real-world systems, allowing them to be tested and improved online, before being built "in the real world" offline. - -[HASH](/platform) allows for real-time sensor and other streaming data, as well as static datasets and domain expert assumptions to be layered into digital twins in order to ensure they remain up to date. Digital twins are very valuable in many engineering, manufacturing and logistics contexts, as well as any other environment where real-world experiments with strategy, design or layout changes are very costly, but where even small improvements can lead to large cost savings or quality and performance improvements. diff --git a/content/hashdotai/glossary/discrete-event-modeling.mdx b/content/hashdotai/glossary/discrete-event-modeling.mdx deleted file mode 100644 index 1318d54139a..00000000000 --- a/content/hashdotai/glossary/discrete-event-modeling.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Discrete Event Simulation -description: DES is a modeling approach that focuses on the occurrence of events in a simulation, separately and instantaneously, rather than on any chronological-scale. -slug: discrete-event-modeling -tags: ["Simulation Modeling"] ---- - -## What is DES? - -Discrete Event Simulation (DES) is a modeling approach that focuses on the occurrence of actual events in a simulation. - -Discrete Event Simulation differs from Continuous Simulation (CS) in that the state of change is not measured through the passage of time, but is _event-driven_. This type of modeling focuses on ‘discrete’ – which is to say separate/instantaneous) events – rather than ‘continuous’ (gradual) events. Time is abstracted away and individual relevant ‘events’ that occur within a system are brought to the fore. - -No changes occur between events, so discrete event models can jump straight to the occurrence time of the next event in a simulation, without consequence, and long time intervals can be vastly reduced when simulated. - -The concept revolves around the occurrence of ‘state changes’ or phase transitions, rather than the passing of time or continuous movements. This is known as ‘next-event time progression’, as opposed to the ‘fixed-increment time progression’ used in CS. - -Further, the developer does not need to simulate unnecessary aspects of the model — only things that are simulated are classed as events, thereby reducing complication. - -![DES Flow](https://cdn-us1.hash.ai/site/hash-des-flow.svg) - - - -### Key Concepts - -**Discrete event**: these occur instantaneously, as opposed to gradually. Think of the abrupt (‘discrete’) state change of a water balloon popping, as opposed to the slower (‘continuous’) deflation of a helium balloon. - -**Event-centric**: a focus on the occurrence of actual events in a sequence (where no changes happen in the interval between events), and time is not considered an important factor. - -**Nondeterministic**: models which contain stochastic (random) elements may output varying results from run-to-run, even if the same set of starting parameters/instructions are provided. _DESs can either be deterministic or nondeterministic._ - - - -DES can be considered more of a flowchart than a timetable of events, and can help users separate the signal from the noise — by reducing large temporal transitions into an events-oriented ‘schedule’, we can abstract aspects of the model and simplify complex scenarios for the user. - -The concept of time is not tied as tightly to the simulation logic — the user can add a time element, but this is mostly cosmetic/auxiliary. - -DES, like other simulation approaches, can include deterministic or stochastic elements. For instance, if you want to model a range of scenarios, you could draw initial parameters from a probability distribution, simulating potential conditions for the simulation. This can help approximate aspects of the model that we might be uncertain about. - -## How is DES used? - -A common use of DES is in inventory management for FMCG (Fast-Moving Consumer Goods). No matter the amount of time lapsed between outgoing orders, stock must be replenished for the warehouse to maintain its inventory obligations (even as consumer demand might episodically ebb and flow). - -DES can demonstrate the logistics of these reorder liabilities, and allow managers to review current processes in light of the simulations’ results. They can simulate potential stock picking methodologies, such as one order, batch, or zone picking, and then find the most efficient way of fulfilling multi-SKU (Stock-Keeping Unit) obligations to reduce lead time and replenish continually-diminishing inventory. diff --git a/content/hashdotai/glossary/dms.mdx b/content/hashdotai/glossary/dms.mdx deleted file mode 100644 index 58f4067e4f8..00000000000 --- a/content/hashdotai/glossary/dms.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Document Management System -description: "Document management systems allow you to store, manage and track documents (both physical and digital)." -slug: dms -tags: ["Business Software"] ---- - -## What is a DMS? - -A Document Management System (**DMS**) helps with the storage and management of large numbers of documents, including documents for which many different versions od drafts may exist. They help keep track of the information contained within documents, storing information as metadata associated with each document. - -Records in a document management system may correspond to editable digital originals of files (e.g. `DOCX` files), electronic representations of physical paper documents (e.g. a `PDF` scan of a letter received), or finalized signed documents (e.g. an e-signed file, or scan of a physically signed documented). - -## Common DMS features - -- **Check-in/check-out:** when a user checks out a document, it is marked as being edited by that user. This prevents other users from making changes to the document until it is checked back in. This ensures that one person’s edits do not overwrite another’s. Once the user has finished editing the document, they check it back in, making the new version available for others to edit. This process ensures that changes are systematically updated and tracked. -- **Version control:** the check-in/check-out system often integrates with version control, where each checked-in document is saved as a new version. This allows tracking of changes over time, making it possible to revert to previous versions if necessary and providing a history of modifications. -- **History, provenance and lineage:** by tracking who checks out and checks in documents, the system maintains an audit trail of who made specific changes and when. This accountability is critical for compliance and for understanding the evolution of a document. -- **Recovery capabilities:** when things go wrong, DMSs can allow older versions of documents to be recovered. -- **Supporting collaboration:** many DMSs contain "multiplayer" functionality allowing other authorized users to see the current status of a document (checked out or available) and plan their work accordingly. This structured approach facilitates efficient teamwork. -- **Annotation:** most DMSs allow multiple users to add comments, notes, and suggestions directly on the document, enabling team members to provide feedback without altering the original content of the document. Inline annotations can be attached to specific parts of a document, making it clear why certain changes were made or what further actions are required. By allowing comments and feedback to left inline, the need for back-and-forth communication can help streamline the editing and review process. -- **Stamping:** stamps can be used to quickly apply standardized marks such as “Approved,” “Rejected,” “Confidential,” or “Draft” on documents. This helps in quickly conveying the status or classification of a document without needing to read through it, and so that the information is clearly labeled when printed, or otherwise redistributed. -- **Labeling:** like stamps, labels can often be attached to documents. In contrast to stamps, which are visible on documents, labels are generally stored as metadata, and are used to classify or categorize documents (both for organizational, and legal/compliance purposes). They also help improve the discoverability of documents in a DMS, allowing for filtering and searching by label. - -## Who uses DMSs? - -- **Law firms:** managing case files, contracts, legal documents, and client correspondence. This helps track cases, and flows of information end-to-end, reducing human-error, helping track subtle changes within large amounts of text, and providing secure access to sensitive information. -- **Healthcare organizations:** managing patient records, medical histories, treatment plans, and insurance documentation; improving patient care by providing quick access to patient information, ensuring compliance with healthcare regulations like HIPAA (in the US), and securing sensitive patient data. -- **Financial services:** handling financial reports, client information, transaction records, and compliance documents. In this case, a DMS can enhance data security, and be used to ensure (and evidence) regulatory compliance, while improving the efficiency of teams dealing with large amounts of documents. -- **Consultancies:** many firms have large internal knowledgebases containing past engagement deliverables (often in both "sensitive" and "sanitized" form), and vast amounts of original research categorized and stored within DMSs. Access to these helps improve internal expertise, providing easy-access to relevant past insights and case context, while enhancing project management efficiency. - -## Using DMS information with AI - -Connecting your DMS to HASH enables it to be used by [AI agents](/guide/agents) acting on your behalf - for example, you can connect to an existing DMS like DocuWare, PandaDoc, LogicalDoc, FileHold, Alfresco, Laserfiche, or eFileCabinet; an internal intranet based on Microsoft Sharepoint, Confluence, or Google Workspace; or a file-sharing solution like Box, Dropbox, Google Drive, or Microsoft OneDrive. - -Once your document management system is connected to HASH, the information within it will be indexed in an optimized fashion, available for use in [research jobs](/guide/agents/goals) and when [chatting](/guide/agents/chat) with your agents. diff --git a/content/hashdotai/glossary/ego-networks.mdx b/content/hashdotai/glossary/ego-networks.mdx deleted file mode 100644 index 03dbccb6c08..00000000000 --- a/content/hashdotai/glossary/ego-networks.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Ego Networks -description: "Ego networks are a framework for local analysis of larger graphs." -slug: ego-networks -tags: ["Data Science", "Graphs", "Simulation Modeling"] ---- - -Egocentric networks are subsets of a larger network which provide a “local view” by assigning one central node as the ego node. These networks are also known as “perceived networks”, since they allow a large network to be analyzed from the “perspective” of some or all of its nodes, comparing the similarities and differences in local structures. Nodes connected to the “ego” are referred to as “alters”. - -Ego networks can be constructed based on the following specifications: - -- N-step neighborhood: the maximum distance from the “ego” at which a node is considered an “alter” and included in the subset network -- In / Out Neighborhoods: whether incoming or outgoing nodes from the “ego” are included as “alters” in the subset network. Ego networks may also be undirected. -- Strong / Weak Neighborhoods: if a network has weights or lengths assigned to its edges, then neighborhoods can be constructed by following edges which are greater or smaller than a specific weight or length. - -Ego networks are often constructed from survey data, which implicitly contains an ego node for the respondent. They can also be extracted from social or infrastructure networks by choosing an ego node and a set of the specifications above. Typical graph metrics that are calculated for ego networks include: network density, longest and average path, centrality, and size. Analyzing ego networks in a whole population provides micro-level insight into its differentiation and cohesion. - -Ego networks are well-suited for analyzing systems where actors are constrained or influenced by their local neighbors. When attempting to understand beliefs and preferences in a social network and how they differ from one another, it is the immediate local connections which are the best predictive of an individual. There is research that profitability of peer-to-peer loans can be predicted by the local borrower networks. Ego network analysis provides the appropriate lens and level of data for effective analysis in both these cases. diff --git a/content/hashdotai/glossary/entities.mdx b/content/hashdotai/glossary/entities.mdx deleted file mode 100644 index 56f13061b69..00000000000 --- a/content/hashdotai/glossary/entities.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Entities -description: "Entities are individual ‘things’ with a distinct, independent existence." -slug: entities -tags: ["Graphs", "Simulation Modeling"] ---- - -## What are entities? - -Entities are individual “things” with a distinct, independent existence. - -Every entity in HASH has: - -- a HASH ID, which makes it uniquely identifiable and content-addressable; -- one or more [entity types](/glossary/entity-types) which describe the entity’s expected properties; -- [properties](/glossary/properties), infered from its entity type(s), which may in turn contain [values](/glossary/values). - -The _entity type_ tells you what kind of thing an entity is expected to be (e.g. a `Book`, which is expected to have properties such as `author`, `title` and `publisher`). - -The values of an entity’s properties tell you about that instance of the entity itself, for example what its `title` actually is (e.g. “Brave New World”). - -Sometimes the values of a property may contain [links](/glossary/links). In such cases, we would describe an entity as a _linked entity_. - -## What are linked entities? - -In the real world, entities are often connected to other entities, and these connections are described as _relationships_. - -Sometimes these connections take the form of social relationships (e.g. “Mother", "Child”, or “Friend") occurring between entities of the same [entity type] (in this example `Person`). - -However, entities of completely different entity types can also be linked. For example, connections between entities may sometimes be legal or procedural, such as “Employee \<\> Employer” or “Politician \<\> Political Party”, which may both link a `Person` with an `Organization`. - -A network of entities which are connected to other entities is sometimes called a [graph](/glossary/graphs) or a [web](/guide/webs) (in HASH). We call these entities with links ‘linked entities’. - -## Are entities the same thing as 'agents'? - -If you’re using our advanced [HASH for simulation](https://simulation.hash.ai/index) platform, you might be wondering about the relationship between entities and [agents](/glossary/agent-based-modeling). For all practical purposes, you can think of both as the same thing. In future releases of [HASH Core](/platform/core) and [HASH Engine](/platform/engine) we’ll support instantiating entities from a HASH workspace directly within simulations (as agents), as well as assigning expected [behaviors](https://hash.dev/docs/simulations/create/behaviors) to entity types in [HASH](/platform/hash). diff --git a/content/hashdotai/glossary/entity-types.mdx b/content/hashdotai/glossary/entity-types.mdx deleted file mode 100644 index 05bb4dec527..00000000000 --- a/content/hashdotai/glossary/entity-types.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Entity Types -description: "Entity types represent commonly recurring classes of entities, and describe their properties." -slug: entity-types -tags: ["Graphs", "Standards"] ---- - -## What are entity types? - -[Entities](/glossary/entities) have [types](/glossary/types). These **entity types** represent commonly recurring classes of entities, and describe the sort of information you'd expect to find associated with them. - -For example, a business might have lots of customers. It may choose to create a “Customer” entity type with information attached to it such as “Full Name”, “Last Order Date”, “Lifetime Order Value”, and “Shipping Address” to normalize the way information about its customers is tracked and made accessible. We call these expected pieces of information **[properties](/glossary/properties)**. - -Creators of entity types, such as our “Customer” example, define their properties through the creation of a [schema](/glossary/schemas). - -## Parent types - -In addition to specifying individual properties expected of an entity, an entity type’s schema may declare one or more other types as parent types. Parent types’ expected properties are combined with an entity type’s own declared set, resulting in a greater number of expected properties overall. This is called ‘inheritance’. - -## Multi-type entities - -In many software environments (e.g. object-oriented programs) and information management frameworks, entities can only be of a single entity type. This means that data administrators inevitably end up simplifying their data structures to their lowest-common denominators, or reasoning about their entities in weird ways, and actual information about entities gets lost in the process. - -In HASH, it is possible to create ‘multi-type entities’, or entities which have multiple expected types. For example, `Arnold Schwarzenegger` may be stored in your HASH workspace as an `Actor`, a `Bodybuilder`, and a `Politician`. This is important, because to capture all of the relevant information about Arnold in a platform that did not support multi-type entities you would need to create a dedicated `actor-bodybuilder-politician` entity type. Such hyper-specialized types may need to be created quite often to account for real-world heterogeneity amongst entities, with many going unused more than once (or worse, cluttering up your system when no longer needed at all). These concatenated types can also become hard to discover and manage. For example, while our previous concatenation of types was alphabetical, somebody may search for a `bodybuilder-actor-politician`, reflecting Arnold's chronological career progression, and be unable to locate the original type because they had ordered the list incorrectly. They may also not be aware of Arnold's exact type, only knowing him in one or two contexts. Separate types makes working with rich, real-world data easier. diff --git a/content/hashdotai/glossary/erp.mdx b/content/hashdotai/glossary/erp.mdx deleted file mode 100644 index 5ca78bb6c37..00000000000 --- a/content/hashdotai/glossary/erp.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Enterprise Resource Planning -description: "Enterprise resource planning uses an integrated software system to manage a business' daily tasks." -slug: erp -tags: ["Business Software"] ---- - -Enterprise Resource Planning allows businesses to manage their daily tasks through a single integrated software system. These tasks can include planning, purchasing, sales, marketing, finances, and human resources, to name a few. Each of these services may have a separate, tailored user interface, but the integration allows data to be easily shared between these different applications. A single, shared source of information reduces redundancy and data drift. ERP systems enable companies to make use of [Business Intelligence](/glossary/business-intelligence) practices. - -- **Planning:** Make use of [Project Management Software](/glossary/project-management-software) and link completed tasks to specific sales or purchase orders. -- **Purchasing:** Make use of Internet of Things (IoT) technologies to track your inventory levels and know when to place new orders. -- **Marketing:** Make use of [machine learning](/glossary/machine-learning) insights to optimize marketing strategies. -- **Finances:** Automate daily tasks with [Robotic Process Automation](/glossary/rpa) workflows, and make use of real-time dashboards to understand the state of your business. -- **Human Resources:** Manage an employee through recruitment, hiring, and promotion. - -A key part of integration is the standardized definition of a number of data structures or schemas for use across the organization. This enables different parts of the application to easily intake and transfer data. Enterprise Resource Planning software often integrates [business intelligence](/glossary/business-intelligence)-style dashboards for easily visualizing this data. Real-time data streaming makes it easy to understand the state of the company, and make informed business decisions. diff --git a/content/hashdotai/glossary/fhir.mdx b/content/hashdotai/glossary/fhir.mdx deleted file mode 100644 index 1b67be70936..00000000000 --- a/content/hashdotai/glossary/fhir.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Fast Healthcare Interoperability Resources -description: "An electronic healthcare standard for data interoperability." -slug: fhir -tags: ["Standards"] ---- - -The [Fast Healthcare Interoperability Resources standard](http://hl7.org/fhir/) (FHIR) is a specification for electronic healthcare data created in 2012. Making healthcare data standardized and discoverable has been a longstanding goal of the industry, to facilitate accurate record sharing between different providers and to improve their mutual understanding (ensuring that all people and systems involved "speak the same language"). The FHIR was created by created by the [Health Level Seven International](https://en.wikipedia.org/wiki/Health_Level_Seven_International) (HL7) organization to promote semantic markup of records that work with JSON, XML, or RDF. The FHIR's conceptual primitive is the '[resource](https://www.hl7.org/fhir/resource.html)': - -> A resource is an entity that: -> -> - has a known identity (a URL) by which it can be addressed -> - identifies itself as one of the types of resource defined in this specification -> - contains a set of structured data items as described by the definition of the resource type -> - has an identified version that changes if the contents of the resource change - -The focus on resources helps promote an API centric design. The FHIR has been adopted by numerous actors in the healthcare space. diff --git a/content/hashdotai/glossary/fork.mdx b/content/hashdotai/glossary/fork.mdx deleted file mode 100644 index 8e914aac540..00000000000 --- a/content/hashdotai/glossary/fork.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Forking -description: Forking something means to create a copy of it, allowing individual developers or teams to work on their own versions of it, in safe isolation. -slug: fork -tags: ["Software Engineering"] ---- - -A fork is a copy of a project in HASH that has been ‘split off’ from it at a particular point in time. - -“Forking” something means to create a copy of it, usually with the intention of making minor modifications. - -Forked projects contain metadata that allow their provenance to be tracked back to the source-code of the original project as it existed at the point of being forked. - -Forking projects on HASH, and code in software development more generally, is common practice. It occurs both frequently: - -1. behind closed doors by companies developing software, and -1. in public, in particular within open-source projects that accept contributions from the public. - -Forking allows individual developers or teams to work on their own versions of a thing, safely in isolation from changes that others may be working on. - -It can also be desirable to create a fork of something as a backup, in the event you are uncertain whether the original project or repository will remain accessible in future. Once a project has been forked, a copy of it (including any code or data within) exists in your namespace. However, forked projects may still be subject to the [licensing terms](/glossary/model-licensing) of the original publisher. - -Forked projects can be [diffed](/glossary/diff) against any version of another project to see how they have evolved over time. This is especially helpful in the [merge process](/glossary/merge). - -Read more about [forking and merging](https://hash.dev/docs/simulations/create/collaboration/forking-and-merging) in our docs. diff --git a/content/hashdotai/glossary/generative-ai.mdx b/content/hashdotai/glossary/generative-ai.mdx deleted file mode 100644 index 60c51b8d97c..00000000000 --- a/content/hashdotai/glossary/generative-ai.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Generative AI -description: "Generative AI models support the creation of new, novel information based on the data they are trained on" -slug: generative-ai -tags: ["Machine Learning", "Simulation Modeling"] ---- - -## Generative Models - -Generative AI ("GenAI") models are capable of creating new, novel information, such as text, images, audio, and video, based on the data they are trained on. Generative models work by learning a "probability distribution" from the data they are trained on, and can generate new samples from that distribution. - -A "model" is simply a computer program, based on some data, which can be used for a particular purpose: - -- **Traditional AI** models have historically been used for pattern recognition (e.g. spam filters), anomaly detection (e.g. safety alerts), decision-making (e.g. product recommendations), or classification (e.g. facial recognition). -- **Generative AI** models are, in contrast, at their core designed to help produce new, _novel_ data. - -You may also hear other kinds of models discussed: - -- **Discriminative** models seek to tell the difference between different kinds of data. For example, they may be traditional AI models used for classification tasks (such as distinguishing faces, or even kinds of animals, e.g. dogs from cats). -- [**Simulation** models](/glossary/simulation), on the other hand, seek to replicate the dynamics of real-world environments, systems or processes in a virtual form. These simulation models attempt to realistically recreate the real-world, often to allow for experimentation within their virtual environments, to allow humans to improve their understanding of them, or to support the training of AI models (e.g. through [Deep Reinforcement Learning](/glossary/deep-reinforcement-learning)). Creating simulation models requires a degree of time and data, but once created experimentation within simulated environments is often much cheaper and faster than in offline, physical settings. - -## Types of GenAI - -### Transformer Models - -**Transformers** are primarily used for text generation, and are at the core of almost all **Large Language Models (LLMs)**. They are well-suited for processing sequential, ordered information (like text, code, DNA, or [time series data](/glossary/time-series)), exhibiting an ability to understand dependencies within data. - -### Diffusion Models - -**Diffusion models** are most commonly used for image generation. They are trained by gradually adding "noise" to a sample, until it is transformed into something unrecognizable to a human, and then learning to reverse the process, to support reconstruction of the original sample data. Once trained, diffusion models are able to transform pure noise into realistic data as implied by or represented within its original sample dataset. Typically this is a multi-step process, involving many "passes" through which noise is iteratively transformed into new data. - -### Autoregressive Models - -Newer image generation models like that of OpenAI's 4o image generation models are **autoregressive** rather than diffusion-based models. This approach focuses on predicting elements within images one at a time, leading to a deeper understanding and connection between visual elements and language concepts, providing models with a degree of layout awareness while supporting conversational-style image editing. - -### Generative Adversarial Networks (GANs) - -GANs utilize "generator" and "discriminator" neural networks in competition, using each neural network to generate more and more increasingly authentic-seeming new data, based on a given training dataset. For example, new images or new music may be created from a training database containing examples to be replicated. **Generators** learn to create "plausible" data while **discriminators** learn to distinguish fake data from real data. - -### Variational Autoencoders (VAEs) - -VAEs learn the patterns or "structure" underlying data, allowing them to be used to generate new, similar data given some input. They are useful for [synthetic data generation](/glossary/synthetic-data-generation), anomaly detection, and certain kinds of data compression. - -### Recurrent Neural Networks (RNNs) - -Like transformer models, RNNs are a kind of neural network designed to process "sequential" information whose order matters in its understanding — for example, time series data, or a sentence. Unlike traditional [artificial neural networks](/glossary/neural-nets), RNNs have a "memory" which retains some amount of information from previous inputs, influencing the processing of subsequent inputs. Historically, their primary utility is in tasks such as time series forecasting, speech recognition, and language translation. However, most recent [transformer-based approaches](#transformer-models) typically outperform what we typically think of as RNNs in Natural Language Processing (NLP) tasks, due to their ability to process sequences in parallel and capture long-range dependencies more effectively. diff --git a/content/hashdotai/glossary/graph-databases.mdx b/content/hashdotai/glossary/graph-databases.mdx deleted file mode 100644 index edcf64f5df3..00000000000 --- a/content/hashdotai/glossary/graph-databases.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Graph Databases -description: Graph Databases are a type of database that emphasizes the relationships between data. -slug: graph-databases -tags: ["Graphs", "Software Engineering"] ---- - -Graph Databases are a type of database that emphasizes the relationships between data. It holds data in a flexible, graph format. - -Graphs are characterized by nodes - the data - and edges - the relationships between the data. In a Graph Database the nodes are the records being stored, and the edges are a conceptual link between two nodes. - -For instance if you're storing social network information, the nodes could be people and the edges could be the nature of their connection (PARENT_TO, FRIEND_OF, etc.). The edges are semantic in that they contain meaning about the connected records. - -Graph databases are good at exploring data that has complex connections; because the data is stored as a graph, traversing the connections is often a constant time operation, much faster than the comparable operation would take in a traditional relational database. - -Because of this, graph databases are particularly well suited to [knowledge graphs](/glossary/knowledge-graphs) and schema mapped data. diff --git a/content/hashdotai/glossary/graph-representation-learning.mdx b/content/hashdotai/glossary/graph-representation-learning.mdx deleted file mode 100644 index 27b64efa2e0..00000000000 --- a/content/hashdotai/glossary/graph-representation-learning.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Graph Representation Learning -description: "Graph representation learning is a more tailored way of applying machine learning algorithms to graphs and networks." -slug: graph-representation-learning -tags: ["Graphs", "Machine Learning"] ---- - -Graph Representation Learning uses graph data structures as inputs to Machine Learning algorithms. While it is possible to naively process every node in a graph as a single data point, standard techniques should not necessarily be applied to graphs, since this ignores a key feature of graph representation: nodes are not independent data points, they are interconnected. The edges between nodes are a fundamental part of the graph, and must be processed by the algorithm. - -Both supervised and unsupervised learning techniques may be used with graphs (data for nodes and edges, or just shape). There are four types of prediction tasks that can be performed on a graph: - -- Predict the features or properties of a node (e.g. classify it) -- Predict the features or properties of an edge (link between two nodes) -- Detect communities or clusters of nodes within a graph -- Make a prediction about or classify the entire graph diff --git a/content/hashdotai/glossary/graphs.mdx b/content/hashdotai/glossary/graphs.mdx deleted file mode 100644 index 06db4959cb1..00000000000 --- a/content/hashdotai/glossary/graphs.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Graphs -description: "A graph is a collection of entities which may be connected to other entities by links." -slug: graphs -tags: ["Graphs", "Machine Learning", "Software Engineering"] ---- - -## What are graphs? - -### In HASH - -In the context of HASH, a graph is a collection of [entities](/glossary/entities) which may be connected to other entities by [links](/glossary/links). - -The data and [types](/glossary/types) in a single HASH workspace are known as a [web](/guide/webs), and these can be thought of as a graph in which some information might be kept private, while other parts may be shared publicly. - -The totality of all public data in HASH, sometimes called the "[HASH public web](https://hash.ai/guide/webs#hash-public-web)", may also be thought of as a graph, as many individual workspaces are connected to each other through [linked entities](/glossary/entities#Linked-entities) and shared types. - -### In the Block Protocol - -The [Block Protocol](/glossary/block-protocol) module which deals with entities and the links between them is known as the _Graph_ module. - -### In mathematics and computer science - -A graph is a data structure with **nodes** and **edges**. Nodes are sometimes also called ‘vertices’ or ‘points’, and edges are sometimes also referred to as ‘lines’ or ‘links’ (the term we use in HASH). - -The edges of graphs can be **directed** or **undirected**, reflecting the nature of a connection between two nodes. For example, an edge reflecting a ‘sibling’ relationship between two sisters would be undirected, but an edge representing a debt owed by one to the other would be directed. diff --git a/content/hashdotai/glossary/integrations.mdx b/content/hashdotai/glossary/integrations.mdx deleted file mode 100644 index 399512f0a15..00000000000 --- a/content/hashdotai/glossary/integrations.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Integrations -description: Integrations allow information from different systems to be brought together, and actions coordinated across them. -slug: integrations -tags: ["Business Intelligence", "Business Software", "Graphs", "Standards"] ---- - -## What are integrations? - -Integrations allow information from one system to be either pulled or pushed into another, and actions to be taken automatically in response to that information. - -For example, job `Candidate` entities from an [applicant tracking system](/glossary/ats) may be automatically converted into `Employee` entities within a [project management software](/glossary/project-management-software) package when a job offer is extended and accepted by a candidate. - -## Coming soon to HASH - -In the context of HASH, our forthcoming integrations feature will enable data to be read from – and in some cases written back out to – a wide range of 3rd-party services. - -Data obtained through integrations will also be automatically transformable within HASH through autosuggested and user-defined [data pipeline 'flows'](/glossary/data-pipelines), which map 3rd-party data to [schemas](/glossary/schemas) and allow their property values to be [automatically enriched](/glossary/values#automated-enrichment). Flows may also be used to trigger events in HASH, as well as a small number of supported external applications. This makes it possible to build complex workflows that integrate with your existing tooling and SaaS applications. Our goal is to enable continued use of best-in-class external services while ultimately mapping the data within those applications to normalized constructs that can be rendered and interacted with through [blocks](/glossary/blocks) and flows. diff --git a/content/hashdotai/glossary/knowledge-graph-machine-learning.mdx b/content/hashdotai/glossary/knowledge-graph-machine-learning.mdx deleted file mode 100644 index 7f3df5756fb..00000000000 --- a/content/hashdotai/glossary/knowledge-graph-machine-learning.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Knowledge Graph Machine Learning -description: "Knowledge graphs are information-dense inputs to machine learning algorithms, and can capture more human-readable outputs of algorithms." -slug: knowledge-graph-machine-learning -tags: ["Graphs", "Machine Learning"] ---- - -Knowledge graphs have a number of features that make them desirable in the context of [Machine Learning algorithms](/glossary/machine-learning). They are self-descriptive, efficient, and human-interpretable. -They may be used as inputs to Machine Learning algorithms, or produced as outputs of algorithms. - -Knowledge Graphs can be used as a highly compact and flexible format for storing data and feeding it into a Machine Learning algorithm. This data structure is self-descriptive, meaning that all information needed to interpret the data is captured in the graph; it is schema-less. This makes it easy to combine multiple unstructured or semi-structured data sources as inputs. Knowledge graphs are also computationally efficient for storing and querying purposes. Drug discovery is a problem well-suited for this methodology, since it requires integrating as much data as possible from various research labs and studies to try and understand the relationships between genes, drugs, and diseases. - -Knowledge Graphs also allow for better explainability of ML results by mapping predictions to relevant nodes in the graph, which is much more human-readable than a trained neural network. Knowledge graphs can be produced as outputs from feature extraction algorithms in text and images. These algorithms might identify a number of objects (nodes) in an image or subjects in text, and then determine the relationships (edges) between those objects, both active and static. A Natural Language Processing algorithm would do the same, using text as an input. diff --git a/content/hashdotai/glossary/knowledge-graphs.mdx b/content/hashdotai/glossary/knowledge-graphs.mdx deleted file mode 100644 index 91c42f82e1d..00000000000 --- a/content/hashdotai/glossary/knowledge-graphs.mdx +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Knowledge Graphs -description: Knowledge Graphs contextualize data and power insight generation. -slug: knowledge-graphs -tags: ["Data Science", "Graphs"] ---- - -# Introduction - -Knowledge graphs (KGs) have emerged as powerful tools for organizing and connecting data in a way that mirrors real-world relationships. Knowledge graph are networks of real-world things (i.e. “entities”) and the relationships between them. Entities might be objects, events, situations, or concepts. And knowledge graphs are typically stored and visualized as a collection of **nodes** (entities) and **edges** (relationships), often in the form of subject–predicate–object “triples” (e.g. ``), which together form a web of linked knowledge. Unlike traditional databases that silo information, knowledge graphs embed data in context, revealing how pieces of information relate to each other to provide a more meaningful, connected view. - -Knowledge graphs help contextualize data - instead of treading a datum as a single, isolated fact, they store information on its relationship to other pieces of data. For instance, in a knowledge graph containing information on cars, each car could have a connection to its manufacturer; it's then easy for AI Applications to infer which cars are related. Knowledge graphs have driven advances in applied machine learning. - -Perhaps the most notable knowledge graph in use today is the Google Knowledge Graph (a large general-purpose knowledge base) which has powered Google search results since at least 2012. This large, rich knowledge graph helps inform and improve its search results - the snippets of information from searches are sourced from their knowledge graph. Today, KGs are used across many domains, and are used to organize data from multiple sources, add semantic context, and make it accessible to both humans and AI systems. - -Common applications of KGs include not only search engines and question-answering systems (going beyond keyword matching to understand a user’s actual intent), but also recommendation engines for products or content, chatbots and digital assistants, fraud detection in finance, and many more. In all cases, the knowledge graph serves as a **connected information layer** that helps “connect the dots” between disparate data, enabling deeper insights and smarter decision support. - -In this article, we will explain the **different types of knowledge graphs** that exist and how they are categorized. We will explore various industry-agnostic examples of their commercial applications – including **healthcare** and **supply chain management** – highlighting the benefits each type can offer. We will also discuss use cases, advantages, and common challenges or limitations, and how knowledge graphs contribute to business value, better decision-making, and operational efficiency. - -# Types of Knowledge Graphs - -Most knowledge graphs are stored in a [graph databases](/glossary/graph-databases) which allows them to be efficiently searched and queried. - -Knowledge graphs can be classified in several ways, depending on their **data model, scope, and design**. They differ by how they are implemented (the underlying graph technology), the breadth of their content (general-purpose vs domain-specific), their openness (public vs private), and even by temporal aspects (static vs dynamic). Below we outline some key types of knowledge graphs and their characteristics: - -## Semantic Knowledge Graphs (RDF-Based) - -One major category of KGs uses Semantic Web standards, primarily the Resource Description Framework (RDF). An RDF-based knowledge graph represents knowledge as triples and usually conforms to ontologies (formal schemas) that define the types of entities and relationships. RDF is a universal framework for describing metadata and knowledge, endorsed by W3C, allowing data from different sources to be encoded and linked in a common, machine-interpretable way. These *semantic knowledge graphs* often leverage technologies like OWL (Web Ontology Language) for rich semantics and SPARQL for querying. - -### Use cases and benefits - -Semantic KGs shine in scenarios requiring interoperability and standardization. Because they use shared vocabularies and URI identifiers for entities, they can integrate data across organizational or web boundaries. A classic example is **open knowledge graphs** on the web: projects like **DBpedia** and **Wikidata** aggregate structured knowledge from Wikipedia and other sources, providing a public semantic knowledge graph that many applications can reuse. Google’s own Knowledge Graph was initially built on such sources (like DBpedia, Freebase, Wikidata, etc.) to provide a foundation of general world knowledge. In the **healthcare domain**, semantic KGs are popular for integrating biomedical ontologies and datasets – for instance, linking gene databases, drug databases, and disease ontologies into a unified network of biomedical knowledge. The use of formal semantics enables reasoning: new facts can be inferred from the ontology and data (e.g., if *A* is a subtype of *B* and *B* is related to *C*, a reasoner can infer *A* is related to *C*). This can support advanced applications like clinical decision support or drug discovery, by uncovering indirect connections. The **contextual richness** of semantic KGs adds depth to AI applications; for example, in question-answering, a semantic KG helps a system understand the meaning of a query and retrieve exact answers using the graph’s relationships rather than just keywords. - -### Challenges - -Semantic graphs and ontologies can be complex to build and require expertise. Tools and standards (RDF/OWL) have a learning curve, and reasoning over a very large RDF graph can become computationally intensive. Ensuring different data sources align to a common ontology (resolving naming differences, for example) is itself a challenge. However, when successfully implemented, semantic KGs offer a highly expressive and interoperable knowledge structure that can be a long-term asset for knowledge management. [HASH](https://hash.ai/) is a multi-tenant platform that enables different organizations and individuals to capture and express information in the terms they care about, while maintaining interoperability with other knowledge graphs, eliminating the “traditional RDF”-based need to agree on common definitions of entities and types. - -## Property Graphs (Labeled Property Graphs) - -Another broad category is the *labeled property graph (LPG)* model, which is the basis of many graph databases (such as Neo4j, TigerGraph, Amazon Neptune (in LPG mode), etc.). In a property graph, nodes and edges can have **labels** and **properties** (key–value pairs) associated with them. This is a more schema-optional approach: rather than requiring a global ontology, property graphs allow each node/edge to carry its own descriptive attributes. For example, a node representing a **Person** might have properties like `name="Alice"`, and `age=”23”`, while an edge representing **purchased** might have the property `date="2025-02-28"`. Property graphs are very flexible and can represent complex networks with heterogeneous data. - -### Use cases and benefits - -Property graph knowledge graphs are common in **enterprise** settings where performance and agility are priorities. They are well-suited for operational applications like fraud detection, recommendation, or supply chain analysis where you need to traverse and query complex relationships quickly. Graph databases implementing LPG can perform graph traversals and pattern matching efficiently at scale, which may be hard to do with relational databases in such domains. Many organizations build internal knowledge graphs using property graph models to achieve a unified view of their business data (customers, products, transactions, etc.) without having to predefine a rigid global schema. For instance, a **supply chain knowledge graph** can use a property graph to model suppliers, factories, shipments, parts, and so on, with various attributes for each, enabling fast queries like “find alternative suppliers for component X in region Y” or “which products would be affected if supplier Z has a delay?”. (We will see a detailed supply chain example later.) Property graphs also lend themselves to integration with graph analytics and algorithms (community detection, shortest paths, centrality, etc.), supporting advanced **network analysis** on enterprise data. The benefit of this type is often *pragmatic flexibility*: teams can start populating a graph and iteratively add properties or new types of nodes as needed, aligning with agile development. - -### Challenges - -Unlike semantic KGs, property graphs don’t inherently enforce a common vocabulary across systems – which means integration still requires careful data alignment and governance. Without an ontology, there’s less automated reasoning (though one can manually encode business rules). Another consideration is interoperability: RDF is standardized, while property graph formats are less standardized (though efforts like LPG-to-RDF mappings exist). Still, property graphs avoid some complexity of semantic tech and often yield performance benefits, making them a popular choice for commercial knowledge graph platforms. [HASH](https://hash.ai/) provides a hybrid approach that combines the interoperability of semantic knowledge graphs with the expressiveness of labeled property graphs. - -## Other Classifications of Knowledge Graphs - -Beyond the implementation model, knowledge graphs can be distinguished by their scope and dynamics: - -### Enterprise vs. Public Knowledge Graphs - -An *enterprise knowledge graph* is built for internal use within an organization, capturing domain-specific knowledge and often integrating proprietary data (e.g., a bank’s KG of customers, accounts, and transactions, or a manufacturer’s KG of parts and suppliers). These are typically private and focus on a specific business domain or a *360-degree view* of the enterprise’s own data. In contrast, *public knowledge graphs* (like Google’s, Wikidata, etc.) are open or broad-scope, containing general knowledge about the world or a specific vertical, and are often accessible via public query endpoints or APIs. Public KGs can be leveraged by companies to enrich their own data – for example, an e-commerce site might link its product catalog to Wikidata entities to get additional attributes about products or related items. Enterprise KGs, on the other hand, directly contribute to internal decision-making and operations. Both types share similar technologies but differ in usage and accessibility. Many companies end up using a hybrid approach: internal KGs augmented with public data for context. - -### Domain-Specific vs. Cross-Domain - -Some knowledge graphs are **domain-specific**, containing deep knowledge about a particular field. For example: - -- A **healthcare knowledge graph** might include medical ontologies, patient data, research literature, and drug databases, all interlinked with domain-specific relationships (e.g., *Disease –\– Drug*). -- A **supply chain knowledge graph** focuses on logistics entities and relationships (suppliers, shipments, routes, inventories, etc.). Domain-specific KGs use terminology and schemas tailored to that field, which can make them extremely powerful for domain experts. -- Other KGs (like general search engine knowledge graphs or common-sense knowledge bases) are **cross-domain**, linking entities across many areas of knowledge. - -Cross-domain graphs provide breadth (useful for broad applications like general question-answering), whereas domain-specific graphs provide depth in a narrower area. In practice, many enterprise KGs start domain-specific (to solve a specific business problem) and later expand. - -### Static vs. Dynamic (Temporal) Knowledge Graphs - -A *static* knowledge graph is essentially a snapshot of knowledge at a given time – well-suited for relatively unchanging information – for example, an encyclopedia of knowledge. However, in many business scenarios knowledge is constantly evolving. - -*Dynamic* knowledge graphs update in real-time or near-real-time as new data comes in. For example, in cybersecurity or social media analytics, new events (like an alert or a post) might be ingested into the graph continuously. - -Dynamic *temporal* knowledge graphs explicitly track the time dimension for relationships, meaning the graph can represent how facts are true in certain time periods and not others (for instance, a relationship `works_at` might have timestamps for start and end of employment). Modeling time in a KG allows **temporal queries** and analysis of trends. - -Dynamic *event-based* knowledge graphs focus on capturing events and their participants as first-class nodes in the graph – useful in domains like intelligence analysis or IoT. - -Maintaining a dynamic KG can be challenging but important for applications like finance (tracking evolving ownership or transaction networks) or supply chain (tracking shipments over time), but in a business-context it is often critical, providing decision-makers with a view of the latest connected information, as most recently or currently understood. As such many enterprise knowledge graphs are now moving towards dynamic systems, such as [HASH](https://hash.ai/). - -### Multi-modal Knowledge Graphs - -While many KGs primarily store structured data (entities and relationships with attributes), some incorporate multiple data modalities. A *multi-modal knowledge graph* might link text documents, images, or other media to the entities they mention. For example, a news knowledge graph could have nodes for people and events and link to news articles (text) or photographs (images) that pertain to those nodes. In healthcare, a multi-modal KG might connect a medical image (like an X-ray) to the patient, the diagnosis, and the report text. The benefit is a richer knowledge repository that not only stores abstract facts but also ties in the source content. This is increasingly relevant as organizations seek to combine unstructured data (like documents) with structured knowledge. However, it raises complexity in storage and retrieval – often requiring specialized indexing (for text) or embeddings for images. Still, the graph serves as the glue connecting all data types. HASH natively supports data of any arbitrary type, and allows users to infinitely extend it with [custom data types](/guide/types/data-types#custom-data-types), including files of any kind. - -# Use Cases for Knowledge Graphs - -Knowledge graphs deliver significant benefits in a variety of fields and applications – from life sciences to finance to manufacturing. By providing a flexible, connected data layer, they help break down data silos, surface hidden relationships, and enable more informed decisions. In this section, we explore several industry-agnostic use cases and examples of how different types of knowledge graphs are being used commercially, the benefits they offer, and the business value they contribute: demonstrating how KGs can improve decision-making or operational efficiency in practice. - -## Healthcare and Life Sciences - -In **healthcare**, the volume and variety of data are enormous – electronic health records, lab results, medical imaging, genomics, drug databases, research publications, clinical guidelines, etc. These datasets often exist in isolation, making it difficult to get a comprehensive view of a patient or to discover insights across studies. Knowledge graphs can integrate and harmonize this fragmented data into a single connected structure. [Learn about knowledge graphs in healthcare and life sciences >](/tutorials/knowledge-graphs-in-healthcare-and-life-sciences) - -## Supply Chain Management - -Modern supply chains are highly complex networks involving suppliers, manufacturers, logistics providers, distributors, and retailers. Managing a supply chain means dealing with vast amounts of data: parts and products, bills of materials, shipment records, inventory levels, contracts, locations, and more. A small disruption at one supplier can cascade through a network and affect the final product delivery. Knowledge graphs have emerged as a game-changing solution for supply chain visibility and intelligence, because they naturally model the network structure of supply relationships and can flexibly accommodate new data sources. [Learn about knowledge graphs in supply chain management and logistics >](/tutorials/knowledge-graphs-in-supply-chain-management) - -## Finance and Banking - -The finance industry was one of the early adopters of graph techniques for tasks like fraud detection and risk management. Financial data naturally forms networks: think of banks with customers, accounts, transactions, devices, merchants, etc., all interlinked. Fraudulent activities often hide in those connections (for example, a ring of bank accounts funneling money between them, or a set of credit card transactions linked by common device or location that indicates identity theft). Knowledge graphs offer a way to model and analyze these complex relationships, going beyond what traditional transaction monitoring systems can do. [Learn about knowledge graphs in finance >](/tutorials/knowledge-graphs-in-finance) - -## Retail and E-Commerce - -Retailers and e-commerce platforms deal with diverse data about products, customers, and their interactions. Knowledge graphs are helping these companies better organize their knowledge about products and better serve their customers through recommendations and improved search. [Learn about knowledge graphs in retail and e-commerce >](/tutorials/knowledge-graphs-in-retail-and-ecommerce) - -## Enterprise Knowledge Management and Search - -Outside of specific verticals, one of the broadest applications of knowledge graphs is in **enterprise knowledge management** – helping organizations make sense of their own data across departments. In many companies, information is scattered in various databases, documents, spreadsheets, and applications (commonly referred to as data silos). Knowledge graphs can integrate these diverse sources into a single connected knowledge hub that reflects the business’s information landscape. [Learn about knowledge graphs in enterprise knowledge management >](/tutorials/knowledge-graphs-in-enterprise-knowledge-management) - -# Benefits of Knowledge Graphs in Summary - -From the various commercial examples linked above, we can distill some key benefits of knowledge graphs that apply across industries and use cases: - -- **Unified data integration:** Knowledge graphs excel at integrating data from disparate sources into a single, connected model. They provide a flexible schema that can evolve, making it easier to combine siloed data than traditional rigid databases. This means organizations can break down silos and have all their information contextually linked, ready to be queried. The immediate benefit is eliminating the time spent manually reconciling data from different systems – the KG does that for you in its structure. For example, linking customer records across sales, support, and billing databases yields a unified customer view. -- **Enhanced search and discovery:** By adding a semantic layer, KGs improve search results and enable discovery of relationships. Instead of isolated keyword hits, users get a network of related information. In platforms like [HASH](https://hash.ai/) which “vectorize” information, producing “embeddings” as data enters and is modified, this enables semantic search, allowing the system to understand users’ intent behind queries and fetching relevant answers more precisely. It also allows exploratory analysis – users can traverse the graph (“explore neighbors”) to uncover information they might not have known to query explicitly. This leads to insights that wouldn’t surface in a siloed environment. -- **Contextual awareness for AI and analytics:** Many AI algorithms treat data as isolated feature vectors, but knowledge graphs add **context** to data points. Entities in a KG carry their connections and attributes which can be used to enrich machine learning models (often improving accuracy with additional features). The graph structure also supports reasoning and inferencing, which can derive new implicit knowledge (aiding analytics with more complete data). Moreover, as discussed, KGs can supply trusted knowledge to AI systems (like LLMs) to improve their factual accuracy. All this results in smarter systems that require less data to train (since the knowledge fills in some gaps that data would otherwise have to try to learn). -- **Holistic 360° views:** Whether it’s of a customer, a product, a patient, or a supplier, knowledge graphs inherently provide a *360-degree view* by connecting all relevant information around that entity. This holistic perspective is crucial for decision-making. For example, a 360° customer view helps a company personalize service; a 360° supplier view helps a manufacturer ensure supply continuity. The benefit is that decisions or analyses based on the KG consider the full context, leading to better outcomes than partial information. -- **Speed and flexibility in querying relationships:** Many business questions boil down to graph problems (e.g., finding paths, neighborhoods, subgraphs). KGs allow such questions to be answered quickly and flexibly. Graph databases can retrieve complex relationship-based answers in milliseconds even on large datasets. This enables real-time analytics and interactive data exploration, which were previously impractical. The agility of adding new node or edge types without major rework means the knowledge graph keeps up with changing business needs. -- **Improved decision-making and insights:** Ultimately, the above technical benefits translate to **i**mproved decision-making. With knowledge graphs, organizations report faster access to insights and an ability to make connections in data that were previously missed. This can lead to innovations (finding new opportunities or optimizations) and evidence-based decisions backed by the comprehensive knowledge in the graph. For instance, seeing a hidden correlation between two processes in an enterprise KG might prompt a business process change that improves efficiency. In short, KGs turn data into an asset for strategic analysis. -- **Human-machine collaboration:** Knowledge graphs serve as a bridge between human knowledge and machine data. They can be visualized and navigated in a way that is intuitive to domain experts (a graph of concepts that experts recognize), making it easier for humans to trust and interact with the system. At the same time, they are structured enough for machines to parse. This duality means KGs can facilitate better collaboration: analysts can pose high-level questions, the system (machine) computes using the KG, and the results can be interpreted by humans with the help of the graph’s context. This loop accelerates tasks like investigations, root cause analyses, and brainstorming, by keeping the human informed and in control with the machine doing heavy lifting in the background. - -Of course, it’s important to acknowledge that these benefits are realized when the knowledge graph is well-designed and maintained. Without proper utilities to automate (or aide humans in) their maintenance, KGs can become messy webs, hard to use, and out-of-date. HASH’s versioned type system, two-way data synchronization, and intuitive user interface for domain experts helps overcome this historical burden associated with knowledge graphs. - -# Challenges and Limitations - -While knowledge graphs offer significant advantages, building and using them is not without challenges. Organizations considering a knowledge graph initiative should be aware of potential limitations: - -- **Data Integration and quality:** Integrating heterogeneous data into a graph is a major undertaking. Data may be incomplete, inconsistent, or error-prone. Ensuring high data quality in the KG is crucial – this involves entity resolution (figuring out when two records refer to the same entity), cleaning errors, and aligning schemas/ontologies. If not carefully managed, a knowledge graph can inherit the “garbage in, garbage out” problem. In fact, *quality assessment* and *cleansing* of knowledge graphs is an active area of research. Automated tools can help, but human oversight is often needed to validate that the graph’s knowledge is correct. Incomplete data is also a challenge: the graph might not have all facts, and one must be careful in analysis to not assume absence of a link means absence of a relationship in reality – it might just mean the data wasn’t captured. Techniques like knowledge graph completion (predicting missing links) exist, but again require caution and validation. -- **Scalability:** As knowledge graphs grow in size and detail, **scalability** becomes an issue. Storing and querying billions of triples or property graph edges can tax systems if not designed properly. Graph databases have made great strides in scaling horizontally and using efficient indexes, but very large graphs might still face performance issues for complex queries. Additionally, maintaining real-time updates in a huge graph (e.g., one that ingests a firehose of streaming data) is non-trivial. Organizations need to ensure they have the right infrastructure and possibly distributed graph processing capabilities for their scale. Without it, they could end up with slow query responses or inability to handle peak loads. That said, many modern graph solutions are handling enterprise-scale knowledge graphs, and cloud-based graph services can elastically scale resources. It just requires planning and sometimes significant investment. -- **Lack of awareness and expertise:** On the people side, one common challenge is that business stakeholders often don’t initially understand what a knowledge graph is or what value it brings. Unlike more established technologies, KGs may require some evangelizing within an organization. This lack of awareness can hinder getting executive buy-in or cross-departmental support. Moreover, building knowledge graphs requires a skill set that blends data engineering, semantic modeling, and sometimes graph theory – skills that are not widespread. Companies also often find it hard to hire or train engineers and data scientists with knowledge graph experience. There’s also the ambiguity of multiple technology stacks (RDF vs LPG, various databases and tools), which can confuse newcomers. Without clear standards, each team might approach building a KG differently, making it difficult to consolidate efforts. All this can slow down adoption. -- **Implementation effort and cost:** Constructing a robust knowledge graph is typically a significant project. It may require months (or more) to gather and prepare data, define ontologies or schema, and iterate on building the graph. It’s noted that developing rich KGs has historically demanded great time and manpower, with upfront costs deterring adoption, especially if returns on investment aren’t obvious early on. Stakeholders might ask: is it worth it? In some cases (like PrimeKG for drug repurposing), the payoff was finding new therapeutic insights that justified the effort. But in other cases, the ROI might be indirect or long-term. Therefore, organizations must plan for a long-term commitment – the value of a KG often accrues over time as it gets enriched and as more use cases start leveraging it. One strategy to mitigate this is to start with a smaller knowledge graph pilot for a specific high-impact use case (say, fraud detection or a recommendation system), show success, and then expand. Thankfully, the upfront costs of creating knowledge graphs have recently been massively reduced by HASH, utilizing AI to create a semantic web of knowledge exceptionally quickly, with minimal human effort or time required. -- **Maintenance and governance:** A knowledge graph is not a one-and-done dataset; it’s a living knowledge base. This raises the challenge of ongoing **maintenance**: as the world changes or as the business evolves, the KG must be updated. New entities appear, relationships change or become obsolete. Without continuous updates, the KG can quickly become stale and less useful. Governance is needed to manage contributions to the graph (especially if crowd-sourced internally) and to decide how to handle conflicting information. For example, if two data sources give different values for a property (say, two different birthdates for a customer due to entry error), the governance process defines how the conflict is resolved in the graph. Additionally, versioning of the graph knowledge might be required for auditing (knowing what the graph contained at a past date). All this adds overhead. Organizations should treat a knowledge graph as a strategic asset that requires stewardship – typically assigning data curators or a knowledge architect to oversee it. HASH’s in-built utilities both automate much of this graph maintenance, and make it easy for domain experts to dive in (inspecting the integrity of data, updating types, and modifying mappings as required) through an easy-to-use visual interface. -- **Privacy and security:** Because knowledge graphs by design connect *everything*, they can raise **privacy concerns** when the data involves personal or sensitive information. A KG might inadvertently reveal insights that violate privacy if not properly controlled (for example, linking data in a way that re-identifies an anonymized individual). Ensuring compliance with privacy laws (like GDPR) is critical – this could involve not including certain data in the KG, anonymizing nodes, or implementing strict access controls so only authorized queries can see certain parts of the graph. Unauthorized access to the knowledge graph could be more damaging than access to any single source because the KG reveals the connections and full picture. Therefore, security measures like encryption, authentication, and audit logging are important when deploying enterprise knowledge graphs. HASH addresses these privacy controls with granular in-built privacy controls and a secure-by-design architecture, providing cell-level security. -- **Initial skepticism and adoption hurdles:** Tying to the awareness point, there might be internal skepticism – “Is this just hype?”, “We already have a data warehouse, why do we need a knowledge graph?”. Convincing stakeholders often requires demonstrating concrete use cases where the graph clearly outperforms existing solutions. The relative newness of the technology can make conservative IT departments hesitant. Additionally, integrating a knowledge graph solution into existing infrastructure (to feed it data and to consume its output in applications) can face resistance simply because it’s a change. Overcoming these hurdles involves clear communication of benefits, training, and often running the KG in parallel with legacy systems until trust is earned. While this traditionally required significant upfront investment, HASH’s AI entity/type inference technology shrinks the time and cost of developing proof-of-concept knowledge graphs to \~hours, allowing solutions to be bootstrapped, tested and demonstrated quickly and affordably. - -Despite these challenges, the trajectory in many organizations is that once a knowledge graph starts proving its worth (even in a limited scope), adoption grows. Best practices, as highlighted by practitioners, include starting with a well-scoped project, focusing on data where relationships matter a lot, engaging both business and technical experts in designing the KG (so it fits the actual needs), and iterative development – building the graph incrementally and showing value at each stage. Also, using hybrid teams of domain experts helps ensure the knowledge graph’s structure truly represents the reality of the business domain. HASH’s visual user interfaces provide an easy means for users to input into as well as use data, making it ideally suited for constructing and managing organizations’ knowledge graphs. - -# Conclusion - -## Making data useful - -Knowledge graphs help organizations leverage data for commercial value. By organizing disparate information into a network of knowledge, they allow businesses to **unlock connections** in their data that were previously hidden or hard to exploit. Across industries – from healthcare discovering new treatment insights, to supply chain managers gaining real-time visibility, to financial institutions catching fraud, to retailers delighting customers with spot-on recommendations – knowledge graphs have demonstrated tangible benefits. They enable faster insights and better-informed decisions by ensuring all relevant information is connected and readily accessible. In operational terms, this means greater efficiency: teams spend less time gathering data and more time acting on it, processes become smarter and more automated, and systems can proactively support users with context-aware intelligence. - -## Useful across industries and functions - -The commercial applications we explored also show how **industry-agnostic** the impact of KGs can be. Any scenario where understanding relationships between data points is key can likely benefit from a knowledge graph. They contribute to business value by enhancing everything from strategic planning (through improved analytics and forecasting) to day-to-day operations (through quicker search and issue resolution). For example, a supply chain knowledge graph not only helps avoid disruptions (ensuring continuity and revenue), but also can optimize operations to be more cost-effective. A customer knowledge graph can increase sales and loyalty through personalization. In knowledge-driven fields, a KG becomes a backbone for innovation, enabling new services (like advanced question-answering systems in customer support or clinical decision support tools in medicine). - -## Accreting value over time - -It is important to approach knowledge graphs with the understanding that their value typically grows over time. Early on, they might solve a specific problem, but as they accumulate more knowledge and usage, they can become a kind of **knowledge platform** for the organization, supporting numerous applications (search, BI, AI, etc.) simultaneously. This compounding value can far exceed the initial expectations – effectively turning data into an **enterprise-wide asset for intelligence** rather than a byproduct of operations. “Tech” companies like Google, Amazon, Microsoft, and Facebook have shown this at web-scale, and now many others are following suit at enterprise scale, often noting that knowledge graphs quickly go from “nice-to-have” to **must-have** for competitive advantage in the era of AI. - -## Agility through common human- and machine-readability - -Knowledge graphs bring the **richness of human-like understanding** to our data systems – treating data not just as rows in tables but as interlinked knowledge. Businesses that successfully implement knowledge graphs can expect improved decision-making, more efficient operations, and the ability to discover insights that fuel innovation. There are challenges to overcome in building and maintaining a KG, but with careful planning and the right expertise, the payoff is a **smarter, more agile organization** that can leverage its collective knowledge to the fullest. In a world increasingly driven by data and AI, knowledge graphs provide the contextual glue that can turn information overload into actionable intelligence, making them a cornerstone of modern enterprise strategy. diff --git a/content/hashdotai/glossary/licensing.mdx b/content/hashdotai/glossary/licensing.mdx deleted file mode 100644 index f760e279e4d..00000000000 --- a/content/hashdotai/glossary/licensing.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Licensing" -description: "There are lots of ways to license intellectual property, including your datasets, simulation models, and other code. Here we outline some key considerations and things to be aware of." -slug: licensing -tags: ["Simulation Modeling"] ---- - -"Licensing" refers to the terms under which intellectual property such as datasets, code, or pieces of writing are made available. - -## Code Licenses - -There are lots of ways to license code, including HASH [simulation models](/glossary/simulation). - -Whilst simulation models can be published transparently and publicly on [HASH](/platform/index) with all rights regarding their usage reserved under traditional copyright law, this is fairly uncommon. More often, one of two alternatives takes place: - -1. If a simulation author doesn’t want other people using their code, they don’t publish it transparently at all. Projects can be kept private on HASH so there is no need to make available copyrighted code if you do not wish to. -1. Oftentimes, code that is published publicly on the internet is released under the terms of a software license. - -### What is a software license? - -Software licenses, including open-source licenses, and end-user license agreements (EULAs) specify what others can do with your raw code, and its compiled outputs (in this case the simulation itself). - -### What software licenses does HASH support? - -HASH allows you to specify absolutely any terms you like. You’re responsible for making sure that these are statutorily enforceable, and what counts as such may differ from place to place. You should remember that when you publish things on the internet, they are accessible globally. - -To make things easy, when you publish projects to HASH we allow you to select from a long list of well-established, battle-tested licenses for software. These include: - -- Apache License 2.0 -- Attribution (CC BY) -- Attribution ShareAlike (CC BY-SA) v3.0 -- Attribution ShareAlike (CC BY-SA) v4.0 -- Attribution-NoDerivs (CC BY-ND) -- Attribution-NonCommercial (CC BY-NC) -- Attribution-NonCommercial-NoDerivs (CC BY-NC-ND) -- Attribution-NonCommercial-ShareAlike (CC BY-NC-SA) -- CC0 (No Rights Reserved) -- Copyright (All Rights Reserved) -- GNU AGPLv3 -- GNU GPLv3 -- GNU LGPLv3 -- MIT License -- Mozilla Public License 2.0 -- The Unlicense - -## Data Licenses - -We also make additional licenses available when publishing certain types of data publicly, including: - -- Open Data Commons Attribution License -- Open Data Commons Open Database License (ODbL) -- Open Data Commons Public Domain Dedication and License (PDDL) - -As previously mentioned, there is however no limit to the license terms under which you may publish content to HASH and you are always free to choose an alternative license or specify custom terms yourself. - -We recommend selecting from one of the pre-supported above licenses which are widely used and understood already in the software world today. This ensures that prospective users of your simulation model can quickly determine the rights they have (and limitations placed upon them) when interacting with your work, without needing to consult with legal counsel. diff --git a/content/hashdotai/glossary/links.mdx b/content/hashdotai/glossary/links.mdx deleted file mode 100644 index 78e8ef9f397..00000000000 --- a/content/hashdotai/glossary/links.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Links -description: Links between different entities represent the relationships and connections between them. -slug: links -tags: ["Graphs"] ---- - -## Links between entities - -Links between entities reflect a relationship or other type of connection between them. - -For example, a `Person` entity may be considered linked to a `Political Party` entity if they have donated to them, or stood for an election on their behalf. - -Entities may have one or more links to entities of any number of types. For example, a `Person` may be linked to more than one `Political Party`. They may also be linked to more than just a `Political Party`. They may have a `Sports Team`, links to many other `Person` entities, and a day job linking them to an employer `Company` entity as well. - -## Link types - -Links have [types](/glossary/types). Not all links imply the same thing. We infer meaning through links from their types. A link may indicate current membership, or former membership. It may indicate a positive relationship or a negative one. - -## Directed links - -Links may be directed or undirected. Directed links imply that a relationship between two entities is not 'equal' -- for example, two entities may have a `Mother` `<>` `Child` relationship. In this case one entity is the literal parent of another, and it is impossible for the reverse to be true. Similarly, two entities `Boss` and `Employee` may be connected by a directional link that conveys the power dynamic governing their relationship. - -Undirected links may either be _bidirectional_ (equally mirrored) or their nature may not yet be known. diff --git a/content/hashdotai/glossary/machine-learning.mdx b/content/hashdotai/glossary/machine-learning.mdx deleted file mode 100644 index 87a6f4db6d0..00000000000 --- a/content/hashdotai/glossary/machine-learning.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Machine Learning -description: Machine Learning is a subfield of Artificial Intelligence where parameters of an algorithm are updated from data inputs or by interacting with an environment. -slug: machine-learning -tags: ["Machine Learning"] ---- - -## What is Machine Learning? - -**Machine Learning** is a subfield of Artificial Intelligence where algorithms update their parameters (learn) by interacting with an **environment** or from going through a **training dataset**, ie. fixed data used to tweak the parameters of algorithms. Machine Learning is primarily used to make **predictions** using statistics, applying those statistical methods to business problems is the realm of **predictive analytics**. Most recent advances in Machine Learning have been driven by research in Deep Learning, which is the combination of Machine Learning and multi-layer [artificial neural networks](/glossary/neural-nets). - -

- -

- -## Why use Machine Learning? - -The advantage of using Machine Learning instead of traditional Artificial Intelligence algorithms is that models can act and adapt to different possible environments or data without being explicitly programmed to do so. In that sense, it is more flexible than rule-based Artificial Intelligence where humans often have to hard-code expert knowledge about the task at hand. A striking example has been AlphaZero beating the best (overly engineered) chess programs without any prior rule or knowledge about chess. - -The two use-cases of machine learning are to either give a numeric answer to a question (eg. "what will be the price of bitcoin tomorrow"), which we call a **regression problem**, the simpler example being a linear regression (aka a straight line passing through the data). The second use-case is **classification** where the objective is to tell if a given input belongs to a particular group. A popular example is to determine whether in an image there is a cat or a dog. - -## Types of Machine Learning - -The three most important themes in machine learning are supervised learning, unsupervised learning and reinforcement learning. [Data mining](/glossary/data-mining) falls into the scope of unsupervised learning, where the goal is to extract insights about the data. Traditionally, supervised learning made extensive use of decision trees, support-vector machines, bayesian networks and genetic algorithms (defined below), though in the past 5 years deep learning is omnipresent in machine learning algorithms. - -1. **Supervised Learning**: the model learns from a training data with labels in order to be able to predict the labels of some test data, where the algorithm has not seen the labels. This can be for instance a classifier being able to tell if an image is a dog or a cat after having been exposed to millions of images of cats and dogs, with the corresponding labels. _Supervised_ comes from the model learning from the correct questions (training examples) and answers (training labels), like if it was a teacher supervising the learning by providing some material. - -1. **Unsupervised Learning**: the model does not have access to any label. One popular application is clustering where the goal is to identify natural groups of examples in the dataset. This could be for instance determining the behavior of a website user. Another idea is to see which datapoints in our dataset is very far away from what we would expect from the rest of the distribution, which we call an **outlier**, or **anomaly** in anomaly detection. This is used in computer security to detect strange behaviors, for instance with non human-like requests. - -1. **Reinforcement Learning**: an agent interacts with an environment by observing states and rewards from his actions. It shares some components of [agent-based modeling](/glossary/agent-based-modeling) like having agents that interact with environments, and the state is essentially the collection of all the agents' properties. However, in reinforcement learning with one agent we do not consider the rules as something separate from the environment, but solely as a particular part of the environment that an agent needs to learn. In Multi-Agent Reinforcement Learning we can either consider each agent as being in its own one-agent reinforcement learning environment, or provide ways of communication between agents that would allow them to share their plans, states and rewards. For more details about reinforcement learning and how to apply it with neural networks see the glossary page on [deep reinforcement learning](/glossary/deep-reinforcement-learning). - -1. **[Data Mining](/glossary/data-mining)**: methods used in data mining broadly overlap with machine learning techniques, especially unsupervised learning. However, the main goal is to discover underlying **properties** in the training data, without any requirement of "learning". These deduced properties will then be used by predictive algorithms. - -1. **Decision Trees**: at each node of a tree specific variables of the data is assessed, which will determine which children node will be visited next. This algorithm can be used to end with a certain decision or classify images. These decision trees, coupled with more complex algorithms such as "Random Forest" are often enough to win kaggle competition. - -1. **Support-vector machines**: can work for both classification and regression, by mapping the inputs into another higher-dimensional space, using what is known as _the kernel trick_. - -1. **Bayesian Networks**: assumes the training data is a table of multiple variables with dependencies that can be modeled by a [direct acyclic graph](/glossary/dag). Such a graph, known as a **bayesian network**, can be used to compute probability distributions using chain rules and conditional probabilities. The resulting model is easily interpretable and is therefore sometimes preferred over black box solutions such as deep neural networks. - -1. **Genetic Algorithms**: each agent is defined by some information (its genome), and the survival of its genes depends on how it will perform to do a certain task. This mimicks how evolution managed to produce intelligent behavior, by simulating a multi-agent simulations over many steps, and expecting that after multiple crossovers and mutations the correct behaviors (corresponding to the right genes) will spontaneously emerge. - -## Applying Machine Learning in practice - -[HASH's platform](/platform) allows users to easily create environments for multi-agent simulations. These can be modified for synchronous multi-agent reinforcement learning problems, where each agent navigates and discovers solutions of arbitrarily complex systems. It is also possible to simulate entire populations of agents and run genetic algorithms. - -For supervised learning approaches, [datasets](https://hash.dev/docs/simulations/create/datasets) can be added to the simulation as standard tables (CSV files) or standardized web formats (JSON files). diff --git a/content/hashdotai/glossary/merge.mdx b/content/hashdotai/glossary/merge.mdx deleted file mode 100644 index f0c66b19c1c..00000000000 --- a/content/hashdotai/glossary/merge.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Merging -description: Merging is the process of reconciling two projects together. In HASH merging projects is handled by submitting, reviewing and approving “merge requests”. -slug: merge -tags: ["Software Engineering"] ---- - -Merging is the process of reconciling two projects together. Typically in HASH, this refers to the process of merging a [forked project](/glossary/fork) with the original project from which it was derived. - -In HASH merging projects is handled by a process of submitting, reviewing and approving _merge requests_. - -## Submitting a merge request - -_Merge requests are coming soon to HASH._ - -When creating a merge request in HASH, there are two relevant projects: - -1. the **source**, from which changes will be taken; and -1. the **target**, into which changes will be merged. - -## Reviewing a merge request - -Reviewing a merge request can mean two different things. - -1. **Line-by-line diffing (automatic)**: a [diff](/glossary/diff) will be automatically produced. If no changes have occurred on the -1. **Human-review process (optional)**: as part of this review process, the diff of a proposed merge may be inspected by a human: usually a nominated maintainer of the _target_ project. - - Human reviews of merge requests are generally recommended, but optional by default. Some projects, however, may require them before allowing merge requests to be integrated. - - A reviewer of an inbound merge request has three options: they can accept a proposed merge, reject it entirely, or request changes. - - Reviewers can comment on diffs line-by-line to provide direct feedback to would-be contributors. - -## Making the merge - -Read more about [forking and merging](https://hash.dev/docs/simulations/create/collaboration/forking-and-merging) in our docs. - -## Helpful information - -If you’ve ever used Git, or collaboration tools like GitHub or GitLab you’ll be familiar with the concept of merge requests already, although may know them as “pull requests”. diff --git a/content/hashdotai/glossary/metadata.mdx b/content/hashdotai/glossary/metadata.mdx deleted file mode 100644 index 1bb1ecf6e86..00000000000 --- a/content/hashdotai/glossary/metadata.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Metadata -description: Metadata is data about data. It’s quite simple, really. Learn more about how it’s used within. -slug: metadata -tags: ["Data Science", "Standards"] ---- - -Metadata is data about data. For any piece of data, there is typically lots of metadata. Some common types of metadata found on HASH include: - -- **Provenance metadata** – information such as the timestamp of creation, the datetime a file was last modified, the identity of a file’s creator, other information about the data’s origin -- **Quality metadata** – a margin of error, confidence interval, or probability score that indicates the likely accuracy of the data -- **Statistical metadata** – information that describes the process (e.g. [data pipeline](/glossary/data-pipelines)) that produced data -- **Legal metadata** – the copyright holder, and any licensing terms data may be available under -- **Security metadata** – logs recording attempts to access data, and information regarding authorized users - -Metadata is useful because it provides context to the data we use. - -Some metadata is attached automatically by systems such as HASH when users perform certain actions (e.g. creating a file, connecting a datasource, constructing a flow, or editing a row in a dataset). - -Other metadata can be added manually. For example, mapping data to schemas within HASH is an example of purposefully attaching metadata that describes the **type** of columns in a dataset, and the **properties** of the agents or events those columns represent. - -A multitude of standards exist for describing different possible and expected types of metadata, which can in turn be used by business software to provide improved functionality or interoperability. diff --git a/content/hashdotai/glossary/model-drift.mdx b/content/hashdotai/glossary/model-drift.mdx deleted file mode 100644 index 5ecc046f9c1..00000000000 --- a/content/hashdotai/glossary/model-drift.mdx +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Model Drift -description: Models tend to become less accurate over time. -slug: model-drift -tags: ["Data Science", "Simulation Modeling"] ---- - -Model drift is the phenomenon where a model becomes less accurate, less precise, and overall less predictive over time due to changes in the relationship between the target and input variables. We can think of a model, in its most simple form, as an identified 'relationship' between two or more variables, such that a change in one causes a systematic change in another. For example, you could have a model of the relationship between temperature and ice cream sales, where when the temperature goes up so too do sales in ice cream. - -However, the world is always changing, and the underlying relationship between two variables is not guaranteed to always be consistent. If ice cream suddenly becomes unpopular - maybe everyone in the group you’re modeling decides they prefer frozen yogurt - the predictive relationship of temperature to ice cream will weaken. The model that once accurately reflected reality has drifted away from it. - -Model drift can have different causes, but broadly speaking it's due to either 'concept drift', where the variable definitions have changed, or '[data drift](/glossary/data-drift)', where the underlying real world data has changed. - -The key to fighting model drift is continuous monitoring and optimization. Models can and should be refitted frequently against new, updated datasets, to ensure that the models still reflect ground truth, and inspected to ensure that the concepts are still accurate. diff --git a/content/hashdotai/glossary/model-sharing.mdx b/content/hashdotai/glossary/model-sharing.mdx deleted file mode 100644 index 41e0e477d35..00000000000 --- a/content/hashdotai/glossary/model-sharing.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Model Sharing -description: "There are lots of ways to share simulation models: blackbox, greybox, closed, open, transparent, and output-only. Here we explain what these terms all mean." -slug: model-sharing -tags: ["Simulation Modeling"] ---- - -## Blackbox Sharing - -Blackbox sharing is the distribution of a simulation run (or set of runs) to others without exposing the code, data or parameters that resulted in the model’s production, nor allowing any user-interaction with the model. - -In the case of a simulation model built atop [HASH](/platform), blackbox sharing allows: - -- **simulations builders** to share pre-computed runs of a simulation with others, without revealing the model’s workings; -- **simulation viewers** to execute or inspect pre-computed runs of a simulation. - -Blackbox sharing is useful for distributing forecasts and projections that show how systems evolve over time, without revealing source code or sensitive data. But blackbox sharing isn’t the only way to distribute a simulation run (at least in [HASH](/platform)). - -## Closed-Greybox Sharing - -Closed-greybox sharing is similar to blackbox sharing, except that users are provided with **the ability to vary a fixed set of parameters** that feed a simulation (usually a simulation’s [global variables](https://hash.dev/docs/simulations/configuration)). - -As in blackbox sharing, simulation logic such as code and other parameters not intended for sharing can remain off-limits to simulation viewers. - -Closed-greybox sharing is useful for enabling outsiders to vary key assumptions of a simulation model and conduct runs without revealing proprietary source code or sensitive data. - -## Open-Greybox Sharing - -Open-greybox sharing goes one step further, allowing users to vary any input parameters in a simulation, or even connect their own data-sources for use. - -At the same time, all or some model logic (simulation code) or sensitive data (e.g. personally-identifiable information) remains off-limits to viewers. - -Given the ability of simulation viewers to vary parameters in an uncontrolled fashion it may, however, be possible to reverse-engineer simulation logic. For models of any reasonable degree of complexity this requires great effort, and is often infeasible – but sharers should be aware. Typically viewers of open-greybox models are asked to agree to some terms of engagement, or sign a non-disclosure/non-compete. - -Open-greybox sharing is useful for sharing simulations with semi-trusted third-parties with whom a high degree of experimental freedom is to be entrusted. - -## Transparent Sharing - -In the case of transparent sharing, access to all simulation source code and data is exposed to the end-user. This includes both: - -1. simulations that are shared completely (i.e. transparently) with one or more users, but kept private; -1. simulations that are made public — for example published to [hIndex](/platform/index), the largest repository of transparently shared simulations in the world. - -When a simulation is shared in a transparent fashion, it may still be copyrighted, or subject to other [license terms](/glossary/model-licensing). - -## Output-Only Sharing - -A final type of sharing, “output-only sharing”, is more restrictive than any of the other forms of sharing outlined above. - -Output-only sharing refers to the distribution of certain specified simulation outputs only (i.e. single values of specific metrics tracked during a simulation run). The “entire run” of a simulation will not be visible, and only the individual metric tracked will be made available. Typically this is accessed via an Application Programming Interface, such as the [HASH API](https://hash.dev/docs/simulations/api). - -Whereas blackbox sharing results in the distribution of an entire simulation run to the end-consumer, so they can see how it evolved over time, output-only sharing simply cherrypicks a metric (e.g. the final state of a particular value at the end of a simulation run, or the average value of a particular thing over the lifetime of a run). - -Output-only sharing is useful for powering business intelligence dashboards, and applications which require operationalized simulation models to drive their own internal logic (e.g. a recommendation engine, or optimizer). - -## Getting started - -HASH is the only AI and simulation platform that supports true blackbox, closed-greybox, open-greybox, transparent and output-only forms of sharing. - -This makes HASH ideal for regulated environments in which both model secrecy and proving compliance is a concern, as well as high-security environments, and in powering third-party applications which require simulation data as inputs. [Read more about sharing in HASH >](https://hash.dev/docs/simulations/sharing-releasing) - -**Currently available:** - -- **Transparent** sharing is fully available within the [hCore](/platform/core). -- **Closed-greybox** sharing is in public beta and available when sharing or embedding private projects from hCore (with code-privacy guarantees coming soon). -- **Output-only** sharing is available as part of HASH’s pre-release program ([register for access](https://hash.dev/docs/simulations/api/register-for-access)). -- **Blackbox** sharing and **open-greybox** sharing are coming soon. diff --git a/content/hashdotai/glossary/multi-agent-systems.mdx b/content/hashdotai/glossary/multi-agent-systems.mdx deleted file mode 100644 index 84d59f250ea..00000000000 --- a/content/hashdotai/glossary/multi-agent-systems.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Multi-Agent Systems -description: "Multi-Agent Systems represent real-world systems as collections of intelligent agents." -slug: multi-agent-systems -tags: ["Simulation Modeling", "Software Engineering"] ---- - -Multi-agent systems are computational structures made up of multiple intelligent agents who can process information, interact with their environment, and with other agents. Multi-agent systems can represent many different real-world systems: transportation, healthcare, and networking are just a few examples. - -The agents in MAS must typically meet a number of criteria: - -- Self-aware: agents are aware of their own internal state (properties) -- Autonomous: agents determine their own actions, instead of being fully controlled by a central source -- Limited information: agents are aware of their “local” environment (as defined by the model) through their own eyes only, instead of being granted full or perfect knowledge of a system - -Agents can have various degrees and structures of “intelligence”, in the form of hard-coded logic, utility-maximizing functions, or neural networks. - -[Agent-Based Models (ABM)](/glossary/agent-based-modeling) are closely related to Multi-Agent Systems, but are differentiated by their goals. The development of an ABM is typically for explaining or demonstrating certain existing phenomena as a result of collective agent behavior, as opposed to a MAS where the primary goal is designing agents which can solve a specific problem. Because of this, ABM agents are typically simpler. diff --git a/content/hashdotai/glossary/neural-nets.mdx b/content/hashdotai/glossary/neural-nets.mdx deleted file mode 100644 index 33631dc83b7..00000000000 --- a/content/hashdotai/glossary/neural-nets.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Artificial Neural Networks -description: Artificial Neural Networks are computer models inspired by animal brains. They consist of collections of nodes, arranged in layers, which transfer signals. -slug: neural-nets -tags: ["Machine Learning"] ---- - -## What is an Artificial Neural Network? - -Artificial Neural Networks (ANNs) are computer models inspired by the workings of animal brains. They consist of collections of nodes, commonly referred to as **neurons**, which are connected in a graph. - -Neurons are typically arranged in layers, performing different transformations on their inputs. The first layer is known as the **inputlayer**, and the last is the **outputlayer**. - -The connections between neurons are known as **edges**, and signals can be transmitted along these to other neurons. Signals are real numbers, and they may traverse layers more than once. - -Neurons that receive signals process them, and may in response send signals to other neurons to which they are connected to them. When a signal is outputted by a neuron, it is a nonlinear function of the sum of its inputs. - -Neurons and edges typically have **weights** that adjust as learning proceeds. Weights increase or decrease the strength of the signal at a connection. - -Neurons may have thresholds such that signals are transmitted onwards only if the aggregate strength of a signal is greater than them. diff --git a/content/hashdotai/glossary/optimization-methods.mdx b/content/hashdotai/glossary/optimization-methods.mdx deleted file mode 100644 index 0840802e1e1..00000000000 --- a/content/hashdotai/glossary/optimization-methods.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Optimization Methods -description: The key to finding the best solution to any problem. -slug: optimization-methods -tags: ["Data Science", "Simulation Modeling"] ---- - -Optimization is the practice of finding the best solution to a problem given a set of constraints. While that seems straightforward, many 'problems' are extremely complex, and can't be solved in a straightforward fashion. If there are many parameters, or if the problem space is dynamic and changes over time, it's often infeasible to brute force try every possible type of optimization. That's why there are many different optimization methods that can be employed to find good potential solutions to a problem. - -There are hundreds of different optimization techniques. Three popular 'categories' of optimization: - -- **Differentiable Optimization:** In cases where the rate of change can be calculated for a given point in the input space, differentiable functions can be used to find minimums and maximums. Example: Linear Solvers, Gradient Descent. -- **Stochastic Algorithms:** Algorithms that sample the domain and use randomness to find and compare solutions. Algorithms may be naive and blind to data, or use smart heuristics to find the best answer. Examples: Grid Search, Simulated Annealing, Bayesian. -- **Population Algorithms:** Algorithms that create a pool of candidate solutions, using them to search through the problem space to find the optimal solution. Like other stochastic algorithms they use randomness to explore more solutions, but with a large pool they can be more robust. Population algorithms may also use evolutionary techniques, combining fit solutions to reach optimal solutions. Examples: Genetic Programming, Particle Swarm. - -Many of these techniques may also be used for hyperparameter optimization. diff --git a/content/hashdotai/glossary/parameters.mdx b/content/hashdotai/glossary/parameters.mdx deleted file mode 100644 index d1686aaa226..00000000000 --- a/content/hashdotai/glossary/parameters.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Parameters -description: "Parameters control specific parts of a system's behavior." -slug: parameters -tags: ["Data Science", "Simulation Modeling"] ---- - -A parameter is a constant value that controls or specifies part of the behavior of a system. Parameters can represent values that localize a generic simulation to a specific environment or application, for instance: average rainfall in an agriculture simulation. They can also represent decision variables, for instance the tax rate in an economic policy simulation. - -In HASH simulations, agent-level properties are one example of parameters. Simulation-level parameters can be defined by users in the [globals file](https://hash.dev/docs/simulations/create/configuration), providing easy access to all agents. HASH experiments function by running simulations with modified sets of those parameters. HASH also provides the means for visual interfaces to be created that vary simulation parameters. diff --git a/content/hashdotai/glossary/process-mining.mdx b/content/hashdotai/glossary/process-mining.mdx deleted file mode 100644 index 7e36ba24bef..00000000000 --- a/content/hashdotai/glossary/process-mining.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Process Mining -description: Process mining is an application of data mining with the purpose of mapping an organization’s processes. It is used to optimize operations, and identify weaknesses. -slug: process-mining -tags: ["Data Science", "Machine Learning", "Simulation Modeling"] ---- - -## What is Process Mining? - -Process mining is an application of [data mining](/glossary/data-mining) with the aim of mapping and discovering an organization’s processes. While data mining leverages big data to gain insights on business performance, process mining provides an understanding of the overarching processes within an organization. - -Process mining is used to better understand the real (non-hypothetical) processes that actually exist within systems. When combined with a simulation modeling tool like [HASH](/platform), this has applications in: - -- improving the efficiency of operations; -- identifying weaknesses within processes; -- identifying undocumented processes and procedures that may represent a risk in the event of unexpected worker absence or leave. - -Through process mining, areas of risk and opportunity can be systematically identified, and reviewed. - -## How does Process Mining work? - -Process mining was historically something of a manual task which involved analysts (often outside consultants) shadowing and observing workers and departments to build a picture of their everyday day-to-day. This approach was expensive and time-consuming, and came with the risk of an [observer effect]() altering the validity of results. - -Modern process mining utilizes discrete software and analytics programs to map worker activities and their relation to one another, in an automated, silent fashion. These software packages keep ‘event logs’ each and every time a process is completed, along with relevant information as to how that process was carried out (e.g. what applications or webpages were open? which pieces of data were pasted from one application to another? how long did it take to complete in total?) - -From these event logs, performance metrics can be determined, and underlying real-world practices better understood. Discrepancies between reality on the ground, and formally documented processes can be easily detected (allowing for investigation as to why), and non-performant or redundant processes addressed. Through continuous monitoring and process mining, KPIs and targets for improvement can be set and effectively pursued. - -## Types of Process Mining - -There are three main types of process mining, which are dependent upon whether an existing process model can be used. - -**Conformance checking** or **performance analysis** are used when existing models exist, whereas **discovery** is used in the absence of a prior model. - -1. **Conformance checking**: event logs are compared to the prior model and are analyzed for points of adherence and divergence. Performance data can reveals any aberrations from a reference model, and may be used to forecast future potential bottlenecks under varying conditions, through Monte Carlo-style simulation experiments in tools such as [hCore](/platform/core). Decision-makers can use these insights to adjust or overhaul processes to ensure future conformance to the model. -1. **Performance analysis**: used not to check existing data against the model, but to optimize the performance of the reference model itself, based on a number of performance objectives (e.g. level of standardization, relative cost, cycle times and quality of end product — or stakeholder satisfaction). -1. **Discovery**: a didactic approach to process mining, where a new model is constructed based on event logs. This is especially useful where processes exist but may not be known or well-understood. - -## How is Process Mining used? - -Process mining can unveil hidden causal relationships in a system, where underperformance in one area harms outcomes in another. These interdependencies can then be captured and explored in more detail in a [simulation environment](/platform) such as HASH. This is especially effective in modeling dynamic and variable real operational processes, where digitized (yet unstructured) process data exists. - -Below are the main uses of process mining in [business process modeling](/glossary/business-process-modeling): - -- **Process monitoring for security and adherence**: the act of logging/recording information about processes as they occur for investigation, warning and audit purposes. -- **Process analysis for resiliency**: using log files to identify strengths, flaws, redundancies and deficiencies in process operations. -- **Process design optimization**: using insights gained from process monitoring to adjust or reinvent existing processes. -- **Process identification**: data mining algorithms are applied to event logs to identify patterns, correlations and anomalies in event data and document processes not already known to exist. - -Troubleshooting and then re-engineering processes helps with operational management, also allowing the user to monitor the impact of process improvements after they have been made. Meanwhile, fully understanding existing processes and increasing transparency of workflows present opportunities for strategic shifts, or to pivot based on recent process developments. It allows organizations to maintain a competitive edge, through taking a long-term view on their internal processes. diff --git a/content/hashdotai/glossary/project-management-software.mdx b/content/hashdotai/glossary/project-management-software.mdx deleted file mode 100644 index 4ad1ac1cdf8..00000000000 --- a/content/hashdotai/glossary/project-management-software.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Project Management Software -description: "Project management software is used to manage teams completing complex projects." -slug: project-management-software -tags: ["Business Software"] ---- - -Project management software allows people to manage complex projects which span time, personnel, teams, and disciplines. Managers and employees typically break projects into smaller manageable tasks, then track their completion progress. Tasks can capture information such as due dates, assigned employees, resources needed, time estimates, relevant information, and link to other tasks which they are dependent on or block. - -Tasks are tracked in a shared visual interface which provides transparency and accountability for all employees, and enables individual ownership. Project management software can also provide quantitative aids for the planning process. As users create data by generating and completing tasks, estimates can be generated for timelines and resources needed to complete a project. diff --git a/content/hashdotai/glossary/properties.mdx b/content/hashdotai/glossary/properties.mdx deleted file mode 100644 index bb61d30b884..00000000000 --- a/content/hashdotai/glossary/properties.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Properties -description: Properties store individual pieces of information about entities. All property fields on an entity are inferred from its entity type(s). -slug: properties -tags: ["Data Science", "Graphs"] ---- - -Properties store individual pieces of information about [entities](/glossary/entities) as [values](/glossary/values). All properties on an entity are inferred from that [entity's type(s)](/glossary/entity-types). - -Property values (the contents of a property field) can either be **required** or **optional**. In either case, marking a property as required or not will be specified on the thing _using the property_ (e.g. the entity type which requires the property) rather than on the property itself. - -Properties are one of two kinds of [attributes](/glossary/attributes) (things which describe entities), with the other being [links](/glossary/links). - -## Property types - -A **property type** is how a property is defined. It can be used by one or more entity types, or _other_ property types. A property type: - -- defines the `name` of the property; -- contains an optional `description` that explains in human-readable terms what that property represents; and -- contains information about what the property’s value is expected to look like, either through reference to [data types](/glossary/data-types) or other property types. diff --git a/content/hashdotai/glossary/robustness.mdx b/content/hashdotai/glossary/robustness.mdx deleted file mode 100644 index e089f4626c0..00000000000 --- a/content/hashdotai/glossary/robustness.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Robustness -description: "Robustness is a measure of a model's accuracy when presented with novel data." -slug: robustness -tags: ["Data Science", "Machine Learning", "Simulation Modeling"] ---- - -Robustness is a measure of a model's ability to produce accurate results when encountering novel data. Most ML and AI models are initially trained on a set of data that is a representative sample of the data it will encounter in production. However, it’s near impossible for training data to fully represent the full complexity of a real world distribution of data - robust models can generalize from specific training data to more general datasets, and handle [data drifts](/glossary/data-drift) and adversarial inputs gracefully. - -A common critique of modern machine learning is its tendency to produce **fragile** models that only work as expected when it encounters data very similar to the type of data it trained on. These models are often said to be **overfit**. While these types of models look good in testing, in production they often fail in unexpected ways. - -There are a number of approaches that are being developed for improving robustness: - -1. Better interpretability and understanding of black box AI techniques can, in general, help modelers improve robustness. [Agent-based models](/glossary/agent-based-modeling) are traditionally more robust than other methods because the agents have set, interpretable behaviors, which allows them to be quickly improved and corrected. -1. Domain randomization within [multi-agent systems](/glossary/multi-agent-systems) and [synthetic environments](/glossary/single-synthetic-environment) can help create in models which perform better under a wider array of conditions, including those which may occur in the real-world but not have been present in historical data used to train models in the first place. diff --git a/content/hashdotai/glossary/rpa.mdx b/content/hashdotai/glossary/rpa.mdx deleted file mode 100644 index 567b9ddcc77..00000000000 --- a/content/hashdotai/glossary/rpa.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Robotic Process Automation -description: "Robotic process automation uses software to perform repeatable business tasks." -slug: rpa -tags: ["Business Software"] ---- - -Robotic Process Automation is an emerging technology practice for automating basic business tasks. RPA software can construct ‘bots’ which are programmed to perform rules-based, repeatable tasks such as sending emails, manipulating data, and interacting with a file system. Some RPA software is also able to detect workflows and processes where these bots can be useful, observing human operators’ actions and determining whether they are repeatable and rules-based. - -RPA reduces human error, staffing needs, and can speed up workflows. It can be applied across a broad swath of domains, from warehousing, healthcare, retail, and financial services. As more business tasks are integrated into a company’s RPA workflows, they can also be represented as [Business Process Models](/glossary/business-process-modeling) (BPMs). These BPMs can be used to evaluate the performance of the current system by running them in simulations. - -Simulation can help a business optimize its RPA workflows. They can allow you to assess the current state of your system under normal conditions by identifying bottlenecks or underutilized resources. [Risk analysis](/cases/risk) also becomes easy, since a simulation can allow you to explore edge cases for your business that rarely occur, but are vital to be prepared for, such as unexpected surges in demand. RPA simulation also makes it easy to assess design alternatives, allowing you to experiment with a [digital twin](/glossary/digital-twin) to discover the improvements possible with workflow changes. diff --git a/content/hashdotai/glossary/scalars.mdx b/content/hashdotai/glossary/scalars.mdx deleted file mode 100644 index 73737079dc5..00000000000 --- a/content/hashdotai/glossary/scalars.mdx +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Scalars -description: "Scalar values are numerical values which indicate the magnitude of something - for example the mass of an object or distance between two points." -slug: scalars -tags: ["Data Science"] ---- - -**Scalars** are [variables](/glossary/variables) which hold individual [values](/glossary/values). - -**Numerical scalar values** are numerical values which indicate the magnitude of something -- for example, the mass of an object (e.g. `6 kilograms`), or the distance between two points (`5 miles`). Numbers which are scalars are usually integers, fixed points, or floats. - -Scalars stand in contrast to [vectors](/glossary/vectors), which are things such as velocity (the _speed_ of something AND the direction it is headed in - e.g. `5 meters per second northeast`), which combine multiple values in an [array](/glossary/arrays). - -_Ordinary users of HASH don't need to know what scalars are, and this information is provided as a reference for advanced [type modelers](/guide/types) only._ diff --git a/content/hashdotai/glossary/schemas.mdx b/content/hashdotai/glossary/schemas.mdx deleted file mode 100644 index e9071f2b2fd..00000000000 --- a/content/hashdotai/glossary/schemas.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Schemas -description: "Schemas are descriptions of things, and in HASH they are used to describe 'types'. These make simulations interoperable, and data more understandable." -slug: schemas -tags: ["Data Science", "Simulation Modeling", "Software Engineering"] ---- - -## What is a schema? - -Schemas are _descriptions of things,_ and in HASH they are used to define [types](/glossary/types). These types provide standardized descriptions of things in the real-world that can then be collaboratively maintained and improved. - -Schemas consist of two things: - -- **Properties** – which may have expected types, expected values, and human-readable descriptions. -- **Relationships** – information that can be plotted on a graph showing the child/parent, sameAs, and other relationships between different schemas. - -### Properties - -A property is an attribute, characteristic, or other value that may be ascribed to a _thing_. - -For example, the [person](https://simulation.hash.ai/@schema/schemas/Person) schema contains: - -- the [`birthDate`](https://simulation.hash.ai/@schema/schemas/birthDate) property expressed as a [date](https://simulation.hash.ai/@schema/schemas/Date); -- the [`height`](https://simulation.hash.ai/@schema/schemas/height) property given as a [quantitative value](https://simulation.hash.ai/@schema/schemas/QuantitativeValue); and -- the [`worksFor`](https://simulation.hash.ai/@schema/schemas/worksFor) property which expects an [organization](https://simulation.hash.ai/@schema/schemas/Organization) (or to be blank). - -The _person_ schema also has dozens of other properties. - -### Relationships - -Entities described by schemas may have their relationships captured as properties (e.g. the _person_ schema contains a _parent_ property, so any entity’s parents may be stored as values). - -But schemas themselves may also have relationships, which describe how they relate to other schemas. - -For example, [MedicalOrganization](https://simulation.hash.ai/@schema/schemas/MedicalOrganization) is a child (sub-type) of [Organization](https://simulation.hash.ai/@schema/schemas/Organization). It has various sub-types of its own, including [Dentist](https://simulation.hash.ai/@schema/schemas/Dentist), [Hospital](https://simulation.hash.ai/@schema/schemas/Hospital), and [Pharmacy](https://simulation.hash.ai/@schema/schemas/Pharmacy). - -If a sub-type or top-level schema you require doesn’t exist, you can create one with HASH from scratch, or by [forking](/glossary/fork) an existing one. - -## What are schemas for? - -There are over 1300 schemas on HASH, and schemas are a major part of the platform. - -**Schemas exist on HASH to make simulations and other models interoperable.** By mapping data to common descriptive formats, tests and checks can be automated, additional information inferred, and both human/machine readability improved. - -## Dynamic ontologies - -**Other platforms have their own names for schemas.** Users of _Palantir_ may, for example, be familiar with “dynamic ontologies”, whose data structures and relationships can be re-modeled over time. - -Dynamic ontologies work identically to schemas in HASH, in that both are descriptions of the underlying objects or concepts that data or models refer to (such as people, companies, products, events, or documents), and their connecting relationships (e.g. `person` produces `document` pertaining to `product` for `company` on `event`). diff --git a/content/hashdotai/glossary/scraping.mdx b/content/hashdotai/glossary/scraping.mdx deleted file mode 100644 index b463a357dd4..00000000000 --- a/content/hashdotai/glossary/scraping.mdx +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Scraping -description: Web scraping is the process of automatically extracting data from websites efficiently and reliably. -slug: scraping -tags: ["Data Science", "Graphs", "Software Engineering"] ---- - -## What is web scraping? - -Scraping (or _web scraping_) allows you to automatically extract large amounts of data from websites systematically and efficiently, without having to manually navigate to (and copy and paste) bits of information from webpages. It helps speed up (by fully or partially automating) web-based research tasks, as well as eliminating transcription errors that can occur when copying information from one location to another by hand. - -## Uses of web scraping - -There are lots of peronsal and professional reasons you might want to scrape the web. For example: - -- **Price monitoring:** automatically gather and track the prices and availability of products on different providers -- **Market mapping:** map out the important players in a space to build a market overview -- **Job listings:** track the job openings advertised by competitors, customers or suppliers to receive advance-notice of changes in their strategies (or track new openings advertised by companies you'd potentially like to work at in the future!) - -## How to scrape the web - -Using HASH, it's extremely easy to scrape the web for information you're looking for - both on a one-time and automated/recurring basis. - -1. **Goal-driven scraping:** provide AI agents with a research [goal](/guide/agents/goals), and they'll determine what websites to visit on your behalf. -1. **Manual scraping:** with the [HASH browser extension](/guide/plugins#browser-extension) installed, you can scrape entities from any webpage you're on with a single click. -1. **Passive scraping:** rather than manually click "analyze" in the browser extension when visiting a page, you can also toggle HASH's "auto-analyze" mode to "on". When you do, entities will automatically be extracted as structured data from the web-pages you visit, and added to [your HASH web](/guide/webs). You can confine this activity to only run on certain domains (protecting you privacy), and specifically focus on scraping certain types of entities (if you wish). - -To ensure your web scraping yields useful information, make sure you're outputting: - -- **Structured, typed data:** ensuring entities scraped conform to common schemas, known as "types", guarantees consistency and helps scrapers more completely capture all available information about an entity. This makes data more useful, and reliable. -- **Validated, clean, labeled data:** using a real-world example, you want to ensure that "Celcius" and "Farenheit" values aren't confusingly mixed up when comparing "Temperature" data from across different websites. Many scraping tools fail to account for [data types](/glossary/data-types) in the same way HASH does, and this can lead to inaccurate, unreliable data. -- **Provenance data:** alongside the information you scrape, you want to know where it came from (tracking its source, and origins). You ideally also want the ability to inspect the original source (e.g. web page) as it existed at the specific point in time the information was scraped, to guarantee data was faithfully and accurately scraped in the first place. - -Where appropriate, also consider: - -- **Regularly scraping:** if information is sensitive, and changes over time, set up recurring scraping jobs to check for updates, and keep information in your datastore up-to-date. -- **Cross-referencing:** some information can be gotten directly from its source, while other data may only be accessible through third-parties. Consider scraping data from multiple locations as a "check" on its accuracy. - -All information scraped by HASH is strutured, typed, validated, labeled and cleaned. Provenance information is provided for every attribute of every entity scraped, so there's never any question where information came from or whether or not you can rely upon it. - -### Risks - -While web scraping isn't inherently risky, there can be a few things to consider. - -- **Legal risks:** we're not lawyers, and can't provide legal advice (nor can any AI!), so it's important that you familiarize yourself with the laws and regulations around web scraping that might apply to your use case. While scraping a website, you may be required to comply with a website's own terms of service or other policies, and there may be restrictions on what you can do (at least commercially) with publicly-available information you access. -- **Ethical risks:** assuming something is legal, there's also an ethical component to consider. You should consider any relevant implications yourself and decide if you're comfortable with the risk. -- **Reputational risks:** ask yourself... if what you were doing was front-page news, and your family or friends knew what you were doing, how would you feel? -- **Access risks:** if you break a website's terms of use, its provider may seek to cut off your ability to access their service. Before scraping a website, ask yourself _in a worst case scenario_, if you were suddenly unable to access a given website, how would that impact you or your business? Certain sites such as LinkedIn may take measures to temporarily disable (and in extreme cases permanently ban) accounts who view too many profiles in a way that appears to be automated, or unnatural, in too short a span of time. - -[HASH](/platform/hash) gives you the choice whether to scrape webpages from your computer (using your normal IP address), or using our network of computers in the cloud. There can be advantages and disadvantages to each approach, and you can experiment on a per-site basis, or ask HASH to automatically optimize your scraping for you (splitting scraping up between both, or defaulting to one and falling back to the other). - -## Legally scraping the web - -**Is web scraping legal?** Generally speaking, if something is publicly accessible via the internet, you're allowed to view and use it. However, there are exceptions. - -The US Court of Appeals has determined that scraping of public information is legal, even if a website's terms of service may prevent it. However, just because something may be accessed and scraped, doesn't mean you have an unlimited commercial right to do whatever you want with it. And in certain legal jurisdictions, you may require a legitimate reason to hold certain kinds of information in the first place - e.g. personally identifiable information (PII). - -Dutch data regulators [have declared](https://autoriteitpersoonsgegevens.nl/actueel/ap-scraping-bijna-altijd-illegaal) that if the personal information of EU citizens is found amongst the data you're scraping, you may require their consent. They give examples of certain kinds of scraping which are "always prohibited" under the European General Data Protection Regulation (GDPR), including: - -- scraping the internet to create profiles of people and then resell them; -- scraping information from protected social media accounts or private forums; -- scraping data from public social media profiles, with the aim of determining whether or not people qualify for a certain kind of insurance. - -This guidance (and GDPR rules more broadly) do not apply to "domestic use", as well as in certain other "exceptional" cases. For example: - -- a private individual can scrape information (including PII) for a personal purpose (e.g. a hobby project), provided they then subsequently limit the collect information's distribution (e.g. to a few friends); -- a company can scrape personally identifiable information provided if it has a "legitimate interest" and the information scraped is used in a very targeted manner (e.g. an organization may scrape the websites of news media to gain insight into relevant news about its own company). Under most EU country's interpretations of GDPR, using PII to _make money_ is not considered to be a "legitimate interest", while protecting against loss (via reputation monitoring or fraud prevention) generally is. - -**Obtaining consent to scrape PII.** Under GDPR, an individual may only consent to the collection of their personal data if explicitly asked in advance. - -**Scraping non-PII.** Many kinds of information on the web do not contain PII. For example, product listings and their prices on a marketplace like Amazon. In other cases, scraped information may be deanonymized (e.g. customer names removed from reviews of a product that may appear online). - -## Legally preventing scraping - -As a user, you can attempt to assert your individual right to privacy, and any intellectual property rights you may hold (e.g. image rights, copyright). However, not all information you post online will necessarily be covered by these, and in any case it may be technically impossible to prevent others from scraping your information that appears online in the first place, if it's publicly accessible. You can, however, try to control what information appears online in the first place. - -Meanwhile, as a website operator, you may expect that you have the right to prevent others scraping your website. This may often be true, but depending on the jurisdiction you're in, it may also not be universally the case. For example, in the US, depending on the circumstances, it may constitute "malicious interference with a contract" if you prevent one party from scraping your website, while at the same time not restricting the general availability of the information on it to others (see: [_HiQ v. LinkedIn_](https://www.theregister.com/2022/04/19/scraping_public_data_linkedin/)). Current best-practice website operators can adopt to guard against scraping therefore includes: - -- ensuring that information on your website which you wish to protect against scraping is only visible to authenticated users of your website with their own accounts; -- requiring new users agree to your website's terms of service upon sign up; -- stipulating in your terms of service that each individual may only hold one account, and forbidding the use of automated scraping agents and software. - -However, making your website's content inaccessible to unauthenticated users may also mean pages don't appear in search results, limiting your website's reach, and many potential real visitors are deterred from accessing content on your website in the first place. You should determine whether or not this makes sense for you. - ---- - -_The information on this page is provided for informational purposes only. HASH is not a law firm, and we cannot provide you with professional legal advice. Before making any decision related to any matter discussed by this page, you should obtain your own independent professional advice._ diff --git a/content/hashdotai/glossary/simulation.mdx b/content/hashdotai/glossary/simulation.mdx deleted file mode 100644 index c0f421a4617..00000000000 --- a/content/hashdotai/glossary/simulation.mdx +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Simulation Modeling -description: Simulation Models seek to demonstrate what happens to environments and agents within them, over time, under varying conditions. -slug: simulation -tags: ["Simulation Modeling"] ---- - -## What is Simulation Modeling? - -Simulation Models seek to demonstrate what happens to environments and agents within them, over time, under varying conditions. - -_Simulation Modeling_ is the process of creating and analyzing these models: digital twins or virtual counterparts to physical models or real-world systems. - -There are many different ways of constructing Simulation Models, and chief amongst these methods is [Agent-Based Modeling](/glossary/agent-based-modeling). In platforms such as [HASH](/platform), various techniques for Simulation Modeling can be combined — for example, Monte Carlo experiments can be run within agent-based or dynamical system models, alongside forms of Finite Element Analysis. - - - -### Is perfect simulation possible? - -**Television shows like _Westworld_ point to the powerful potential – and perils – of “perfect simulation”.** - -Simulations are never, however, perfect replicas of the real-world ‘target systems’ they seek to represent, but are instead abstractions. - -This is so because in nature, no system exists in isolation (formally known as being a ‘closed system’). In the real-world all systems are ‘open’, and influenced by exogenous forces. - -To perfectly model anything, therefore, in all foreseeable conditions, would require a model as complex as the universe itself — along with the exact same number of atoms to go along with it. Clearly this infeasible, on any timeline. - -With specific goals and scope, along with more intelligent forms of abstraction, simulation models can however be created which offer huge value to organizations. Good simulations improve decision-making, offer safeguards against unexpected outcomes, and allow for better understanding of hard-to-grok complex systems. - - - -## How are simulations used? - -_Simulation Modeling_ helps organizations understand and optimize systems that are too large or complex to be reasoned with by humans. It also allows for much faster, automated exploration of the “possibility space” of conceivable circumstances, scenarios and environments in which a system might find itself. The “target systems” of simulations may vary greatly. Simulation modeling is used in the design of high-tech products like aircraft and satellites, as well as the construction of social networks, organizations, political structures, marketplaces, processes and protocols. - -By providing an understanding of how interdependencies within systems might impact one another, over many thousands or millions of runs, the circumstances under which performance may be improved, or under which a system may fail, can be identified and corrected. - - - -### Key Terms - -**Simulation** or **Model** — The project containing the simulation code, other logic, and data that drives a simulation run. - -**Simulation Run** — A _simulation run_ in HASH is any individual execution of a simulation that occurs. A simulation run typically consists of many time-steps. - -**State** — _State_ is the name given to the overall output of a simulation run on any given time-step within it. States generated by a simulation run can be saved, or the simulation run conditions that produced them saved for later recreation on demand. - -**Experiment** — An _experiment_ in HASH is the name given to the structured definition of parameters that result in two or more simulation runs. A basic experiment might be a simple ‘run comparison’ (A vs B), in which two simulation runs are compared to one another side-by-side. Vastly more [complex experiment types](https://hash.dev/docs/simulations/experiments) are supported within HASH. - -**Experiment Run** — An _experiment run_ in HASH is any individual instance of an experiment being executed. A single experiment run may therefore refer to multiple simulation runs. If an experiment has been fully executed, the experiment run is said to be ‘completed’, otherwise it is ‘partial’ (terminated incompletely), ‘in progress’ (still processing) or ‘pending’ (awaiting processing). - - - -## Are Simulation Runs Reproducible? - -Where all behaviors are pure functions, and [globals](https://hash.dev/docs/simulations/configuration/basic-properties) are fixed, results will be perfectly reproducible, provided the same simulation run parameters are passed in. - -If a model contains random elements (stochasticity) or relies on external services (e.g. 3rd party APIs), no guarantees can be made around future reproducibility, even in the simulation logic remains unchanged, because the behaviors were not pure functions to begin with. Nevertheless, original simulation run results can be saved and preserved in HASH for future analysis and verification. diff --git a/content/hashdotai/glossary/single-synthetic-environment.mdx b/content/hashdotai/glossary/single-synthetic-environment.mdx deleted file mode 100644 index 6175e6ea712..00000000000 --- a/content/hashdotai/glossary/single-synthetic-environment.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Single Synthetic Environment -description: "Single synthetic environments allow you to build, run, and analyze data-driven models and simulations." -slug: single-synthetic-environment -tags: ["Business Intelligence", "Simulation Modeling"] ---- - -A Single Synthetic Environment is the ultimate ecosystem for creating and utilizing data-driven simulations. They are composed of models, data, and simulation infrastructure. When a model in the environment is run, this creates a simulation which can generate analytics and insights. The models and data can reflect the current state of real-world systems, or potential and synthetic states of interest to the users. - -The models in these scalable environments can be composed in layers, allowing separate physical and abstract systems to connect and function jointly or independently. For instance, a model of a city could include a traffic layer, electric utility layer, and municipal budget and finances layer. The data seeding these environments can also be sourced independently, and in [HASH](/platform) can even be streamed to prevent [data drift](/glossary/data-drift). - -Single Synthetic Environments in [HASH](/platform) are sharable, permitting multiple modelers and engineers to improve existing layers and develop new ones. Multiple organizations or users can make use of them, allowing a single environment to be used to answer many different types of questions. diff --git a/content/hashdotai/glossary/stochasticity.mdx b/content/hashdotai/glossary/stochasticity.mdx deleted file mode 100644 index 9d9025aa3f9..00000000000 --- a/content/hashdotai/glossary/stochasticity.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Stochasticity -description: Stochasticity is a measure of randomness. The state of a stochastic system can be modeled but not precisely predicted. -slug: stochasticity -tags: ["Data Science", "Simulation Modeling"] ---- - -Stochasticity is a measure of the randomness of a process. A highly stochastic process (often shortened to a ‘stochastic process’) – is one that features variables or parameters with different probability distributions. Because of this multiple iterations of the process can return different results. - -Within the field of simulation, It’s important to differentiate stochastic methods for problem solving and stochasticity for problem representation. Stochastic methods use probabilistic techniques to solve problems – for instance genetic algorithms evolve programs by randomly iterating across the space of potential programs, and selecting and combining those that best solve a problem. Stochasticity can also be used to represent a problem or environment, for instance a self-driving car simulation where, with some probability, a pedestrian might cross the street and the car may or may not see them. - -In HASH stochastic simulations can be created by using the [HASH standard library statistical distributions.](https://hash.dev/docs/simulations/create/design-considerations/distributions) Conversely, you can create [deterministic simulations](https://hash.dev/docs/simulations/extra/determinism) by ensuring the stochastic elements of a simulation use the same starting seed, thus returning the same results every run. diff --git a/content/hashdotai/glossary/synthetic-data-generation.mdx b/content/hashdotai/glossary/synthetic-data-generation.mdx deleted file mode 100644 index aa764a9ce00..00000000000 --- a/content/hashdotai/glossary/synthetic-data-generation.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Synthetic Data Generation -description: Generating data that mimics real data for use in machine learning. -slug: synthetic-data-generation -tags: ["Data Science", "Machine Learning", "Simulation Modeling"] ---- - -## What is synthetic data? - -Synthetic data generation is the practice of creating a model to generate data that reflects a real world system. Synthetic data can be a cheap and practical way to generate large datasets, and simulations are one of the best ways to generate synthetic data. - -By creating a simulation that models the real world, the results of the simulation can be used in place of, or in addition to, directly observed data. In this way a small investment of 'data' can be supercharged with a simulation to create a much larger dataset, and a more performant [machine learning](/glossary/machine-learning) (ML) system. - -## Using synthetic data - -Synthetic data is used in numerous applications: - -- **Training ML Models:** Most modern ML applications are data hungry, requiring large datasets for training and prediction. It's not always feasible to use real data, either because it's too expensive, the data is too noisy, or you're building something new for which reliable data sets don't exist. For example synthetic data is frequently used to train self-driving cars, where realistic simulations create synthetic environments to train the models. -- **Privacy:** Real world datasets can contain identifying information that is hard if not impossible to anonymize. Generating synthetic data from a model removes the risk of compromising information, since none of the data will come from real people. -- **Counterfactuals:** Given a real world system, you might want to generate data about alternatives to the real world system (counterfactuals) to train predictive models for contingencies. For instance, when monitoring cloud infrastructure, what would happen if a server goes down - what would the data signal patterns look like? Actually bringing down a server and recording the data might be prohibitively expensive, but creating a digital twin of your cloud infrastructure and simulating outages can create [robust datasets](/glossary/robustness). - -## Generating synthetic data - -Simulation models in HASH can be run one or many times and their outputs used as synthetic data. Models which incorporate [stochasticity](/glossary/stochasticity) or use ranges of realistic input [parameters](/glossary/parameters) can help produce robust, realistic synthetic data which is representative of the real-world. diff --git a/content/hashdotai/glossary/system-dynamics.mdx b/content/hashdotai/glossary/system-dynamics.mdx deleted file mode 100644 index 6aac18d6f0a..00000000000 --- a/content/hashdotai/glossary/system-dynamics.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: System Dynamics -description: System Dynamics models represent a system as a set of stocks and the rates of flows between them. -slug: system-dynamics -tags: ["Simulation Modeling"] ---- - -## What are System Dynamics Models? - -System Dynamics models represent a system as a set of **stocks** and the rates of **flows** between them. These models are powerful for capturing complex systems, and calculating their nonlinear behaviors. - -**Stocks** represent abstract or concrete quantities present in the system, whose values change over time. For example, the number of bananas stored in a warehouse is a concrete **stock**, while the demand for bananas would be an abstract **stock**. - -**Flows** represent rates of change for the **stocks** in the model. Flows are typically dependent variables, and have a rate calculated based on constants and the values of **stocks** in the model. - -![A Flow connecting two Stocks](https://cdn-us1.hash.ai/site/simple_stock_flow.png) - -Because these are the two main components of System Dynamics models, they are also referred to as Stock and Flow models. However, there are three more elements that are typically present in these models: constants, sources, and sinks. - -Constants are self-explanatory. As opposed to **stocks** which change values, constants represent quantities which do not change. They are used as part of the calculations for flow rates, much as they are used in any mathematical equation. - -Occasionally, instead of connecting two **stocks**, a **flow** will connect a source to a stock, or a stock to a sink. Sources represent quantities which are external to the system, and are effectively infinite. For instance, in a population model, a _births_ **flow** could connect from a source to a _newborns_ **stock**. Sinks operate in the inverse, allowing a quantity to flow out of the system. A heat transfer model might use a **flow** to a sink to represent heat leaving the system. - -![A stock and flow model capturing sources, sinks, and constants](https://cdn-us1.hash.ai/site/stock_flow.png) - -## Creating a System Dynamics Model - -1. **Identify stocks:** Begin by identifying the key stocks that will allow you to complete your analysis or project. Then continue by identifying stocks, both abstract and concrete, which are closely related to the key stocks. -1. **Identify flows:** Describe how the **stocks** in your model change over time. **Flows** must connect two stocks, or between a stock and a source or sink. -1. **Define equations for your flows:** The rate for the flows must be based on a mathematical combination of constants and/or the values of stocks. -1. **Capture constants:** Define the constants you used in the definitions of the **flows**, and provide them with numeric values. - -## Why use System Dynamics Models? - -System dynamics models are excellent for understanding complex systems that change over time. When a system of interest is exhibiting nonlinear behavior, a well-designed system dynamics model can often reproduce the behavior. - -Creating a SD representation of a system can function as a digital twin for real-world operations, allowing you to simulate many different scenarios and exogenous shocks. Assembling, testing, and refining an SD model will also give modelers insight into the structure of a system, discovering unintuitive feedback loops and hidden delays. Organizations can capitalize on these virtual, low-cost insights to make real-world cost-saving and productivity improvements. - -[Read more about building a system dynamics model in HASH >](/blog/modeling-with-system-dynamics) diff --git a/content/hashdotai/glossary/time-series.mdx b/content/hashdotai/glossary/time-series.mdx deleted file mode 100644 index e1869aa1473..00000000000 --- a/content/hashdotai/glossary/time-series.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Time Series Data -description: Time series data is data that has been indexed, listed, or graphed in time order. For example, the daily closing value of the NASDAQ, the price of a cryptocurrency per second, or a single step in a simulation run. -slug: time-series -tags: ["Data Science"] ---- - -Time series data is data that has been indexed, listed, or graphed in time order. For example, the daily closing value of the NASDAQ, the heart rate of a person measured at hourly intervals, a single step in a simulation run, or an individual frame in a video. - -Time series data is commonly used for natural language processing, video processing, robot control, financial forecasting, and in medical diagnostics. - -Time series data processing is critical to understanding our environments, which exist not only in space but in time, as well. “The real world is all about sequences. Even our perception — you’re not perceiving images, you’re perceiving sequences of images,” says MIT’s [Ramin Hasini](https://news.mit.edu/2021/machine-learning-adapts-0128). “So, time series data actually create our reality.” - -## Using Time Series Data - -Analyzing this data in real time, by [connecting streaming sources in HASH](/platform), allows for future behavior to be anticipated — useful in and of itself, as well as providing a basis for more accurate [agent-based simulation](/glossary/simulation). - -Time series data often has internal structures that can be analyzed (such as a tendency to [autocorrelate](/glossary/autocorrelation), as well as trend or seasonal variation). diff --git a/content/hashdotai/glossary/time.mdx b/content/hashdotai/glossary/time.mdx deleted file mode 100644 index f2115668676..00000000000 --- a/content/hashdotai/glossary/time.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Discrete vs Continuous Time -description: In continuous time, variables may have specific values for only infinitesimally short amounts of time. In discrete time, values are measured once per time interval. -slug: time -tags: ["Data Science", "Simulation Modeling"] ---- - -## Discrete Time - -In **discrete time** systems, the values of variables are given at distinct “points in time”. - -For example, in a [HASH](/platform) simulation run the _step number_ is a discrete measure of time within the simulation. Steps are integers (whole numbers), and there are no half-way or in-between steps. - -The formal definition of discrete time states that there must be “a positive minimum distance to the nearest other permissible value”. - -For example, a [time series](/glossary/time-series) given in discrete time may increment on an hourly basis, meaning `10:00` and `11:00` may be valid observations, while `10:32:56.83726` would not. Each variable is observed only once per time period. - -## Continuous Time - -On the other hand, in **continuous time** systems, variables are viewed as potentially having particular values for only infinitesimally short amounts of time. Between any two given points in time or observations there are presumed to be an infinite number of other points. diff --git a/content/hashdotai/glossary/types.mdx b/content/hashdotai/glossary/types.mdx deleted file mode 100644 index a9e4e8c5621..00000000000 --- a/content/hashdotai/glossary/types.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Types -description: "Types describe the shape that information is expected to take, through rules and constraints associated with it." -slug: types -tags: ["Graphs", "Software Engineering", "Standards"] ---- - -## What are types? - -Types provide us with the ability to describe the form or “shape” we expect information to be in. - -Four sorts of **types** exist in HASH: - -1. **Entity** types -1. **Link** types -1. **Property** types -1. **Data** types - -A type is something that defines the rules and constraints associated with one of the above ([entities](/glossary/entities), [links](/glossary/links), [properties](/glossary/properties), or [data values](/glossary/values)). - -**Casual users of HASH may never need to know about or create/edit types at all.** However, as you customize your workspace and hope to get more out of it, you may want to familiarize yourself with entity types, to represent the types of things you care about more exactly. As time goes on, you can learn more about link, property and data types – although these are typically only touched by more advanced users of HASH. - -## More about types - -### Entity types - -We describe entity types in detail on the [entity types](/glossary/entity-types) page. - -### Link types - -Link types are described on the [links](/glossary/links#link-types) page. - -### Property types - -Property types are described on the [properties](/glossary/properties#property-types) page. - -### Data types - -Data types are detailed on the [data types](/glossary/data-types) page. diff --git a/content/hashdotai/glossary/values.mdx b/content/hashdotai/glossary/values.mdx deleted file mode 100644 index 253473a051a..00000000000 --- a/content/hashdotai/glossary/values.mdx +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Values -description: Values are the information contained within a single property on a specific instance of an entity. -slug: values -tags: ["Data Science", "Graphs"] ---- - -## What are values? - -Values are the information contained within a single [property](/glossary/properties) on a specific instance of an [entity](/glossary/entities). - -**For example:** consider the `@schema/Person` entity type, and an instance of it. We’ll call this entity `Alex`. - -- One of the properties that our entity type `@schema/Person` expects is `jobTitle`. -- Alex is a pastry chef. -- Where the property `jobTitle` appears on our entity, `Alex`, its value may be set to "Pastry Chef". - -## Manual enrichment - -If you have two [datasets](/glossary/datasets) containing overlapping entities, but mismatching property values, you can merge these upon importing them in [HASH](/platform/hash). - -You can also manually enter values into entity’s properties by hand. For some entity types, specific [blocks](/glossary/blocks) exist which assist in the process of efficiently capturing this information. - -## Automated enrichment - -Through HASH’s forthcoming [integrations](/glossary/integrations) feature you’ll be automatically able to keep entity’s properties in sync with other applications and databases you already use. - -## Third-party lookup enrichment - -If an entity’s properties are properly [typed](/glossary/types), it may be possible to automatically infer their values by checking them against external providers of data. - -For example, there are services which when provided with: - -- an **email address** -- will attempt to return the name of the account holder, and their social media account usernames; -- an **IP address** -- will return the Internet Service Provider (ISP) and approximate geographic location; -- a **credit card number** -- will return the issuing bank, type of card, etc. - -In the future you will be able to perform third-party lookup enrichment directly within HASH, making it easy to construct and maintain a high-quality, up-to-date graph. diff --git a/content/hashdotai/glossary/variables.mdx b/content/hashdotai/glossary/variables.mdx deleted file mode 100644 index eaa4c40cd21..00000000000 --- a/content/hashdotai/glossary/variables.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Variables -description: "Variables are abstract things which can contain information, and which have a symbolic name by which they can be referred." -slug: variables -tags: ["Data Science"] ---- - -In both programming and mathematics, **variables** are abstract things which can contain information, and which have a symbolic name by which they can be referred. - -In HASH, any [property](/glossary/properties) or [link](/glossary/links) may be used as a variable in an equation, or by an application querying a [web](/guide/webs) via the HASH API. diff --git a/content/hashdotai/glossary/vectors.mdx b/content/hashdotai/glossary/vectors.mdx deleted file mode 100644 index 6f5225a9596..00000000000 --- a/content/hashdotai/glossary/vectors.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Vectors -description: "Vectors values can't be expressed as a single number, but instead combine multiple pieces of information - e.g. velocity (which refers to the speed something is moving at, as well as the direction it is moving in)." -slug: vectors -tags: ["Data Science"] ---- - -**Vectors** are values which cannot be expressed as a single number (a [scalar](/glossary/scalars)). - -For example, _velocity_ is a vector which measures both the magnitude (speed) an object is moving at, as well as its direction, and is written in a form similar to `5 meters per second northeast`. _Displacement_ and _force_ are other common vectors in physics which have both magnitudes and directions. - -These stand in contrast to measures such as _speed_ by itself, a scalar, which can simply be written as `5 meters per second` (as it contains only the magnitude of a thing, and no directional information). - -However, vectors don't have to contain magnitude and direction, but rather any two or more kinds of information, combined. Common sorts of vectors include tuples (such as a color expressed as an RGB value) and arrays. - -_Ordinary users of HASH don't need to know what vectors are, and this information is provided as a reference for advanced [type modelers](/guide/types) only._ diff --git a/content/hashdotai/glossary/verification.mdx b/content/hashdotai/glossary/verification.mdx deleted file mode 100644 index 8c6c84357d3..00000000000 --- a/content/hashdotai/glossary/verification.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Verification -description: "Verification is the process of analyzing the correctness, safety and liveness of a modeled system." -slug: verification -tags: ["Software Engineering"] ---- - -**Verification** is the process of analyzing the _correctness_, _safety_, and _liveness_ of a modeled system before deployment. It ensures that the system behaves as expected, e.g. that it is free from _deadlocks_, _livelocks_, _starvation_ and other undesired states and inconsistencies, and that it meets certain standards. Verification is separate from "validation". - -# Correctness - -Checking correctness involves ensuring that the process does what it is supposed to do, according to its goals and requirements, e.g. that an `Order` is always moved through specific desired stages and is always eventually `Fulfilled` (or ends up in some other desired terminal state, such as `Cancelled`). - -# Safety - -There are also things that we want processes to _not_ do, and **safety requirements** specify what states we do not want a process to end up in. For example, creating a `Refund` for an `Order` without any `Payment Confirmation`. Some rules about what must or must not happen in in the system can be defined as either correctness conditions that must hold at all times ("invariants"), or negatively as safety requirements that must not be violated. - -# Liveness - -Part of model verification involves checking that nothing is unexpectedly blocking progress, and that something desired eventually happens ("liveness"). Several things can prevent this. - -## Livelocks - -A **livelock** occurs when a process is **constantly active but makes no real progress**—it keeps executing but never reaches completion, e.g. - -- A process **keeps looping** due to incorrect conditions, e.g. a loop checks for an approval condition but **never exits** if the condition is never met. -- Two processes **keep retrying an action** that fails (e.g. because they are in competition for the same resource) instead of resolving a conflict. - -## Deadlocks - -A **deadlock** happens when a process **gets stuck indefinitely** with no activity, e.g. - -- if a process **requires manual approval** but no user completes it -- because two or more tasks are **waiting for each other** to complete -- technical deadlocks such as two tasks waiting on each other to release a lock on a database row - -Potential solutions include: - -- timeouts and escalation paths for user tasks -- avoid mutual dependencies between tasks -- strategies to avoid database deadlocks, e.g. - - use optimistic locking, or - - (if the system requires pessimistic locking) consistent ordering of lock acquisition (i.e. make sure that Task A and Task B will always attempt to lock the same rows in the same order, so they can’t end up in a situation where one locks X then waits for Y, and the other locks Y then waits for X) - -## Starvation - -**Resource starvation** happens when a transaction or process **waits indefinitely** because it **can’t get access to a resource** due to other higher-priority tasks always taking precedence. - -# Verification in HASH - -## Processes (Flows) - -Processes in HASH are represented as what mathematicians call "_Petri nets_". Unlike many representations of process models, Petri nets can be formally verified, which means we can check their integrity in a number of different ways, including by looking at properties such as: - -1. **Reachability** - - A state is considered _reachable_ if it can be achieved from an initial marking by firing a sequence of transitions. - - Helps determine if a process can get stuck or fail to reach a goal state. - - **Example:** Can an order-processing system always reach the "Order Completed" state? - - **Verification:** Construct a _reachability graph_ and uses _state-space exploration_ to check if any given target state can be reached. -2. **Boundedness** (Safeness) - - A Petri net is _k-bounded_ if no place contains more than _k tokens_ at any time. - - A _1-bounded_ net (Safe Petri Net) ensures that places hold at most one token, preventing overflow issues. - - Helps prevent resource exhaustion in concurrent systems. - - **Verification:** Analyze the _incidence matrix_ and _state-space exploration_ to check if any place can exceed k tokens. -3. **Liveness** - - A Petri net is considered _live_ if all transitions remain potentially fireable (i.e. no part of the system permanently stops working). - - Ensures that no process is permanently blocked (e.g. there are no _deadlocks_). - - **Example:** In an order-processing workflow, if all necessary conditions are satisfied (e.g., payment confirmed, stock available) but the **"Dispatch Order"** transition still never fires, there is a liveness problem. This could indicate a deadlock or some other form of blocking that prevents the system from progressing. - - **Verification:** Uses a _reachability graph_ to check if every transition is eventually fireable. Repeating execution cycles that fail to progress are indicative of livelocks, and a state from which no further transitions are possible deadlocks. -4. **Fairness** - - Ensures that all transitions have a chance to fire, avoiding starvation. - - Important in concurrent and distributed systems, where some processes should not dominate resource usage. - - **Example:** In a ticketing system, fairness ensures that all users eventually get service rather than some requests being delayed indefinitely. - - **Verification:** Check _reachability properties_ to detect transitions which are never executed. - -Right now, process modeling in HASH is in beta, and we have not yet built in support for the above formal verification techniques, although hope to in the future. diff --git a/content/hashdotai/guide/01_introduction/00_index.mdx b/content/hashdotai/guide/01_introduction/00_index.mdx deleted file mode 100644 index f952d1bda66..00000000000 --- a/content/hashdotai/guide/01_introduction/00_index.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "User Guide" -description: "An introduction to HASH" -cover: https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/c8a1af71-b37a-409e-4d6d-838d56e69d00/public -metaTitle: "User Guide - HASH" -metaDescription: "An introduction to HASH and an overview of its core features and capabilities" -sidebarTitle: "What is HASH" -sidebarIcon: https://app.hash.ai/icons/docs/introduction-whatishash.svg ---- - -# What is HASH? - -HASH is a new kind of database. Operating in the background, HASH continuously extracts and integrates data from the outside world. This information is assembled into a private knowledge graph, called a "web", and can be used in a number of different ways. - -# How can webs be used? - -New AI tools, including large language models such as ChatGPT, work best with "semantic" data. This sort of information is typically stored in a "knowledge graph", which is what we call a "[web](/guide/webs)" in HASH. Prior to HASH, knowledge graphs were hard to bootstrap and maintain. HASH solves this problem, quickly and easily building webs containing information whose quality and provenance are assured. - -This makes HASH suitable for real-world use **extracting data** and **powering AI models** in domains where data accuracy, integrity and trustworthiness are paramount (for example: in error-sensitive applications, when making potentially high-cost/high-risk decisions, and when operating within regulated industries). - -Once information is in your web, HASH lets you: - -- view and explore data visually as a graph, or through tables -- construct dashboards and custom views of data, helping you analyze aggregate information -- query data with natural language, and chat with your web to get answers to questions -- see how information changes over time, viewing the "history" of entities -- [identify](/guide/webs/history) where information in a web came from, viewing the original source and/or claimants -- [export](/guide/integrations) information in a variety of formats, and sync it with other apps or databases -- [share](/guide/sharing) specific information of their choosing with others - -Data in a HASH web can also be utilized by other applications, including LLMs, for whom HASH webs provide a strongly consistent world/domain model, enabling efficient retrieval-augmented generation (RAG). - -# How do webs get built? - -Filling a web with detailed, useful and trustworthy information is easy with HASH, in contrast to traditional knowledge graphs and AI assistants. - -- **Automated research (AI):** provide topics, questions or tasks for AI agents to autonomously research on your behalf -- **Passive growth (AI):** [HASH's browser extension](/download) can automatically extract data you care about from the webpages you visit, and apps/service you use, automatically and in the background -- **By hand:** manually add information by hand using our powerful, easy-to-use interface -- **From existing sources:** integrate information from services, apps and databases you already use with one-click and easy importers - -Keeping your web well-maintained and accurate is also effortlessly easy with HASH, with AI automations that support: - -- Detecting and merging duplicate entities -- Identifying potentially outdated information, and seeking more up-to-date values -- Checking and cross-referencing information - -# How can I use HASH? - -You'll need to [create a free account](https://app.hash.ai/signup). You'll probably also want to install the [browser extension](/download). These steps and others are covered in the [Geting Started](/guide/introduction/get-started) guide. - -As for _what_ you might use HASH for, this is covered in the upcoming [Use Cases](/guide/introduction/use-cases) section of the user guide, next. - - - -An alternative to using the hosted version of HASH is to self-host your own instance of HASH. This requires a degree of technical knowldege and is only recommended for advanced users. - -If you're trying HASH out, or using it for the first time, we recommend following the instructions above, rather than self-hosting HASH. However, should you be techically minded, and comfortable hosting your own web services (or interested in contributing to the HASH codebase), you can follow the [HASH developer docs](https://hash.dev/docs/get-started/setup#local-hash) quickstart guide to self-hosting HASH. - -Because HASH is open-source, whichever version of HASH you choose now, there's no risk of lock-in, and you can decide or switch between using the hosted and self-hosted versions at any time. - - diff --git a/content/hashdotai/guide/01_introduction/01_use-cases.mdx b/content/hashdotai/guide/01_introduction/01_use-cases.mdx deleted file mode 100644 index 7c7ed7adbad..00000000000 --- a/content/hashdotai/guide/01_introduction/01_use-cases.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Use Cases" -description: "Example ways to use HASH" -metaTitle: "Use Cases - HASH" -metaDescription: "Understand HASH by browsing example uses of it, and case studies from its users" -sidebarTitle: "Use Cases" -sidebarIcon: https://app.hash.ai/icons/docs/introduction-usecases.svg ---- - -# Using HASH - -## Capabilities - -### Knowledge graph generation - -Quickly create a trustworthy, comprehensive, and useful knowledge graph (or ["web"](/guide/webs)), capturing information about your business, industry or any area of interest in a strongly-typed, semantic graph. - -### Deep research - -Expand your knowledge graph at any time: flesh out missing attributes of existing entities, discover new entities, and expand the information in your [web](/guide/webs) to cover entirely new areas. - -### Advanced analysis - -Calculate new metrics and generate statistics from information in your web, both proactively and at the point of need, enabling more confident AI answers to complicated questions. - -### Global visibility - -Via HASH's browser extension, any information contained within a website or web app can be extracted passively as users browse, or as-required in the background, invisibly to users. This allows information locked within proprietary data platforms and other silos to be synced with your web, and used by AI, without the need for 1:1 integrations to be developed, or services to have or expose any kind of public API. Provided a service is accessible to an end-user, it can be explored and used by HASH. - -### Ontology management - -Create and manage types with a best-in-class ontology builder and [type system](/guide/types), allowing your organization to formally describe the sorts of data it cares about, and map internal data assets to semantically meaningful representations of them in a graph. - -**Coming soon:** semantic types can also be automatically proposed or created from existing private data, as well as publicly available or otherwise accessible sources. - -### Workflow automation - -[Flows](/guide/flows) allow automated sequences of steps to be actioned using HASH, and [AI agents](/guide/agents/goals) are capable of planning and executing new flows, with or without humans in the loop. - -## Why? - -As an auto-growing, self-checking knowledge graph, HASH helps with a wide range of business use cases: - -- **AI application development:** make AI-powered applications smarter by using HASH as a datastore for more effective retrieval-augmented generation (RAG), and as a tool for querying previously inaccessible, siloed sources of information. To learn more about using HASH in this way, see the [HASH developer docs](https://hash.dev/docs). -- **[Sales](/cases/sales)**: populate a CRM with leads matching parameters you define -- **[Recruitment](/cases/recruitment):** populate an ATS with qualified candidates -- **[Research](/cases/research):** compiling comprehensive datasets -- **Competitive Monitoring:** track competitor pricing, features, customer feedback and updates -- **Public Relations:** find new journalists and generate new pitch ideas -- **[Founders](/cases/founders):** from fundraising and go-to-market, to operations and reporting - -HASH can also be directly queried [in natural language](/guide/agents/chat), and connected to a [growing range](/guide/integrations) of external tools. - -# Future plans - -Our long-term roadmap for HASH includes plans to make HASH suitable for a wide range of other use-cases, including data warehousing, business intelligence/dashboarding, and agent-based simulation. _HASH was founded in 2019 as a [multi-agent research lab](/about)._ - -HASH also **experimentally** supports [block](/guide/pages/blocks)-based pages, making it suitable for certain kinds of knowledge management and document-related work. In the future we plan to expand this functionality to support no-code, block-based toolbuilding. In combination with HASH's built-in semantic representation of entities, we believe this will unlock a more user-friendly, LLM-ready, and generally intuitive kind of application development, and website building. - -# Limits to using HASH - -Many people use HASH for just one or two things to start with, and over time begin to use it for more. If you're unsure whether HASH is a good fit for a problem you're trying to solve, or if you're wondering how you might achieve something with HASH, [get in touch](/contact) with us. diff --git a/content/hashdotai/guide/01_introduction/02_core-concepts.mdx b/content/hashdotai/guide/01_introduction/02_core-concepts.mdx deleted file mode 100644 index 9c669f70733..00000000000 --- a/content/hashdotai/guide/01_introduction/02_core-concepts.mdx +++ /dev/null @@ -1,273 +0,0 @@ ---- -title: "Core Concepts" -description: "Learn the basics of HASH" -cover: https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/430c3a0a-ab34-4f6c-5d38-c0dc23e30800/public -metaTitle: "Core Concepts - HASH" -metaDescription: "Discover the most important concepts within HASH and learn how the application works" -sidebarTitle: "Core Concepts" -sidebarIcon: https://app.hash.ai/icons/docs/introduction-coreconcepts.svg ---- - -# Overview - -You don't need to understand all of the concepts outlined on this page in order to [Get Started](/guide/introduction/get-started) with HASH, but being familiar with them will help you learn HASH faster. - -We recommend having a quick scan of this page as you start out, and returning to it later when you need more information about a particular thing. In addition to defining key terms you'll find throughout the docs, these concepts provide a broad sense as to the types of features and capabilities that are present within HASH. - -# Where information lives - - - -
- - + - -
- -}> - -## Accounts - -We use the term 'account' to refer to both users and organizations (aka. "orgs") in HASH. - -All users and orgs have an account name, such as **@example**. This can be used to access an account's public profile, such as at [hash.ai/@example](https://app.hash.ai/@example). - -
- -}> - -## Webs - -Every user and every org has their own [web](/guide/webs), containing **entities** (data) and **types** (descriptions of data). - -User webs are known as [personal webs](/guide/webs/users#web), and org webs as [shared webs](/guide/webs/orgs#web). - -You can access any number of shared webs, in addition to your own personal web. - - - -# How information is stored - -}> - -## Entities - -Data in a web exists in the form of [entities](/guide/entities). Entities have: - -- An [entity type](#entity-types) which describes “what they are” and what kinds of attributes may be associated with them -- Any number of [attribute values](#attributes) which contain an entity’s properties and links (structured data) -- Any number of claims (observations about an entity that don’t fit into its existing/available attributes) -- Any number of notes, which allow completely unstructured information to be associated with an entity - - - -}> - -## Entity Types - -An individual entity may have one or more [entity types](/guide/types/entity-types), which describe what sort of thing(s) an entity is, and the kinds of structured information (known as [attributes](/guide/entities/attributes)) that can be associated with it. - - - -}> - -## Attributes - -[Attributes](/guide/entities/attributes) are structured information stored on an entity’s record. Their values are either **properties** (which contain data) or **links** (which point to other entities). - - - -}> - -## Link Types - -Every **link** attribute has a [link type](/guide/types/link-types) which describes what its value refers to and provides it with a label. - -Constraints on the specific entities, or type(s) of entities that a link may point to, are also defined by the link’s type. - -**Example link type:** Employed By (may point to `Company`) - - - -}> - -## Property Types - -Every **property** attribute has a [property type](/guide/types/property-types) which describes what its value refers to, and outlines the format(s) of data (i.e. the [data types](#data-types)) that it accepts. - -**Example property type:** Average Temperature - - - -}> - -## Data Types - -While property types provide semantic meaning to property values, [data types](/guide/types/data-types) define the range of accepted values, and specify the labels that should be shown in conjunction with them. - -**Example data types:** Celcius and Farenheit - - - -}> - -## History - -[History](/guide/webs/history) in HASH refers to three things: - -1. **change tracking:** a complete record of all the changes to an entity or type over time -2. **versioning:** the ability to inspect, access and even use older versions of an entity or type -3. **provenance:** the ability to see where information and changes originated, as well as what caused them - - - -# Using HASH - -}> - -## Agents - -HASH [agents](/guide/agents) are AI agents which work for you. They perform tasks on your behalf, helping grow your web with useful information, and keep it up to date. - -You can ask also ask your agent questions about the data in your web, helping you find and use relevant information more effectively. - - - -}> - -## Goals - -Agents can be given [goals](/guide/agents/goals). When provided with a goal, available agents will analyze your aims, develop a plan, and execute it autonomously upon your behalf, much as a capable human colleague might. - -Right now, HASH supports **research and analysis** goals, helping you capture and process information about the world. - - - -}> - -## Flows - -Agents can also reliably and automatically execute sequences of steps, known [flows](/guide/flows). In contrast to goals, the actions involved in a flow are predefined ahead of time. - -Flows can be triggered on-demand, in response to observed events, or on a recurring schedule. - - - -}> - -## Inbox - -Your [inbox](/guide/inbox) contains notifications, messages, and actions (including drafts). - -For example, if an agent requires you to clarify some part of a stated goal, a question from it will appear here. - - - -}> - -## Plugins - -[Plugins](/guide/plugins) allow you to interact with your web within other applications, and typically provide HASH with additional capabilities. - -For example, installing the [HASH browser extension](/download) lets you (optionally) allow your agents to browse websites using any accounts you may be logged into. This can let them bypass paywalls, and access other protected content, exclusively on your behalf. - - - -# Other features - -}> - -## Integrations - -[Integrations](/guide/integrations) enable HASH to act on your behalf in external applications, and make it easy to sync data with your web. - -Existing data sources can be connected to HASH, and the information within them represented as entities in your web, which are kept up-to-date in realtime. - - - -}> - -## Permissions - -Every entity and type has a set of [permissions](/guide/webs/permissions) you can control, which govern what other users can both see and do. - -Permissions can be managed very granularly, allowing view, update, comment, share and other forms of access to be restricted only to authorized users. - - - -}> - -## Sharing - -[Sharing](/guide/sharing) allows you to make select entities, types, or portions of your web available to others. You can also jointly manage **shared webs** with others, through [organizations](/guide/webs/orgs). - - - -}> - -## Pages - -[Pages](/guide/pages) provide a way of using your entities, in HASH. Pages are created inside of each web you belong to (i.e. your own personal web, or the shared web of any organizations you're a member of), and will appear in your left-hand sidebar inside of HASH. - -There are two types of pages in HASH: - -- [Documents](/guide/pages/documents): linear pages where blocks are arranged in columns; typically used for text-heavy pages -- [Canvases](/guide/pages/canvases): free-form pages where blocks can be arranged spatially on an infinite canvas; useful for mindmaps, flowcharts, dashboards, and app-building - - - -}> - -## Blocks - -[Blocks](/guide/pages/blocks) can be inserted into pages, and provide many different kinds of functionality. For example: - -- the Paragaph block lets you type (or see) some text, depending on whether you have edit (or just view) permissions on a page -- the Image block similarly lets you edit, insert, or simply view a picture (depending again upon your permissions) -- the AI Image block lets you type in a prompt and actually generate an image, which is then saved and persisted on the page -- the Minesweeper block is just good fun - -A block such as a button or dropdown may also be [interactive](/guide/pages/blocks#action), or offer complex functionality such as access to an AI chatbot. - -If you're a web developer comfortable writing code, you can build and publish your own blocks, and use them inside of HASH, by following the guide in the [HASH developer docs](https://hash.dev/docs/blocks). - - - -}> - -## Apps - -[Apps](/guide/apps) are ready-made bundles of blocks, types and pages, which can be added to a web with one click. Apps can also be created in a "no-code" manner by combining the same elements, and in the future will be publishable to a HASH App Store. - - - -# Got it? - -**Don't worry about remembering everything.** The above is just a quick-reference overview, and you'll be able to get help in-app should you need it. You can also [contact us](/contact) at any time. - -But for now, continue on to [getting started →](/guide/introduction/get-started) diff --git a/content/hashdotai/guide/01_introduction/03_get-started.mdx b/content/hashdotai/guide/01_introduction/03_get-started.mdx deleted file mode 100644 index b7266684870..00000000000 --- a/content/hashdotai/guide/01_introduction/03_get-started.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Get Started" -description: "Begin using HASH" -cover: https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/465e938f-523f-4065-dd9b-60dd73c37a00/public -metaTitle: "Get Started - HASH" -metaDescription: "Find out how to get started using HASH with the official, easy-to-understand quickstart guide" -sidebarTitle: "Get Started" -sidebarIcon: https://app.hash.ai/icons/docs/introduction-getstarted.svg ---- - -# Introduction - -HASH contains a lot of features and functionality, but it's easy to learn and get started with. You can start using HASH for one simple thing, and discover additional capabilities and functionality as you go. - -# 1. Create an account - -Using the hosted version of HASH at [hash.ai](https://app.hash.ai/) is the fastest way to get started. Create an account over on the [Sign Up](/signup) page and follow the on-screen instructions to get onboarded. - -When creating a user account, you'll need to choose an **account name**, under which your profile will be visible (e.g. [hash.ai/@example](https://app.hash.ai/@example)). - - - -- **DO choose an account name that...** - - 1. is unique, easily recognizable, and memorable — think of your account name as your brand; - 1. is pronounceable — make it easy for yourself to share your account name with other people in the future; - 1. may be consistent with the "username" or "handle" you already use elsewhere (e.g. on social media sites) — help friends find you more easily. - -- **DON'T choose an account name that...** - 1. is potentially embarrassing, e.g. a joke that won't be funny later; - 1. relates to your current employer, as account names cannot be changed; - 1. exposes personal information you don't intend (such as your email address); - 1. incorporates someone else's brand name or trademark in a way that may cause confusion. - - - -# 2. Install the browser extension - -We strongly recommend installing the [HASH browser extension](/integrations#plugins). Doing so will provide you with access to additional capabilities, including the ability to create and run more powerful [flows](/guide/flows), in HASH. - -# 3. Use the app
- -## Navigation - -The HASH interface is made up of three main panels: - -1. The **top navigation** (aka. "navbar"), where you’ll see the HASH logo, search bar, and buttons in the top-right for capturing new information in HASH, viewing notifications and actions, and managing your account. In the very top-right of the page is your avatar. You can click this to open up a settings menu from anywhere in HASH. -1. The **left-hand sidebar**, where you’ll find links to HASH's main features, as well as each of your [webs](/guide/webs) and the [pages](/guide/pages) they contain, along with the [types](/guide/types) you use, and anything you've pinned. -1. The **main panel**, where the primary information in HASH is shown. - -## Picking a use case - -If you have a specific [use case](/guide/introduction/use-cases) that you'd like to use HASH for, follow the relevant tutorial to get started. - -## Syncing your information - -Whether or not you have a particular use case in mind, we recommend that you start off using HASH with your existing files and digital information, rather than trying to figure out HASH's functionality in the context of an empty workspace. To connect a service you already use, [set up an integration](/guide/integrations). diff --git a/content/hashdotai/guide/01_introduction/04_vision.mdx b/content/hashdotai/guide/01_introduction/04_vision.mdx deleted file mode 100644 index 698204aecd0..00000000000 --- a/content/hashdotai/guide/01_introduction/04_vision.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Long-Term Vision" -description: "What we're building towards" -metaTitle: "Long-Term Vision - HASH" -metaDescription: "A look at our future plans for HASH, and what we have in store" -sidebarTitle: "Vision" -sidebarIcon: https://app.hash.ai/icons/docs/introduction-futurevision.svg ---- - -# Introduction - -Our [mission](/about/mission) is to help everybody make the right decision. But that doesn't just happen by having all of the right information. You also have to be able to use it. - -Our vision for HASH is one of a truly **all-in-one workspace**, capable of not only importing information from all of a user's apps and services, and providing a unified view of it -- but also allowing it to be interacted with directly from within HASH, via [blocks](/guide/pages/blocks). - -# Planned Features - -In addition to what you can [currently do with HASH today](/guide/introduction), in the future you'll also be able to: - -- set up automations, called [flows](/guide/flows), that perform actions (such as sending an email, or triggering a notification) in response to specific events, on a schedule, or when manually triggered -- create [documents](/guide/pages/documents) which can embed live data, as well as static/point-in-time information -- build [tools, apps and other interfaces](/guide/apps) on top of the data in your web, with _or without_ writing code -- run large-scale agent-based simulations, using realtime data, to identify optimization opportunities and risks in systems - -We've already invested significant resources in these areas, and will be incorporating their functionality into HASH in the upcoming period. In some cases, we've already deployed versions of these technologies in the real-world, for example in our work to help [optimize the initial rollout of COVID vaccines](https://hash.ai/cases/simulation). - -Through these capabilities you'll not only be able to view information in one place, but also manage and update it, through business, industry, and problem-specific interfaces tailored around your needs. Whether you then continue to pay for separate subscription software services or progressively replace these with HASH is up to you, with two-way sync ensuring the ability to seamlessly transition in a risk-free way. diff --git a/content/hashdotai/guide/02_webs/00_index.mdx b/content/hashdotai/guide/02_webs/00_index.mdx deleted file mode 100644 index 18057f6b4b5..00000000000 --- a/content/hashdotai/guide/02_webs/00_index.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Webs" -description: "Personal, shared, and the public web" -cover: https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/cd94e26f-1e81-4f1f-c6b6-f8bbc7a49000/public -metaTitle: "Webs - HASH" -metaDescription: "Learn the difference between your own personal web, shared webs, and the 'public web' in HASH" -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/webs-overview.svg ---- - -# Overview - -Webs are collections of entities and types. - -Every HASH account has its own web: all users have their own **personal web**, and all orgs a **shared web**. - -An account's web is designed to represent its owner or member's understanding about the state of the world. The information within a web should provide an accurate, up-to-date reflection of facts, and act as a primary "source of truth" for its members. - -Webs represent information as [entities](/guide/entities). - -Users can create or update entities in their web directly through the HASH user interface, or by connecting external applications and sources via the **integrations** menu. - -## Personal webs - -Every HASH user has a "personal web" associated with their own webname. - -Information you create is private by default, although it can be made public or shared with individual others. - -## Shared webs - -Every organization has a "shared web". - -Information created in a shared web is accessible to everyone who belongs to that organization by default, although it can be made public, shared with individual others, or conversely locked down more tightly, should its owner wish. - -## HASH public web - -The HASH public web consists of all of the public content from across all HASH user's webs. Private information is not included on the public web. - -Currently, only the public content of [hash.ai] users is announced to and discoverable via the HASH public web, for use by other users when searching HASH, and via the HASH API. In the future we intend to allow for public information contained within self-hosted HASH instances to be connected to the HASH public web, as well. - -## Relationship with the WWW - -**How does the HASH public web relate to the World Wide Web?** The HASH public web exists _on_ the WWW. Its contents are freely and publicly accessible by anybody. - -However, while accessible via the WWW, the HASH public web is in contrast: - -- highly strucutred, made up entirely of typed [entities](/guide/entities), rather than unstructured text and multimedia -- permanent, with data generally available forever, except where its removal may be required by law and in limited other circumstances, bringing an end to unintentionally broken links -- inspectable, with version history and provenance persisted and made accessible diff --git a/content/hashdotai/guide/02_webs/01_users.mdx b/content/hashdotai/guide/02_webs/01_users.mdx deleted file mode 100644 index 1ec01ff67c5..00000000000 --- a/content/hashdotai/guide/02_webs/01_users.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Users" -description: "User accounts in HASH" -metaTitle: "Users - HASH" -metaDescription: "Discover everything you need to know about user accounts in HASH" -sidebarTitle: "Users" -sidebarIcon: https://app.hash.ai/icons/docs/webs-users.svg ---- - -# Overview - -**Users** are individuals using HASH, like you. Every user in HASH should correspond to one human being in the "real world". Nobody is allowed to have more than one user account, and user accounts shouldn't be created to represent "machines", "agents", "organizations" or any other kind of non-human. This is a key condition of HASH's _Terms of Service_, and something we actively enforce. When you engage with other users on HASH, you should have confidence that they are real people. - -## User profiles - -When using HASH, you'll be able to see other users' public profiles. You'll also have your own profile, where you can choose what to make public. [Learn more >](/guide/account/profile) - -Each user account belongs to a single _individual_. - -## Personal webs - -Every user has their own personal web. This is, by default, a private space. - -## Interacting with other users - -### Mentioning users - -You can "mention" another user of HASH in the same way you might `@` mention any other entity (read more about [mentioning entities](/guide/pages/chips#entity-chips)). - -To mention a user, simple type the `@` key while in a text block, and select the relevant user from the dropdown list of options that appears. You can carry on typing to refine your search, including to discover users you haven't interacted with before, or who exist outside of your own web(s). - -If you mention another user of HASH, depending on their account settings, whether or not you've interacted with them before, and whether or not they can view the page you are mentioning them from, they may receive a notification that you have mentioned them, with a link back to the block/page containing the mention. - -### Messaging users - - - Messaging is not yet available in HASH. If you'd like to help beta test this - feature, [create an account](/signup) and we'll let you know when it's ready. - - -### Blocking users - - - We'll be introducing the ability to block users soon, to help you avoid - unwanted interactions on the platform while using HASH. - diff --git a/content/hashdotai/guide/02_webs/02_orgs.mdx b/content/hashdotai/guide/02_webs/02_orgs.mdx deleted file mode 100644 index 435059cd7b2..00000000000 --- a/content/hashdotai/guide/02_webs/02_orgs.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Organizations" -description: "Collaborating as a team on HASH" -metaTitle: "Organizations - HASH" -metaDescription: "Discover everything you need to know about collaborating as a team or in a group using HASH" -sidebarTitle: "Organizations" -sidebarIcon: https://app.hash.ai/icons/docs/webs-organizations.svg ---- - -# Overview - -Organizations (or "orgs") are essentially 'groups' created by users in HASH, with their own dedicated web. These shared webs make it easy to collaborate with other users, manage work around a particular project or area, and separate out work from home. - -Orgs can contain one or more members, with no upper limit, provided at least one member holds the organization **role** of `Owner`, responsible for managing it in HASH. - -Like [users](/guide/webs/users), orgs also have their own public [profile](/guide/account/profile). - -## Creating an org - -You can create an org by clicking the "Create organization" button on your [Settings > Organizations](https://app.hash.ai/settings/organizations) dashboard, in HASH. You will need to enter a display name (e.g. `Acme Corp`), and an account name (e.g. `@acmecorp`) for the organization, after which you will be able to invite other members. - -## Shared webs - -When you create an organization, you'll note that it has its own web. This **shared web** is a separated space for information, distinct from your [personal web](/guide/webs/users#web), with a different set of default [permissions](/guide/sharing). - -Whereas in your personal web, by default, new information is visible only to you, in a shared web it may be accessible to all other members of the org. - -Visibility and access permissions can be controlled on a per-entity and per-type basis to override these defaults. - -## Inviting others - -Depending on an org's settings, its members may invite others to join it at any time. On _Team_ and _Ultra_ [plans](/pricing), the ability for members to invite others can be disabled. - -To do so, visit the [Organizations](https://app.hash.ai/settings/organizations) page in HASH, and click on the organization you wish to invite another user to join. Next, click on the "Members" tab, followed by the "Invite new members" button once the page has loaded. - -## Roles - -**Roles** allow different members of an org to hold different permissions in relation to its management and maintenance. - -- **Owners** of an org may add or remove any member of an org, including other owners, and have full access to all org settings. This includes the ability to change the role of any member. -- **Administrators** of an org have the same set of permissions as _owners_, except that they cannot add or remove the _owner_ role from a member, nor can they remove users with the _owner_ role from the organization. -- **Members** have access to a web, but cannot change their own or any other user's role. - -## Profiles - -Similar to [users](/guide/webs/users), orgs have their own profiles. diff --git a/content/hashdotai/guide/02_webs/03_permissions.mdx b/content/hashdotai/guide/02_webs/03_permissions.mdx deleted file mode 100644 index 1112afb23ac..00000000000 --- a/content/hashdotai/guide/02_webs/03_permissions.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "Permissions" -description: "Ensure only authorized parties can access your data" -metaTitle: "Permissions - HASH" -metaDescription: "Learn about securing information in HASH using permissions, and ensure that only those with authorization can access your data" -sidebarTitle: "Permissions" -sidebarIcon: https://app.hash.ai/icons/docs/webs-permissions.svg ---- - -# Overview - -Authorization and authentication are handled directly by HASH, helping you control access to information, providing the right people with the appropriate level of visibility and control over data, and no more. - -# Sharing - -For information about sharing pages, entities and types, see [sharing](/guide/sharing). - -# Default entity visibility - -By default, entities created in a web are private to its members: - -- In the case of your personal web, this means _only you_ can view the information that gets added, or access it in any way at all. -- In the case of a shared web, entities will be visible and editable to all members of the [organization](/guide/webs/orgs). - -In all cases, you can override these default settings to share information with others, or lock information down even more tightly (in the case of content stored in shared webs with multiple members). - -# Advanced permissions - -Beyond simple sharing, support for role-, rule-, and attribute- based authorization exists in HASH. - - - We'll be exposing HASH's full permissioning system to users in a future - update, and will update these docs accordingly then. - diff --git a/content/hashdotai/guide/02_webs/04_history.mdx b/content/hashdotai/guide/02_webs/04_history.mdx deleted file mode 100644 index e1a7561dbd5..00000000000 --- a/content/hashdotai/guide/02_webs/04_history.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "History" -description: "Change tracking, versioning, lineage & provenance" -metaTitle: "History - HASH" -metaDescription: "Learn how to track and view changes to information, with versioning, lineage and provenance in HASH" -sidebarTitle: "History" -sidebarIcon: https://app.hash.ai/icons/docs/webs-history.svg ---- - -# Overview - -Versioning, history, and provenance are first-order concepts within the HASH database, which provides: - -1. a complete record of all the changes to an entity or type over time (change tracking) -1. the ability to inspect, access and even use older versions of an entity or type (versioning) -1. the ability to see where information and changes came from, as well as what caused them (provenance) - -In a world of increasingly AI-generated information, the ability to map the "supply chain" of your information and beliefs is critical, and amongst open-source tools only HASH is well-placed to help in this regard. - -# Using provenance metadata - -## Agents - -[Agents](/guide/agents) will use provenance data when providing you with information, including when answering your questions in [chats](/guide/agents/chat), and when producing reports or other informational outputs in response to any [goals](/guide/agents/goals) you provide them with. Agents use provenance data to ensure that the answers they provide are accurately caveated, and can be introspected further when necessary. Rather than blindly tell you that things are or are not true with a false sense of certainty, provenance metadata is incorporated into answers to inform confidence-based judgements. This allows agents to answer thorny, real-world questions with nuanced understanding, and a level of accuracy more comparable to domain-experts than traditional AI bots. Provenance data forms a key part of helping users rely on agents' judgement in a manner similar to how they might a human analyst or co-worker, with a realistic sense of doubt appropriately conveyed, where the information required to arrive at a judgement is unclear or incomplete, or its provenance is less than certain. Because HASH is much more than just a "key-value store", in this way HASH agents can operate effectively under conditions of uncertainty where other AI agents fail. - -## Direct usage - -In addition to AI being able to access and factor in provenance metadata, you can also view and access it directly to use it as part of your analysis. Simply head to the "Context" tab of a given entity or type to view its change history and any other available provenance metadata. This metadata is collected and made accessible web-wide. diff --git a/content/hashdotai/guide/03_entities/00_index.mdx b/content/hashdotai/guide/03_entities/00_index.mdx deleted file mode 100644 index f39bb53f0b3..00000000000 --- a/content/hashdotai/guide/03_entities/00_index.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Entities" -description: "How things are represented in HASH" -metaTitle: "Entities - HASH" -metaDescription: "Learn what entities are, how they're used, and why they're so important in HASH" -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/entities-overview.svg ---- - -# Overview - -**Entities must have an entity type:** every entity must have at least one [entity type](/guide/types/entity-types) associated with it, which in turn specifies the [attributes](/guide/entities/attributes) (information) that can be stored about an entity. - -**Entities can have multiple entity types:** let's imagine you're a small business owner making jewellery, primarily selling to local members of your community. If you sell a piece of jewellery to a friend, you might represent that person as an entity in your web with multiple types assigned to them, including `Person`, `Customer`, and `Friend`. This lets you capture information on the entity relevant to the fact that it represnts a person (for example, that it has _name_), that they also represent a customer (with an _order history_, and _lifetime value_), and that they're also a friend (whose _birthday_, _spouse's name_, and other key information you might care about). Likewise, a figure like Arnold Schwarzenegger could be represented as a `Person`, `Actor`, `Bodybuilder`, `Politician` _and more_ - and might need to be, in order to ensure that all of the relevant information about him, which you care about, can be stored. Many entities do have multiple types. - -**Entities can be anything:** entities don't have to be people — they can be anything at all. - -**Representations may differ:** the exact same entity represented in different users' webs may have different entity types attached to it. Not all users will care about the same aspects of an entity, so each may choose to represent it a little bit differently. diff --git a/content/hashdotai/guide/03_entities/01_attributes.mdx b/content/hashdotai/guide/03_entities/01_attributes.mdx deleted file mode 100644 index 90269c957c5..00000000000 --- a/content/hashdotai/guide/03_entities/01_attributes.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "Attributes" -description: "Information about an entity" -cover: https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/d4f9cbbb-2b05-463e-8a3a-e9da879c8700/public -metaTitle: "Entity Attributes - HASH" -metaDescription: "Learn what attributes are, and get introduced to the different kinds of attributes that may exist on entities in HASH" -sidebarTitle: "Attributes" -sidebarIcon: https://app.hash.ai/icons/docs/entities-attributes.svg ---- - -# Overview - -[Entity types](/guide/types/entity-types) specify the **attributes** that may occur on entities of their type. Attributes are simply the individual pieces of information that describe an entity and its relationship to other entities. An attribute can be either a **property** or a **link**. - -# Properties - -A property is a value stored directly on an entity. Every property has one [property type](/guide/types/property-types) which: - -- has a name and a description which provide semantic meaning wherever it is used, so it is clear and unambiguous what the value represents; and -- specifies one or more expected [data types](/guide/types/data-types) which both further describe the expected value, and ensure that any value provided is of the expected type, e.g. `Text` or `Number`. -- may be used by multiple entity types. For example, a common property type such as `Name` might appear on many entity types. This makes it easier to identify properties which mean the same thing across entiites of different types. - -# Links - -A link describes a relationship between one entity and another. Every link has one or more [link types](/guide/types/link-type) which determine its semantic meaning, e.g. `Employed By`. Links may themselves have properties which provide more information about the relationship, e.g. `Job Title`. - -Like property types, a link type might appear on multiple entity types. An `Invested In` link might appear on both a `Person` and a `Company` entity type, since they can both invest in other entities. - -The permitted properties of a given link type, for example `Investment Value`, are the same wherever it is re-used. However, each entity type which uses the link type can have different rules about the permitted target entity. Entities representing a `User` on a stock exchange platform might only permit an `Invested In` link to point to entities representing valid `Tradable Security`s on that platform, whereas a more generic `Person` entity might have a wider range of types of entities that it can be `Invested In`, for example private companies, or their kid's `Lemonade Stand`. - -## Multi-type links - -An instance of a link can have more than one link type associated with it. This is relatively uncommon, and typically link types will extend other link types (to make them "more specific") instead. A link with multiple types can, however, be useful to denote that two relationships are tied. - -Let's consider a `Person` and a `Delaware Corporation` (a type of company). Under Delaware law, company directors have a legal duty of care, known as a "fiduciary responsibility", to the shareholders of a company. - -In addition to connecting our `Person` to our `Delaware Corporation` by a `Is on the board of directors of` link, we may also add a _second_ link type to the link, called `Has fiduciary responsibility to the shareholders of`. This makes the relationship more explicit. - -If the person ceases to be a director of the company, and the link is removed entirely, their fidcuiary responsibility likewise vanishes. In this way, links with multiple link types can be useful for capturing conditionally linked aspects of a relationship. - -# Constraints - -Constraints on an attribute's value — both the input format of a property, defined by its `Data Type` — as well as the type of entities accepted by a `Link Type` — can sometimes feel annoying. - -However, constraints can help validate that information is entered or collected is in the right format, catching errors at the point of data entry or ingest, and keeping the quality and trustworthiness of information in your [web](/guide/webs) high. This also helps ensure that your entities can reliably be used in off-the-shelf [HASH apps](/guide/apps), or in external applications that you sync your HASH data with. - -That said, not all property types strictly define their data types — and not all entity types that expect links are prescriptive about the `entity types` they allow linking to. Sometimes this "lack of typing" can be useful, but you should take extra care to avoid errors when relaxing type constraints. diff --git a/content/hashdotai/guide/03_entities/02_creating.mdx b/content/hashdotai/guide/03_entities/02_creating.mdx deleted file mode 100644 index e8dcb67957d..00000000000 --- a/content/hashdotai/guide/03_entities/02_creating.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Creating An Entity" -description: "Adding new entities to your web" -cover: https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/62f008f4-e749-4a7b-1962-eede84307600/public -metaTitle: "Creating Entities - HASH" -metaDescription: "Learn more about the different ways new entities get created in HASH and which ones are best-suited to your case" -sidebarTitle: "Creating Entities" -sidebarIcon: https://app.hash.ai/icons/docs/entities-creating.svg ---- - -# Overview - -There are lots of different ways to create new [entities](/guide/entities) in HASH. - -# Directly - -You can manually create entities directly in HASH using the entity editor. Click the "plus" icon, found on the right-hand side of the top navigation bar in the HASH application, and select "Entity" from the dropdown menu. From the new screen that loads you'll need to pick at least one entity type, in order to enter the [attributes](/guide/entities/attributes) of your new entity. When you're done, simply click the "Create entity" button in the blue banner near the top of the page. - -# With integrations - -When you set up an [integration](/guide/integrations), HASH automatically creates entities in your web using the information you give it access to. Files, communications, and other data are seamlessly represented in HASH upon integration, and synced with their original source to ensure accuracy. - -# With plugins - -HASH [plugins](/guide/plugins) can be installed in a growing range of other applications, including [ChatGPT](/guide/plugins#hashgpt) and [your browser](/guide/plugins#browsers). In addition to adding useful capabilities to these applications, HASH plugins can also assist in (or automate) the process of adding new entities to your web. For example, when [passive mode] is enabled in the [HASH browser extension], HASH can automatically extract entities of a specific type you choose from the webpages you visit, as you encounter them, populating your web for you (and eliminating manual data entry work). This can be useful for many types of work such as recruiting or prospecting, as well as with any internet research or comparison task. - -# With flows - -[Flows](/guide/flows) can be created in HASH to do many things, including adding new entities to your web. This may be the primary aim of a flow (to populate a web with entities, or to keep existing entities up-to-date), or incidentally achieved in fulfilment of a flow's actual goal (e.g. to generate a document on a particular topic). In the case of such "research" tasks, flows may not only culminate in a "deliverable" or "output" like an answer, report, presentation, or spreadsheet table... but also result in the hydration of a web with all of the entities encountered during the course of its run. - -You can [create your own flows](/guide/flows/creating) and run them in a [variety of ways](/guide/flows#runs). - -Flows can also be conceived and run by AI [agents](/guide/agents), on the basis of [goals](/guide/agents/goals) specified in natural language (e.g. "find me all CTOs of Fortune 500 companies who have been in the role more than 3 years") - -All entities added to your web by a flow, or through an AI agent's actions, can be filtered out of a particular view by using the [provenance information](/guide/webs/history) that is stored alongside them. - -Entities added to your web by automations can also be held in your [actions](/guide/flows/actions) queue until you're ready to review them, if you prefer, with only select approved entities ultimately added to your web at all. diff --git a/content/hashdotai/guide/03_entities/WIP_XX_04_updating.mdx b/content/hashdotai/guide/03_entities/WIP_XX_04_updating.mdx deleted file mode 100644 index 678b2f75de6..00000000000 --- a/content/hashdotai/guide/03_entities/WIP_XX_04_updating.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: "Updating An Entity" -description: "Updating entities in your web" -metaTitle: "Updating Entities - HASH" -metaDescription: "Learn more about the various ways entities in HASH can be updated and kept up-to-date" -sidebarTitle: "Updating Entities" -sidebarIcon: https://app.hash.ai/icons/docs/entities-updating.svg ---- - -# Updating entities and links - -1. To find the Entity you want to update, click the name of its type under Entities in the left-sidebar, which will take you to a list of all entities of that type. You can also use the search bar to enter a known value for the entity, e.g. its name. -1. Find the Entity you want to update in the table. The search feature will highlight Entities in the table which match your search, helping you to find a particular Entity by its name or one of its properties. -1. Once you’ve opened the Entity you want to update in the Entity editor, simply click to edit any of its Properties or Links. -1. Making a change will trigger a draft state, as indicated by the blue banner. -1. Click ‘Save changes’ to save your updated Properties and Links. diff --git a/content/hashdotai/guide/04_types/00_index.mdx b/content/hashdotai/guide/04_types/00_index.mdx deleted file mode 100644 index 02ec911549a..00000000000 --- a/content/hashdotai/guide/04_types/00_index.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Types" -description: "Understanding and using types in HASH" -metaTitle: "Types - HASH" -metaDescription: "Learn about types in HASH, and how to use them – entity types, property types, link types, and data types" -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/types-overview.svg ---- - -# Introduction - -"Types" are one of the most important concepts to understand in HASH. - -Every entity in HASH has one or more [entity types](/guide/types/entity-types) which describe the [attributes](/guide/entities/attributes) expected on an entity. - -Every attribute in turn has either a [property type](/guide/types/property-types) or a [link type](/guide/types/link-types). These are described in more depth on the [attributes](/guide/entities/attributes) page. - -Property values are constrained by [data types](/guide/types/data-types), while the entities that a link points to may be constrained by their entity type(s). - -# Using types - -Once you understand what entity types, link types, property types and data types are, you can begin to model the things you care about, by finding existing types in HASH that represent them, or by creating your own types. - -# Advanced features of types - -You can also use some of the more advanced features of types, to make managing your data easier and cleaner: - -- **Extending types:** entity types and link types can both be "extended". This allows you to make them more specific, specifying (i) additional [attributes](/guide/entities/attributes), and (ii) tighter [constraints](/guide/entities/attributes#constraints) on an entity. -- **Using multiple types in combination:** both entities and links can have more than one type associated with them. This allows you to capture more information about entities and the relationships that connect them than may be allowed by a single type. You can learn more about this on the [entity type](/guide/types/entity-types) and [link type](/guide/types/link-types) pages. -- **Converting between types:** because HASH is a "multi-tenant" database, the same information (and types) may exist in multiple users' webs. You can convert and cross-walk between [peers](/guide/sharing/peers). diff --git a/content/hashdotai/guide/04_types/01_entity-types.mdx b/content/hashdotai/guide/04_types/01_entity-types.mdx deleted file mode 100644 index 90550ef5414..00000000000 --- a/content/hashdotai/guide/04_types/01_entity-types.mdx +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: "Entity Types" -description: "Defining the possible attributes of a thing" -metaTitle: "Entity Types - HASH" -metaDescription: "Entity types describe the shape of things, and the kind of attributes that are expected to be associated with them" -sidebarTitle: "Entity Types" -sidebarIcon: https://app.hash.ai/icons/docs/types-entitytypes.svg ---- - -# Overview - -Information in a user's [web](/guide/webs) is stored in the form of semantic [entities](/guide/entities). Every entity has at least one **entity type**. - -An entity type is a formal definition of what an entity is. It consists of: - -- a **name**, which refers to the kind of entity (e.g. `Building`); -- a **description** of the type, written in plain language, which describes what kind of thing a type refers to — useful for eliminating any ambiguity that the name alone may not sufficiently address (e.g. `A structure with a roof and walls, such as a house or factory.`); -- a list of expected [attributes](/guide/entities/attributes) that can be associated with entities of the type. Attributes expected may either be properties, described by [property types](/guide/types/property-types); or links, described by [link types](/guide/types/link-types). -- (optional) a pictographic **icon**, which can be used to quickly identify the type (or entities of the given type) in a list of others. -- (optional) a "label" flag, which denotes which of an entity type's attributes should be used as a label for an entity (e.g. its name, or another unique identifier) - -Defining the list of expected attributes constitutes most of the work associated with defining a new type. - -Entity types may also extend other existing entity types, "inheriting" their attributes, and avoiding the need to re-specify these all over again when creating a more specific version of an entity type. A type which extends another is called a 'child type', while the type which is extended is called the 'parent type'. An entity type may have any number of parent types or child types. - - - -A `Company` entity type might have multiple children which inherit from it, each with their own distinct properties. An incomplete but illustrative family of types might look something like this: - -- `Company` (entity type), with key property types present on all of its children. - - `Company > US Company` (entity type), specifying certain US-specific property types found on all of its children. - - `Company > US Company > C Corporation` (entity type), - - `Company > US Company > S Corporation` (entity type), - - `Company > UK Company` (entity type), containing various UK-specific property types found on all of its children. - - `Company > UK Company > Public Limited Company (PLC)` (entity type) - - `Company > UK Company > Private Limited Company (Ltd)` - - `Company > UK Company > Private Unlimited Company (Unltd)` - - `Company > UK Company > Community Interest Corporation (CIC)` - - - -# Creating a new entity type - -HASH provides a visual editor that you can use to create, inspect and update entity types. Creating a new entity type lets you store new kinds of entities in HASH, along with relevant information about them that you care about. - -**To create a new entity type:** - -1. Name and describe your entity type: -1. Click the `+` button in the top navbar and select “Entity Type”. -1. In the pop-up modal, enter the a name and description for the entity type you're trying to create. The name and sometimes its description will appear in lists, so it’s a good idea to make it descriptive and specific so that you and your collaborators can recognize it in the future. When you're ready, click "Create new entity type" to proceed to the editor. -1. You should now find yourself in the entity editor, faced with a blank slate. **Your new entity type has not yet been created.** Navigating away from this screen will result in your draft being discarded. -1. Define the expected attributes on your entity type: - -- You can define any number of attributes as "expected" on an entity type, including an unlimited number of properties and links. To get started, either: - 1. **Add a property type** - 1. Click "Add a property type +" to define the properties your new entity type’s entities can have. The property type suggestor will find and propose existing property types you may wish to use. These may include ones you've created or used before, along with other property types that are public on HASH. Using shared property types can save you time and may lead to your data conforming to shared standards and mutually intelligible formats more closely. - 1. Start typing to search for an existing property type. Typing in this input filters the property types shown in the suggestor, and allows you to find ones relevant to you. If you can't find an existing property type which is suitable, type a name for your new property type and click the “Create `` PROPERTY TYPE” button at top/bottom of the suggestor and follow the guide to [creating a new property type](/guide/types/property-types#creating-a-new-property-type). - 1. **Add a link type** - 1. Click ‘Add a link type +’ to define a relationship that instances of this entity type may have with other entities. As with property types, the link type suggestor will suggest existing link types you may wish to use. - 1. When expected link types are added to an entity type's definition, by default they accept links to entities of any type as valid links. To constrain this, click on the "Anything" chip, and select the entity type(s) that are valid targets for this type of link, for the entity type you are creating. - 1. By default, newly added link types also accept “0 or more” links. Optionally increase the minimum to "1" or more to enforce that the presence of a link be required on an entity, and/or set a cap on the maximum number of links that may exist for a given link type. Click the “0 or more” chip to change this for a given link type present. - 1. Once you've added all the attributes you expect on entities of this new given entity type, click “Create” in the blue banner. Your new entity type is now saved, and usable elsewhere in HASH, and you can [create your first entity](/guide/entities/creating) using it. - -# Extending an existing entity type - -To extend an entity type, find the type you wish to extend in your [list of types](https://app.hash.ai/types), and then click on the type in question. Once the type has loaded, in the upper-right portion of the page you should see an "Extend type" button. Click this, and choose a name and description for the child type you are creating to continue. The remainder of this process now mirrors that for creating a new entity type (covered above). - - - -You should always avoid updating entity types in ways that change its semantic meaning. - -When modifying an entity type, consider if it's really appropriate to update an existing entity type, or whether it would be better to: - -- _extend_ it, creating a more specific version of the type, a "child type", which inherits from the existing definition. -- _parent_ it, creating a more general, less specific "parent type", which your existing type can be made to inherit _from_. - -You might determine that an existing entity type definition still needs updating because you want to: - -- correct a mistake -- tighten the constraints associated with a link type, to make them more precise -- add additional expected attributes which may be present on any instance of a thing, and not just a particular sub-group of entities of the type (who could otherwise be served better by the creation of a more specific child entity type) - - - -# Updating an existing entity type - -To edit an entity type, find the type in your [list of types](https://app.hash.ai/types) and click on it to open it up. If you have permission to edit the entity type, you'll be able to add or remove existing attributes from this page, by clicking the "Add a property" or "Add a link" buttons beneath the property/link tables respectively, and by using the context menu found next to each existing attribute. - -When you're done making edits, click the "Publish update" button in the blue banner at the top of the page to save your changes and create a new version of the entity type. You can also click the "Discard changes" button to revert your edits without updating the entity type. - -Once a new version of an entity type has been created, existing entities of that type will still need "updating" to use the latest version. When entity type updates are available, you'll see a notice in your [actions queue](/guide/inbox/actions), making it easy to bulk-update existing entities to their latest version, and address any conflicts that may arise during the update process. - -You can also update the entity type of an individual entity directly when viewing it in the entity editor. - - - -When viewing an entity that uses an outdated type, the type will be highlighted in the entity's "Types" list, along with an indication indicating that a newer version of the entity type is available. You can click on this to update the entity to use the new version of the entity type. - -A modal will pop up to make sure you understand the potential consequences of this update: - -1. If Property Types or Link Types have been removed in the new version of the Entity Type, they will be removed from this Entity, along with any Data values. -1. If any Property Types’ Data Types have been changed, any existing Data values which don’t conform to the new Data Type will be removed or unset. -1. If existing Property Types have been changed from not required to required and the Entity doesn’t have a Data value set for those Property Types, you will still be able to upgrade the Entity Type. Data values will not be set automatically and no problems occur, but you should manually add values to make sure the Entity is compliant with its Entity Type. -1. If the expected Entity Types or allowed number of links on any of the Link Types has been changed in the new version of the Entity Type and the Entity’s existing links don’t follow the new schema, they will be unaffected but should be updated. -1. If new Property Types or Links Types have been added to the new version of the Entity Type, the Entity will have those new Property and Link Types, but no Data values or Links will be created. - -If you've happy with this, click ‘Update entity type’ to upgrade your Entity. You’ll notice that any updated property- link- and data- types are now reflected on your entity, and you can make any necessary changes so that this entity follows its new schema. - - - -# Browsing entity types - -You can see [all entity types](https://app.hash.ai/types/entity-type) you have permission to view from the **Types > Entity Types** page in HASH. diff --git a/content/hashdotai/guide/04_types/02_link-types.mdx b/content/hashdotai/guide/04_types/02_link-types.mdx deleted file mode 100644 index 1d7321e8884..00000000000 --- a/content/hashdotai/guide/04_types/02_link-types.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "Link Types" -description: "Describing the relationship between things" -metaTitle: "Link Types - HASH" -metaDescription: "Link types describe the relationship between things, and may have attributes associated with them" -sidebarTitle: "Link Types" -sidebarIcon: https://app.hash.ai/icons/docs/types-linktypes.svg ---- - -# Overview - -Links are a special kind of entity, which exist solely to describe the relationship between two other entities. - -Like normal entities, links have their own type (a "link type", as opposed to an "entity type") which gives the link semantic meaning. Link types may also specify [attributes](/guide/entities/attributes) which provide more information about the relationship. - -For simplicity's sake link types can be defined and edited much like entity types, but you can otherwise think of them as their own separate thing dedicated to describing relationships between entities. - -# Creating link types - -You can create a new link type: - -1. inline when editing an entity type, at the point of need, from within the entity type editor; -1. by clicking the `+` button in the top-right of HASH, and selecting the 'Create link type' option; -1. by converting an existing entity type to a link type, using the context menu on an entity type's page (accessed by clicking the three vertical dots near the top-right of the page). - -When creating a link type, you simply need to specify a name and a description. - -# Extending link types - -Link types can extend or "inherit" from other link types. This can be useful for capturing additional or more specific information about a relationship, or enforcing stricter [constraints](/guide/entities/attributes#constraints). - -# Browsing link types - -You can see [all link types](https://app.hash.ai/types/link-type) you have permission to view from the **Types > Link Types** page in HASH. diff --git a/content/hashdotai/guide/04_types/03_property-types.mdx b/content/hashdotai/guide/04_types/03_property-types.mdx deleted file mode 100644 index c9fbf7e22b6..00000000000 --- a/content/hashdotai/guide/04_types/03_property-types.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Property Types" -description: "Describing information associated with a thing" -metaTitle: "Property Types - HASH" -metaDescription: "Property types describe information that is stored directly on a thing, without reference to any other entity" -sidebarTitle: "Property Types" -sidebarIcon: https://app.hash.ai/icons/docs/types-propertytypes.svg ---- - -# Overview - -**Property types** provide semantic descriptions of [properties](/guide/entities/attributes#properties), and specify the expected [data types](/guide/types/data-types) of their values. - -# Creating a new property type - -You can create a new property type inline when editing an entity type, directly within the entity type editor. To create a new property type: - -1. Open the editor for the entity type you'd like to add the property type to. -1. Click "Add a new property" at the bottom of the list of any existing property types already expected. -1. Type in the name of the property type you wish to create, as if searching for it in the suggestor that pops up. Next, click “Create `` PROPERTY TYPE”. -1. You'll now be asked to provide a description. Your new property type will be available for use with other entity types in HASH, so describing the property type's semantic meaning in a way that isn't overly specific to your current open entity type works best. -1. Next, choose one or more [data types](/guide/types/data-types) that define the allowed values of a property type. - -- Data types may be primitive, such as `Text`, `Number`, or `Boolean` (true/false), as well as more complex (`Phone Number`) or specific (e.g. various units of length). -- You can also define "custom" expected values, by clicking “Specify a custom expected value”. A custom expected value uses one or both of the `Array` and `Property Object` data types. - - `Array` data types are lists of values, such as a list of `Text` values - - `Property Object` data types are sets of other property types, nested within the _parent_ property type you are defining. - - Most users will never need to use these, and in many cases an object of property types would be better created as a separate entity with its own type that is then linked to other entities as required. - - Click ‘Save expected value’ if defining an `Array` or `Property Object` data type, when finished, to return to the property type definition. - -1. Finally, click ‘Create new property type’. You'll see your new property type in the property types table of the entity type you're editing. You’ll notice that for each of the attributes of an entity type, you can also choose whether the attribute (such as the property type you just created) should be _required_, or whether it is just _possible_ to associate the attribute with the entity. You're also able to specify whether _multiple_ values for an attribute (such as instances of a link, or values of a property) can be provided. - -- Setting an attribute to required means that entities of an entity type _cannot be created_ unless the required property value or link is present. -- Allowing multiple of the expected property type's value means that whatever the expected value is, there can be multiple of them (i.e. a list or array). If the property type expects a number, allowing multiple means the entity type will expect a list of numbers, and if the property type expects a list of numbers, allowing multiple would mean that the entity expects _a list of list of numbers_. - -## Best practices - -When creating new property types, it's good to keep certain things in mind. - -- **Be as specific as possible.** Rather than name your property type something like "Temperature", try to be more specific. For example, "Average Temperature", "Current Temperature", or even "Estimated Current Temperature". The aim of property types is to provide semantic meaning to the information associated with an entity. -- **Prefer data type groups where possible.** If you have a "Current Temperature" property type, rather than specify "Celcius" and "Farenheit" on it separately as acceptable data types for its values, try to declare a [data type group](/guide/types/data-types#data-type-group), such as "Temperature" instead. This allows values of one data type to be automatically converted to another, and prevents the need for separately (manually) declaring every different kind of temperature-related data type that might exist (with there being many more, for example "Kelvin", which is used in many scientific contexts). -- **Consider if a property type should be a link type, instead.** For example, should "Home Address" be stored as a string on an entity, or should each home address be its own "Street Address" entity in your web? Depending on your use case, the latter may be more appropriate (for example enabling you to quickly generate a graph representing a building's occupants). - -# Browsing property types - -You can see [all property types](https://app.hash.ai/types/property-type) you have permission to view from the **Types > Property Types** page in HASH. diff --git a/content/hashdotai/guide/04_types/04_data-types.mdx b/content/hashdotai/guide/04_types/04_data-types.mdx deleted file mode 100644 index 1032fd4b6e7..00000000000 --- a/content/hashdotai/guide/04_types/04_data-types.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Data Types" -description: "Defining the acceptable values of a property type" -metaTitle: "Data Types - HASH" -metaDescription: "Data types describe the range of acceptable values of a property type" -sidebarTitle: "Data Types" -sidebarIcon: https://app.hash.ai/icons/docs/types-datatypes.svg ---- - -# Overview - -**Data types** describe an acceptable format of a value. Data types (validation logic) are distinct from property types (semantic meaning), allowing for single data types to be re-used across many multiple property types. - -# Primtive data types - -HASH contains a series of primitive data types, which are widely used, and from which more complex data types can be constructed. These include: - -- `Text`: an ordered sequence of characters, including letters, numbers, and symbols -- `Number`: an arithmetical value (in the [real number](https://en.wikipedia.org/wiki/Real_number) system) -- `Boolean`: a "true" or "false" value - -HASH also contains a small number of other primitive data types, which are unlikely to be useful to most users. - - - -The following primtive data types are also supported in HASH: - -- `Null`: A placeholder value representing 'nothing' -- `Object`: A plain JSON object with no predefined structure - - - -# Custom data types - -Non-primitive (i.e. "custom") data types provide an easy way to validate more complicated property values which historically might have required the repeated writing or rewriting or Regular Expressions (RegEx), or use of purpose-built programming language data validation libraries -- for example credit card numbers, dates, phone numbers, colors, etc. - -## Available data types - -You can view all of the [publicly-shared data types](https://app.hash.ai/types/data-type) that are in HASH from the **Types > Data Types** page. This includes commonly-used everyday data formats such as phone numbers, email addressses, URLs and currencies, as well as standard SI units (e.g. time, length, mass, current, temperature, substance amounts and luminosity), in addition to many more niche, domain-specific and esoteric types. - -If you can't find an existing data type that fits your needs, you can also create your own. - -## Creating custom data types - - - We'll be documenting how to create custom data types shortly. - - -# Data type groups - -## Converting between data types - - - We'll be adding information about converting between data types using "data - type groups" in the near future. - diff --git a/content/hashdotai/guide/04_types/WIP_XX_views.mdx b/content/hashdotai/guide/04_types/WIP_XX_views.mdx deleted file mode 100644 index 09b80c98507..00000000000 --- a/content/hashdotai/guide/04_types/WIP_XX_views.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Views" -description: "Custom visualizations per-type" -metaTitle: "Views - HASH" -metaDescription: "Views provide easily accessible, preset ways of viewing entities of a certain type in HASH" -sidebarTitle: "Views" -sidebarIcon: https://app.hash.ai/icons/docs/types-views.svg ---- diff --git a/content/hashdotai/guide/05_agents/00_index.mdx b/content/hashdotai/guide/05_agents/00_index.mdx deleted file mode 100644 index ba8f91ce298..00000000000 --- a/content/hashdotai/guide/05_agents/00_index.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Agents" -description: "Helping you with the hard stuff" -cover: https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/f2b4136e-eecb-4427-e19e-1096b370ad00/public -metaTitle: "AI agents in HASH" -metaDescription: "HASH Agents automatically plan and execute work, saving you time and money, improving quality, and helping you get more done" -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/ai-overview.svg ---- - -# Introduction - -**Agents** are powerful AI workers built into HASH, which answer [questions](/guide/agents/chat), work towards [goals](/guide/agents/goals), and execute [flows](/guide/flows) on your behalf. - -To view or manage your agents, click on the "Agents" tab in the left-hand sidebar of the HASH app. From here you'll be able to view their activity, provide them with new goals, or chat with them to get answers directly. - -# Supporting goals - -Agents can help solve goals on your behalf. Currently, agents support research and analysis related tasks — for example, adding new entities to, or enriching existing entities within — your web, by autonomously researching topics and analyzing the collected information. - -When conducting research, agents are able to search for and interpret information already in your web, as well as public entities from other [HASH webs](/guide/webs), and the outside World Wide Web. As always, private information within both personal and shared webs is not accessible to anybody else (including other people's agents). - -# Answering questions - -Agents can also help you understand topics with more expertise and in more detail than ordinary AI chatbots, by combining their own knowledge and access to the World Wide Web, with information from HASH (including data in your own personal [web](/guide/webs)). Answers are supplemented with references to the entity, webpage, or other context used in their production, so you can have more confidence in the underlying reasoning. - -# Managing flows - -[Flows](/guide/flows) are pre-defined series of steps that Agents can execute. If something goes wrong, depending on how the flow has been set up and defined, the agent executing it has the ability to decide how to do proceed. diff --git a/content/hashdotai/guide/05_agents/01_goals.mdx b/content/hashdotai/guide/05_agents/01_goals.mdx deleted file mode 100644 index 7e4b996c0b0..00000000000 --- a/content/hashdotai/guide/05_agents/01_goals.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: "Goals" -description: "Set goals for agents to follow" -metaTitle: "Solve goals with AI agents - HASH" -metaDescription: "You can provide goals for agents to follow, resulting in them performing tasks automatically on your behalf." -sidebarTitle: "Goals" -sidebarIcon: https://app.hash.ai/icons/docs/ai-workers.svg ---- - -# Overview - -You can provide AI [agents](/guide/agents) in HASH with goals, which they'll attempt to satisfy on your behalf. - -Right now, agents are well-suited to solving **research** and **analysis** goals, including: - -- complex, many-step analysis tasks that require the computation of novel metrics; -- targeted deep-dive research according to specific criteria; -- open-ended, general domain mapping, or knowledge graph generation. - -In the future, we'll expand the kinds of goals that agents can help support, and the complexity of the tasks they can undertake on your behalf. - -You can view agents' activity on goals much like you can the progress of a [flow](/guide/flows). However, unlike a flow, whose steps are _fixed_, the steps in a goal may vary. - -While an agent may initially "plan" the steps it intends to take at the outset, when working on a goal, it will also continuously evaluate whether steps need to be added, updated, or removed to fulfil the goal. - -Individual goals may be serviced by many agents at once, speeding up the rate at which it can be fulfilled. - -# Viewing goals - -You can view both active and historical goals by clicking the "Agents" tab in your left-hand sidebar at any time. - -Active goals will appear at the top. Historical goals — those marked as either "complete" or "abandoned" — appear in the section beneath. diff --git a/content/hashdotai/guide/05_agents/02_chat.mdx b/content/hashdotai/guide/05_agents/02_chat.mdx deleted file mode 100644 index c16ee33d8ac..00000000000 --- a/content/hashdotai/guide/05_agents/02_chat.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "Chat" -description: "Get answers to hard questions" -metaTitle: "Get answers with AI agents - HASH" -metaDescription: "You can ask questions of your AI agents with HASH, allowing you to query and talk to your web in natural language" -sidebarTitle: "Chat" -sidebarIcon: https://app.hash.ai/icons/docs/ai-chat.svg ---- - -# Overview - -You can chat with your agents using natural language. This lets you: - -- **Get answers to questions** extremely quickly, using information in your web, and other public HASH webs -- **Effortlessly grow the information in your web** around any topic of interest, with micro-[research goals](/guide/agents/goals) being created and satisfied by agents at the point of need -- **Capture new information** about entities as linked observations and notes, without having to fill in any forms - -# Chat in HASH - - - The ability to chat with AI agents _inside_ HASH is coming soon. If you'd - like to help beta test this feature, [create an account](/signup) and we'll - let you know when it's available to try. - - -You'll soon be able to **chat** with your AI agents directly in HASH (as well as via ChatGPT), allowing you to do all the things listed above, with the additional benefit of agents' responses being rendered using rich, interactive [blocks](/guide/pages/blocks). - -# External Assistants - -## ChatGPT - -**HASH for ChatGPT** lets you access information from your [web(s)](/guide/webs) via the official `chat.openai.com` ChatGPT interface. - -To get started, you'll need to open [HashGPT](https://chat.openai.com/g/g-i9t0QlD9c-hashgpt) in the GPT Store, and connect your HASH account. diff --git a/content/hashdotai/guide/06_flows/00_index.mdx b/content/hashdotai/guide/06_flows/00_index.mdx deleted file mode 100644 index 1189f9387de..00000000000 --- a/content/hashdotai/guide/06_flows/00_index.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Flows" -description: "Automating and executing actions in HASH" -cover: https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/a1ec4234-31bf-4d65-5c03-18c31f43ae00/public -metaTitle: "Flows - HASH" -metaDescription: "Flows allow you to define actions that can be run on a schedule, in response to a trigger, or manually" -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/flows-overview.svg ---- - -# Overview - -**Flows** are fixed sequences of steps — i.e. processes — which can be mapped out within HASH, and executed by [agents](/guide/agents) on your behalf. - -Flows allow for the reliable, predictable execution of specific actions, in contrast to [goals](/guide/agents/goals), which agents may attempt to satisfy according to their own best judgement. - -# Triggers - -[Triggers](/guide/flows/triggers) result in the execution of a flow. A single flow may have multiple different possible triggers. - -# Steps - -Once triggered, flows consist of different kinds of steps, including: - -- [Actions](/guide/flows/actions), which do things as part of a flow. These are the most common kind of step. -- [Filters](/guide/flows/filters), which allow for conditional execution of different actions. These allow for branching logic, and the construction of more powerful, responsive flows. -- [Waits](/guide/flows/waits), which allow you to pause flows until a condition is satisfied. Any condition which can trigger a flow can also be used within a wait step. - -# Runs - -- **One-off:** flows can be run ad-hoc or manually by a user, as required, upon creation or from the [Flows](https://app.hash.ai/flows) page in HASH; -- **Automatic:** flows can also be run without user input, on autopilot, by satisfying the condition(s) of a [trigger](/guide/flows/triggers) present within a flow; -- **Programmatic:** flows can be triggered by external software or function-calling agents using the [HASH API](https://hash.dev/docs/flows/api). - -# Permissions - -Flows created in your [personal web](/guide/webs#personal-webs) are only ever visible to you. Likewise, flows created in [shared webs](/guide/webs#shared-webs) are only visible to those web's members. - -In the future, we'll support optionally making flows public, as well as sharing them with specific users outside of the webs that flows belong to. diff --git a/content/hashdotai/guide/06_flows/01_triggers.mdx b/content/hashdotai/guide/06_flows/01_triggers.mdx deleted file mode 100644 index 94e4166f423..00000000000 --- a/content/hashdotai/guide/06_flows/01_triggers.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "Trigger Steps" -description: "Automating when flows are run" -metaTitle: "Triggers - HASH" -metaDescription: "Triggers can be used to specify when a flow should run: on a predefined schedule, or in response to a specific condition or event" -sidebarTitle: "Triggers" -sidebarIcon: https://app.hash.ai/icons/docs/flows-triggers.svg ---- - -# Overview - -**Triggers** can be used to specify conditions under which a [flow](/guide/flows) is automatically [run](/guide/flows#runs). - -# Types of triggers - -1. The presence of a **manual** trigger allows a flow to be run on-demand by authorized HASH users. -1. A **responsive** trigger monitors data or events, and starts a flow when some predefined criteria is met. -1. A **schedule** trigger starts a flow at a particular future point in time. This can be either a specific point in time, or a recurring/periodic basis. - -# Example use cases - -## Using manual triggers - -On a one-off, or as-needed basis... - -1. Perform chains of related actions with just one-click (allowing multi-step actions to be compressed into reliable, automated flows) -1. Generate reports for stakeholders upon request (servicing requests more quickly and dependably) - -## Using responsive triggers - -Continuously monitor and respond to... - -1. **External events.** e.g. monitor a competitor's blog's RSS feed, and generate a summary for internal consumption when a new post appears, and post to Slack. -1. **External data.** e.g. when some metric in an external application crosses a specific threshold, send an email and SMS alert to the responsible stakeholder. -1. **HASH events.** e.g. when one flow successfully finishes running, start another one in follow-up. -1. **HASH data.** e.g. when an email address appears as an [attribute](/guide/entities/attributes) on an entity in a web, run a reverse-lookup to identify the social media accounts associated with it. - -## Using schedule triggers - -1. **Fixed point in time:** e.g. run on 2030-01-01 at 12:00PM PST -1. **Recurring:** e.g. every Friday at 09:00AM EST diff --git a/content/hashdotai/guide/06_flows/02_actions.mdx b/content/hashdotai/guide/06_flows/02_actions.mdx deleted file mode 100644 index b1a0f6e8be0..00000000000 --- a/content/hashdotai/guide/06_flows/02_actions.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: "Action Steps" -description: "Doing things within flows" -metaTitle: "Actions - HASH" -metaDescription: "Actions are the main steps within HASH flows, representing those which actually 'result in an action' on behalf of a user." -sidebarTitle: "Actions" -sidebarIcon: https://app.hash.ai/icons/docs/flows-actions.svg ---- - -# Overview - -**Action** steps are the most common kind of step found in [flows](/guide/flows). - -# Example Actions - -## Querying - -You can query for entities and return matches in a single step. - -## Managing Entities - -Entities can be created, updated and archived using action steps. - -## Calling APIs - -You can send messages to external API endpoints using HASH. - -## Sending notifications - -You can use action steps to trigger notifications to you or certain other members of a web you belong to. - -Soon, you'll also be able to trigger emails and SMS messages, subject to certain limits. diff --git a/content/hashdotai/guide/06_flows/03_filters.mdx b/content/hashdotai/guide/06_flows/03_filters.mdx deleted file mode 100644 index 781ba2081a1..00000000000 --- a/content/hashdotai/guide/06_flows/03_filters.mdx +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: "Filter Steps" -description: "Conditional logic in flows" -metaTitle: "Filters - HASH" -metaDescription: "Filters enable you to specify conditional logic and unlock branching paths in flows" -sidebarTitle: "Filters" -sidebarIcon: https://app.hash.ai/icons/docs/flows-filters.svg ---- - -# Overview - -**Filters** allow you to use conditional logic in [flows](/guide/flows), enabling branching execution paths and more powerful single runs. - -# Example use cases - -- **Quality scoring.** In a CRM context, if the value assigned to a particular lead is above a specific quality threshold or score, take a more resource-intensive approach to outreach. -- **Response optimization.** If a subject responds in a particular way to an earlier action, pursue a particualr course of action. Otherwise, pursue another. -- **Robust workflows.** If something fails, try again. -- **Evaluation followups.** Following an evaluation step, depending on the feedback received (whether from an AI agent or a real-life human), respond appropriately. diff --git a/content/hashdotai/guide/06_flows/04_waits.mdx b/content/hashdotai/guide/06_flows/04_waits.mdx deleted file mode 100644 index db22a5ae80f..00000000000 --- a/content/hashdotai/guide/06_flows/04_waits.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Wait Steps" -description: "Pausing or awaiting within runs" -metaTitle: "Waits - HASH" -metaDescription: "Wait steps allow you to pause a flow run for a predefined period of time, or until a trigger is satisfied " -sidebarTitle: "Waits" -sidebarIcon: https://app.hash.ai/icons/docs/flows-waits.svg ---- - - - Wait steps are only available to **Team** and **Ultra** users of HASH. - - -# Overview - -**Waits** allow you to pause a flow's execution mid-run until a [trigger](/guide/flows/triggers) is satisfied. - -You can use wait steps in combination with triggers to: - -- pause a flow for a predetermined fixed amount of time; -- watch for and await a user response, enabling "human in the loop" workflows; -- watch for and await an AI agent or software system's action; -- watch for and await an external party's action. - -# Example use cases - -- **Public Consultation** — provide a time-limited window for members of the public to respond to a consultation document published online, before continuing with the next step in a flow. (Pausing a flow for a specific fixed length of time) -- **Quality Control** — introduce a human quality control, or "review" step in a workflow, whose further running is paused until approval is received. (Human-in-the-loop workflow) -- **Long-Running AI Workflows** — submit requests to an external LLM-provider like OpenAI or AI agent orchestor (like LlamaIndex or LangChain) and pause until a response is received, with no timeouts, even on incredibly long-running jobs. (Watch and wait for AI action or API trigger) -- **Outbound Email Campaigns** - send messages, and pause for a fixed amount of time before continuing, unless/until a prospect responds. (Watch and wait for a human response; combines well with [filters](/guide/flows/filters)) diff --git a/content/hashdotai/guide/06_flows/05_creating.mdx b/content/hashdotai/guide/06_flows/05_creating.mdx deleted file mode 100644 index b82197e29de..00000000000 --- a/content/hashdotai/guide/06_flows/05_creating.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: "Creating A Flow" -description: "Adding new flows to your web" -metaTitle: "Creating Flows - HASH" -metaDescription: "Creating your own flow is drag-and-drop simple in HASH, which lets you define and automate processes with just a few clicks." -sidebarTitle: "Creating Flows" -sidebarIcon: https://app.hash.ai/icons/docs/flows-creating.svg ---- - -You can manually create your own flows in HASH. - -Click the `+` icon in the navbar, located in the top-right corner of HASH, and select "Flow" from the dropdown list of options. - -To start, you'll need at least one [action](/guide/flows/actions) step. Actions are the things that a flow actually "does", and define the effect it has when run. - -Optionally, you might also choose to specify a [trigger](/guide/flows/triggers), and use [filter](/guide/flows/filters) or [wait](/guide/flows/waits) steps, depending on the process you're automating. diff --git a/content/hashdotai/guide/06_flows/WIP_06_optimizing.mdx b/content/hashdotai/guide/06_flows/WIP_06_optimizing.mdx deleted file mode 100644 index 6a0d65cfbed..00000000000 --- a/content/hashdotai/guide/06_flows/WIP_06_optimizing.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Optimizing A Flow" -description: "Optimizing flows in your web" -metaTitle: "Optimizing Flows - HASH" -metaDescription: "HASH allows discrete event, dynamic and agent-based processes to be automatically optimized through its easy-to-use graphical user interface." -sidebarTitle: "Optimizing Flows" -sidebarIcon: https://app.hash.ai/icons/docs/flows-creating.svg ---- - -HASH supports the easy-optimization of [flows](/guide/flows). diff --git a/content/hashdotai/guide/07_inbox/00_index.mdx b/content/hashdotai/guide/07_inbox/00_index.mdx deleted file mode 100644 index f68a82a7318..00000000000 --- a/content/hashdotai/guide/07_inbox/00_index.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Inbox" -description: "Messages and notifications" -metaTitle: "Inbox - HASH" -metaDescription: "Your inbox contains messages, notifications and actions relevant to you - both from other people, as well as from HASH, and any individual applications connected to your account." -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/inbox-overview.svg ---- - -# Overview - -Your **inbox** contains actions, notifications and messages that are private to you. - -# Actions - -[Actions](/guide/inbox/actions) consist of things that are awaiting your attention. AI-suggested improvements, proposed edits and updates from other users, requests from others to review their work, your own unfinished drafts, and pending todos are all things you'll find here. - -# Notifications - -[Notifications](/guide/inbox/notifications) provide timely informational updates. It's up to you to decide what to do with notifications. You may want to take action in response to some notifications, while others might simply be read, or even ignored. - -# Messages - -[Messages](/guide/inbox/messages) are private one-on-one or group communications between you and other users of HASH. diff --git a/content/hashdotai/guide/07_inbox/01_actions.mdx b/content/hashdotai/guide/07_inbox/01_actions.mdx deleted file mode 100644 index 1b10e50ee1e..00000000000 --- a/content/hashdotai/guide/07_inbox/01_actions.mdx +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Actions" -description: "A place for things awaiting action" -cover: https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/2a3882f8-346d-4bf8-8e38-5ffe3e2eb900/public -metaTitle: "Actions - HASH" -metaDescription: "In HASH, your actions queue contains content which may either be unfinished, or is unapproved and awaiting review, helping you separate out 'work in progress' and 'suggested' content from your web." -sidebarTitle: "Actions" -sidebarIcon: https://app.hash.ai/icons/docs/inbox-actions.svg ---- - -Your **actions** queue contains a range of things: - -- **Suggestions** are proposed new entities and types, or updates to existing ones, which you can review from your actions queue. Suggestsions may be generated by HASH's in-built AI, produced by [flows](/guide/flows), or submitted by other users (where permissions allow). -- **Drafts** are changes to information in one of your [webs](/guide/webs) which have not yet been persisted. Drafts could relate to entities or types which you previously began creating or editing, but for whatever reason did not finish. Drafts can be viewed and furthed edited or saved/discarded from here. diff --git a/content/hashdotai/guide/07_inbox/02_notifications.mdx b/content/hashdotai/guide/07_inbox/02_notifications.mdx deleted file mode 100644 index 0366ee6c4da..00000000000 --- a/content/hashdotai/guide/07_inbox/02_notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Notifications" -description: "Information and alerts relevant to you" -metaTitle: "Notifications - HASH" -metaDescription: "In HASH, notifications make you aware of information that is time-sensitive, important, or which may otherwise be of interest." -sidebarTitle: "Notifications" -sidebarIcon: https://app.hash.ai/icons/docs/inbox-notifications.svg ---- - -# Overview - -**Notifications** make individual users of HASH aware of information relevant to them. - -# Example Notifications - -For example, you might find the following notifications in your inbox: - -- a reminder you created has become due; -- another user [shares](/guide/sharing) a page with you, or [@mentions](/guide/webs/users#mention) you in a document -- an urgent (time-sensitive) or critical (important) [action](/guide/inbox/actions) requires your attention - -Notifications always originate from one of the following sources: - -1. other [users](/guide/webs/users)' actions; -1. some [flows](/guide/flows), which may trigger a [notification](/guide/flows/actions#notification); -1. HASH itself, for example when an account security or billing matter requires your attention. - -# Controlling Notifications - -You can [control which notifications](/guide/account/notifications) you receive from the "Inbox Settings" page. diff --git a/content/hashdotai/guide/07_inbox/WIP_03_messages.mdx b/content/hashdotai/guide/07_inbox/WIP_03_messages.mdx deleted file mode 100644 index ca20687717c..00000000000 --- a/content/hashdotai/guide/07_inbox/WIP_03_messages.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Messages" -description: "Direct and private communication in HASH" -metaTitle: "Messages - HASH" -metaDescription: "Messages sent in HASH allow you to directly and privately communicate with one or more other users." -sidebarTitle: "Messages" -sidebarIcon: https://app.hash.ai/icons/docs/inbox-messages.svg ---- - - - Messaging is not yet available in HASH. If you'd like to help beta test this - feature, [create an account](/signup) and we'll let you know when it's ready. - - -# Overview - -Messages allow HASH users to communicate directly and privately with each other: one-on-one, or in groups. diff --git a/content/hashdotai/guide/07_inbox/WIP_04_notes.mdx b/content/hashdotai/guide/07_inbox/WIP_04_notes.mdx deleted file mode 100644 index 1a35a01bfc0..00000000000 --- a/content/hashdotai/guide/07_inbox/WIP_04_notes.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Notes" -description: "Capture unstructured information and thoughts in HASH" -metaTitle: "Notes - HASH" -metaDescription: "Learn about notes in HASH, whichl let you quickly capture unstructured thoughts and other information." -sidebarTitle: "Notes" -sidebarIcon: https://app.hash.ai/icons/docs/inbox-notes.svg ---- diff --git a/content/hashdotai/guide/08_sharing/00_index.mdx b/content/hashdotai/guide/08_sharing/00_index.mdx deleted file mode 100644 index 676cf74c0b7..00000000000 --- a/content/hashdotai/guide/08_sharing/00_index.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Sharing" -description: "Collaborating with others" -metaTitle: "Sharing - HASH" -metaDescription: "Sharing lets you provide other people with access to any type, page or entity you have the permission to manage, in HASH" -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/sharing-overview.svg ---- - -# Introduction - -By default, the information you create in your personal web is _private_. However, it's easy to publicly publish or selectively share any type or any entity (including pages) in HASH. This allows you to share some things with others, while controlling access to sensitive information. - -# Shared webs - -The easiest way to collaborate with others in HASH is to create an [organization](/guide/webs/orgs), providing you with a 'shared web' accessible to all of its members. Learn more about [creating an org >](/guide/webs/orgs#create) - -# Sharing directly with others - -You can also share individual entities (including pages) and types directly in HASH with other [users](/guide/webs/users), on a one-by-one basis; [orgs](/guide/webs/orgs), providing access to all of their members; and the public (granting unrestricted view permission to anybody who visits the page). - -## Sharing pages - -The process for sharing [pages](/guide/pages) is straight-forward. Simply click the "Share" button in the top-right of each page, directly beneath the navbar, and specify which peopole should have what level of access. - -When you make a page visible to others, you also provide the ability to view all of the blocks on a page, as well. - -However, linked entities referenced in blocks must be shared separately. For example, if your page contains a table of people, which are private within your web, externals viewers of the page won't be able to see the entities in your table, unless you make these public, or otherwise share access to them, as well. - - - We'll be introducing improved controls for sharing pages in the future, - allowing for easier sharing of linked entities, and previewing of the exact - data that other users can see. - - -## Sharing entities - -The process for sharing [entities](/guide/entities) in similar to that described for [sharing pages](#pages) (above). Simply click the "Share" button in the top-right corner of any entity's page. - - - In the future, when sharing an entity, you'll be advised if it has any linked - entities, and asked if you want to share these, too. - - -## Sharing types - -Currently in HASH, all [types](/guide/types) are public. - - - In an upcoming update, we'll be allowing types to be "unlisted", making them - discoverable only by others with the URL. Further down the line, **Plus**, - **Team** and **Ultra** users will be able to create fully private types. - - -## Sharing flows - -Currently in HASH, all [flows](/guide/flows) are private to members of the web they belong to. This means that only you will be able to see flows in your [personal web](/guide/webs#personal-webs), and only the members of a [shared web](/guide/webs#shared-webs) will be able tosee the flows within it. - - - In an upcoming update, we'll allow flows to be "published", as well as shared - directly with specific users outside of the web in which they reside. - - -# Advanced permissions - -For more information about advanced permissions in HASH, beyond simple sharing, see [permissions >](/guide/webs/permissions) diff --git a/content/hashdotai/guide/08_sharing/01_peers.mdx b/content/hashdotai/guide/08_sharing/01_peers.mdx deleted file mode 100644 index 1ff23e89705..00000000000 --- a/content/hashdotai/guide/08_sharing/01_peers.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: "Peers" -description: "Types and entities that refer to the same thing" -metaTitle: "Peers - HASH" -metaDescription: "Peers of an entity or type are other entities or types which refer to the same thing" -sidebarTitle: "Peers" -sidebarIcon: https://app.hash.ai/icons/docs/sharing-peers.svg ---- - -# Overview - -Because HASH is a globally-connected database in which every user has their own web, it is commonly the case that the same "thing", whether it be an entity or a type, live in lots of different users' webs. - -HASH is designed to make it easy to convert and cross-walk between these "peers". - -# What are peers? - -Peers of a type or entity are other types and entities which refer to the same "thing". - -Types and entities may be considered "the same" as one another in a few different ways: - -1. **Semantic** sameness: two or more types may refer to the same concept, and two or more entities refer to the same subject -1. **Structural** sameness: multiple types or multiple entities may expect the exact same attributes (properties and links) -1. **Complete** sameness: types and entities may be _both_ semantically _and_ structurally identical - -## Semantic sameness - -### Types - -Types are said to be semantically identically when they refer to the same type of thing. - -Two types which refer to the same concept, or thing, are not necessarily guaranteed to define the exact same set of expected attributes. For example, let's assume two different people create a `Dog` type in HASH. - -The first `Dog` type creator is a vetinarian. They care about certain characteristics of the dog such as its `Name`, `Age`, `Weight`, and `Medical History`. - -The second `Dog` type creator is a dogwalker. Like the veterinarian, they care about the dog's `Name`, but they also want to know its `Favorite Toy`. Conversely, its `Weight` doesn't matter. - -Both the veterinarian and the dogwalker have created types that unmistakably refer to the same real-world concept, a dog, but have specified different expected attributes, reflecting those characteristics that are important to them. - -### Entities - -Any number of entities may refer to the same exact subject, but are not guaranteed to use the same types or attributes to describe it. - -## Structural sameness - -### Types - -When two types are literally identical in terms of the attributes (properties and links) they define as expected, we say that they are "structurally" the same as each other. - -In the real world, semantically different concepts are never _perfectly_ "structurally the same". But when concepts are represented in abstract form, they may often appear to be structurally similar or identical, with the same set of relevant attributes deemed to be important, in spite of them representing very different things. - -For example, consider two different users' simplified entity type definitions. One defines "Automobile Repair Shop" and another defines "General Practice Doctor's Office". Neither user has added much specialized information to these entity types, creating them quickly for purposes unknown to us. Both entity types outline the exact same set of expected property types: - -- Opening Time -- Closing Time -- Address -- Telephone Number -- Website - -Although an `Automobile Repair Shop` and a `General Practice Doctor's Office` are clearly semantically different things, serving very different needs, and rarely if ever being substitutable for one another... in this case their type definitions are _structurally_ identical. - -### Entities - -Different entities may be structurally the same as each other if they are of the exact same type(s), and their attribute values are identical. For example, two `Person` entities may both share the same `Preferred Name` and `Date of Birth`, with no other data present, appearing structurally identical to each other. However, we might know that they are not in fact semantically the same (i.e. duplicates of one another), but in fact refer to two different people. - -## Complete sameness - -### Types - -If two types are both semantically and structurally identical, such as when a type is duplicated in HASH, or recreated exactly, they are said to be "completely" the same. - -### Entities - -If two entities are both semantically and structurally identical, they can also be said to be "completely" the same, or "duplicates" of one another. Where the same sources of information -- for example a scraped webpage, or imported file -- are ingested by many users, it is not uncommon to find such duplicate entities across multiple webs. - -# Crosswalking - -Crosswalking is the attempt to identify, and subsequently link, both types and entities which refer to the same semantic thing. - -## Crosswalking entities - - - We'll be adding docs for defining peer relationships between entities shortly. - - -## Crosswalking entity, property & link types - - - We'll be adding docs for crosswalking between types shortly. - - -## Converting between data types - - - We'll be adding docs for creating data type groups shortly. - - -## Automatic crosswalking - -We plan on introducing tooling to assist in the automatic crosswalking of types and entities in the near future. - -In the meantime, you can explicitly define peer relationships between types and entities by following the instructions above. If you're interested in the underlying mechanics of what we're working on, you can also read about some of the interesting challenges in automating crosswalking below. - -Challenges in automatically crosswalking entities: - -- Semantically identical entities may not share an exact type. For example, people may use different `Politician` types to refer to `Barack Obama`, while meaning the same person. -- Semantically identical entities may exist without even having the same semantic types declared on them in the first place. For example, the Internet Movie Database (IMDB) might not bother to assert that `Barack Obama` has a `Politician` type at all, instead assigning him the type of `Executive Producer` for his involvement in movies such as _American Symphony_. While this is not what most people will be primarily familiar with him as, the `Barack Obama` entity here is (in this example at least) semantically the same entity referred to by those using the `Politican` type. - -Challenges in automatically crosswalking entity-, link- and property- types: - -- Structural sameness does not imply semantic similarity: two types which expect the exact same attributes may be _more likely_ to be the same as one another, but they do not _necessarily_ refer to the same thing. -- Semantic sameness is not the same as semantic similarity: two types may be extremely similar, while one or both of creators perceive some nuance or difference between them. For example: - - Two people may create `Artwork` types, but disagree with each other on what kinds of things qualify as `Artwork`. These types may even be structurally the same as one another, but still semantically differentiated in subtle, hard-to-ascertain ways. - - Two businesses may create `Staff Member` types. One may include temporary workers and contractors in this definition (producing a 'total headcount'), while another may exclude them as they may not legally qualify as "employees". - -Challenges in automatically converting data types: - -- Many data types are not convertible between each other -- Some data types may only be perfectly convertible one-way (e.g. a hash function) -- Some data types may be imperfectly convertible, which may be good enough sometimes but not other times (e.g. approximated vector embedding reversal) -- Where explicit conversion functions are provided to map between data types, resolution between two data types may be achieved via conversion chains, but not directly - -## Crosswalking outside of HASH - -In the short term, you'll only be able to crosswalk between entities and types that live within a [HASH web](/guide/webs). - -If you want to crosswalk your own representation of an entity (e.g. a person like **Alan Turing**) with another representation of the same person on the world wide web (outside of HASH), for example the [Wikidata entry for Alan Turing](https://www.wikidata.org/wiki/Q7251), you'll first need to sync it with HASH, so the information is represented as an entity in a web. - -We plan on syncing several major linked open data repositories (including Wikidata) with HASH. If you're involved with one of these, or if there's an open data project you'd like to crosswalk with, or if you're simply interested in helping out with this effort, please [get in touch](/contact). - -In addition to crosswalking your representation of an entity with another, you can also set up [AI agents](/guide/agents) in HASH to monitor an external webpage for changes, and suggest or make updates to your own entity in response. Full details of these updates, including their provenance (e.g. source/origin and datetime) are captured as part of the [history](/guide/webs/history) available on every entity in HASH. diff --git a/content/hashdotai/guide/08_sharing/WIP_XX_feed.mdx b/content/hashdotai/guide/08_sharing/WIP_XX_feed.mdx deleted file mode 100644 index 93b6f462ed1..00000000000 --- a/content/hashdotai/guide/08_sharing/WIP_XX_feed.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Feed" -description: "Updates from others directly within HASH" -metaTitle: "Feed - HASH" -metaDescription: "Your feed lets you see events, news and updates from other people, groups and brands you're connected to on HASH" -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/sharing-feed.svg ---- - - - Feeds are not yet generally available in HASH. If you'd like to help beta test - Feeds, fill in the form below. - - -# Coming soon - -**Feeds** contain updates from people you are connected to on HASH. Your feed helps surface information you care about, and is powered by an open algorithm. You can choose what algorithm is used to populate your feed, and switch between modes at any point in time (e.g. "distract me", "help me focus", "improve my mood", etc.) - -Feeds contain information posted by people directly to HASH, and in the future will contain support for updates posted by people in your network to certain other sites (namely those which support the ActivityPub protocol, e.g.: Threads from Instagram, Mastodon). Further down the line we intend to introduce support for incorporating updates from additional social networks, as well (e.g. Twitter, Facebook, Instagram; subject to legal and technical constraints). - -Feeds are coming soon to HASH. To register for early-access, fill in your email address below. diff --git a/content/hashdotai/guide/09_integrations/00_index.mdx b/content/hashdotai/guide/09_integrations/00_index.mdx deleted file mode 100644 index a11bff5f504..00000000000 --- a/content/hashdotai/guide/09_integrations/00_index.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Integrations" -description: "Connecting services to HASH" -metaTitle: "Integrations - HASH" -metaDescription: "HASH integrations allow actions to be taken and data to be 2-way synced, in realtime, with a variety of external applications and datastores" -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/integrations-overview.svg ---- - -# Introduction - -HASH is not designed to work in standalone, but to integrate and supercharge other services, enabling actions within — and synchronizing information between — lots of different places. - -HASH integrations don't just let you do things and access information in other applications, but they also **2-way sync** all of your available information, wherever possible. This makes HASH integrations fundamentally different to those you might be used to in other applications, and is a core part of what makes HASH an effective _operating system_. - -Data from applications that you integrate with HASH is represented in your web as [entities](/guide/entities), like anything else in HASH. This makes it accessible in [flows](/guide/flows), usable in [apps](/guide/apps), referenceable in [pages](/guide/pages) and loadable in [blocks](/guide/pages/blocks). - -**What this means:** we believe that you should never have to blindly "switch" from using one app to another. With HASH, you can sync information in and out (two-ways) through a wide variety of integrations. This lets you migrate data over in a safe, secure fashion once you've proven things work as expected — without any risk of data loss or service interruption. If you're rolling HASH out at an organization, it also means users within your org can gradually switch to HASH over time, moving in cohorts, and/or continuing to use their existing favorite (legacy) tools side-by-side, when preferred. - -# Setting up an integration - -Connect an external service for use with your own private web, or a shared web, from the [Settings > Integrations](https://app.hash.ai/settings/integrations) page in HASH. - -# Types of integrations - -Integrations in HASH can trigger and perform actions on your behalf, as well as sync information (i.e. [entities](/guide/entities)) between your [web](/guide/webs) and an external service. - -## Performing actions - -Once an integration has been set up, a number of "actions" may become available for use in [flows](/guide/flows) and by AI [agents](/guide/agents) operating on your behalf. You'll need to approve an AI agent's access to new kinds of actions, before they're used for the first time. The kinds of actions available will differ between integrations. - -## Syncing information - -### 2-way sync - -Wherever possible, we ensure that integrations are able to both ingest information from external services, and write the changes you make back out. This lets you: - -- build tools and interfaces ([apps](/guide/apps)) atop data in HASH -- use HASH as a synchronization engine, keeping multiple external applications or data-sources in sync -- edit information direclty in HASH, providing you with a single view into your information, enabling changes to be syndicated to multiple other systems upon save - -### Partial sync - -Sometimes, we can't offer full 2-way sync for a given integration, because an external service's Application Programming Interface (aka. "API", a thing used by other programs, such as HASH, to talk to a service), may allow "reading" information, but not "writing" it. - -In such cases, we'll let you know what information we can both pull and push (if any), and what we can only "ingest". You'll then have the choice as to how this information is stored: - -1. **Continuously synced "read-only" entities:** you'll still be able to see entities in your web, and visualize them in [blocks](/guide/pages/blocks), but you won't be able to edit them in a way that results in them becoming out of sync with the data's original source. If you're continuing to use an external tool side-by-side HASH, this is usually what you want. -1. **One-time import:** if you're planning on switching from another application to HASH, and want to do it all at once, you can do so by one-time importing data. Any changes to the data in HASH won't be written back out to the external service, and any further changes to data stored in the external service won't be reflected in HASH, either. - -You can always convert "read-only" entities to fully editable ones later, effectively migrating from (1) to (2) when you're ready. - -Alternatively, you can try working around the API-limitations imposed by certain external services, using [flows](/guide/flows). With flows, you can set up your own [actions](/guide/flows/actions) (utilizing AI) that mimic how a human would interact with a service. For example, an action to "access a given service, find a given entity, and update that entity with a new given value" might be triggered by a [watch](/guide/flows/triggers) step activated in response to a change to an entity in your graph. These flows can be less than 100% reliable, and resource-intensive to run, but are sometimes an appropriate solution to keeping information synced between services. - -# Available integrations - -A growing number of integrations are currently available for HASH, with more under development. For a complete list of existing integrations along with guides to using them, as well as the chance to vote on what integrations are built next, visit the [integrations directory](/integrations). diff --git a/content/hashdotai/guide/10_plugins/00_index.mdx b/content/hashdotai/guide/10_plugins/00_index.mdx deleted file mode 100644 index d9934adceb7..00000000000 --- a/content/hashdotai/guide/10_plugins/00_index.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Plugins" -description: "Use HASH inside your existing tools" -cover: https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/2f297835-5e31-40ae-68b2-d7a78dabd400/public -metaTitle: "Plugins - HASH" -metaDescription: "Plugins provide direct access to core HASH functionality and your data from within external applications, such as browsers." -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/plugins-overview.svg ---- - -# What are plugins? - -**Plugins provide access to HASH from inside of other applications.** For example, the HASH [browser extension](#browsers) allows you to add HASH to your favorite web browser, automatically inferring entities from the web-pages you visit, and allowing you to clip information from around the web as you go (easily adding it to your HASH web). - -# Available plugins - -## Browser extension - -Available for [Chrome](https://chromewebstore.google.com/detail/hash-ai/nljhmbdifehhnkhinhfooebllaajlddb), Edge, Firefox and Safari on macOS, Windows and Linux. If you use another browser, [get in touch](/contact). - -## ChatGPT - -HASH for ChatGPT (aka. "**HashGPT**") lets you access the contents of your HASH web from within the official ChatGPT web and mobile apps. You can find [HashGPT on the official GPT Store](https://chat.openai.com/g/g-i9t0QlD9c-hashgpt), and read more about it in the AI [chat](/guide/agents/chat#hashgpt) section of this user guide. - -# Vote for new plugins - -The following proposed new plugins are currently under consideration: - -- **Figma:** browse and insert auto-updating information from HASH into Figma and Figjam files, keeping your designs and files up-to-date with your information stored in HASH. diff --git a/content/hashdotai/guide/10_plugins/WIP_01_browsers.mdx b/content/hashdotai/guide/10_plugins/WIP_01_browsers.mdx deleted file mode 100644 index c24d657f546..00000000000 --- a/content/hashdotai/guide/10_plugins/WIP_01_browsers.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Browser Extensions" -description: "Integrating HASH with your web browser" -metaTitle: "Browser Extensions - HASH" -metaDescription: "The HASH browser extension allows users to integrate HASH directly into their everyday browsing, accessing information that requires authentication and providing users with new capabilities." -sidebarTitle: "Browsers" -sidebarIcon: https://app.hash.ai/icons/docs/flows-creating.svg ---- - -_Coming soon._ diff --git a/content/hashdotai/guide/10_plugins/WIP_02_assistants.mdx b/content/hashdotai/guide/10_plugins/WIP_02_assistants.mdx deleted file mode 100644 index 9b94841221d..00000000000 --- a/content/hashdotai/guide/10_plugins/WIP_02_assistants.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "AI Assistants" -description: "Integrating HASH with your AI assistant" -metaTitle: "Connecting AI Assistants - HASH" -metaDescription: "HASH can be connected to AI assistants, providing them with the ability to securely query the information stored in a user or organization's web." -sidebarTitle: "Assistants" -sidebarIcon: https://app.hash.ai/icons/docs/flows-creating.svg ---- - -_Coming soon._ diff --git a/content/hashdotai/guide/11_pages/00_index.mdx b/content/hashdotai/guide/11_pages/00_index.mdx deleted file mode 100644 index 0c5bb317843..00000000000 --- a/content/hashdotai/guide/11_pages/00_index.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "Pages" -description: "Canvases and documents" -metaTitle: "Pages - HASH" -metaDescription: "HASH supports creating, editing, using and publishing two types of pages: free-form canvases and linear documents." -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/pages-overview.svg -visibility: "Hidden" ---- - - - Creating and editing pages is only available to **Team** and **Ultra** users - of HASH. - - -# Introduction - -Pages let you render, manipulate, and create [entities](/guide/entities) and their [attributes](/guide/entities/attributes) through [blocks](/guide/pages/blocks). - -# What are pages? - -Pages consist of several things: - -1. A **title** and an **icon**. These help you identify pages quickly, appearing at the top of each page, as well as in the left-hand sidebar, navigational breadcrumbs, and in other links to pages. -1. The ability to insert any number of [blocks](/guide/pages/blocks). Pages allow you to insert **blocks**, which are quite literally the fundamental building blocks of HASH, used to contain and display any and all information. -1. **Comments**, which can be attached to blocks, and allow users to react to or reference information in the context of a page (for example, asking questions, or adding their own thoughts). - -!["A page with blocks and a comment"](https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/1e31a95b-e62c-48c3-1df4-0becdb5f3f00/public) - -# Types of pages - -Pages come in two forms: - -- [Documents](/guide/pages/documents) which support displaying blocks linearly -- [Canvases](/guide/pages/canvases) which support the freeform arrangement of blocks, a bit like a whiteboard. These work great for brainstorming, visually arranging information, and when working in 3D/VR and AR/mixed reality spatial environments (for example using the Apple Vision Pro, or Meta Quest). - -## Accessing pages - -All of the pages you have access to can be found in your left-hand sidebar, under the name of the [web](/guide/webs) they exist inside of. Each page (like any entity) only exists in one web at a time. However, you can easily drag and drop pages in the sidebar to re-order them, or even move them between webs. - -## Creating a page - -You can click the `+` button in the left-hand sidebar of HASH, next to the section bearing name of the web you wish to create them inside. - -You can also create a new page using the `+` button in the top-right of navigation bar. New pages created from here will by default be added to your private web, unless you select another location at the point of creation. Pages can easily, however, be moved later. - -## Archiving a page - -You can archive a page if you no longer need it by clicking the `…` button to the right of its title in HASH's left-hand sidebar, and selecting “Archive page”. Archived pages do not appear in the sidebar, and will be excluded from appearing in HASH search results by default, but can still be loaded by navigating directly to a page's full URL. When viewing an archived page, a banner at the top of the page clearly communicates that the current page has been archived. - -## Sub-pages - -Pages can have an unlimited number of sub-pages. In terms of features, sub-pages are identical to pages, differing only in that they are nested under a parent page in the left-hand sidebar. A page with subpages will have an arrow shown to the left of its title in the sidebar. Clicking this icon will show or hide the list of sub-pages. When viewing a sub-page, breadcrumbs at the very top of the page will show its parent page(s). - -## Sharing pages - -By default, pages are private to members of the web they are contained within. However, stricter or more permissive sharing options may be chosen. - -All pages within a web are stored in its page tree. However, just because a page appears in a tree, it doesn't mean that the page will be visible to everybody else with access to the web (i.e. all of its other members). Private pages can exist within shared webs, visible to a limited subset of an [org](/guide/webs/orgs)'s members. - -When making pages publicly viewable to users who are not members of a web, by default it is still the case that only members of the web which owns the page will be able to edit it. - -Learn more about [sharing >](/guide/sharing) diff --git a/content/hashdotai/guide/11_pages/01_documents.mdx b/content/hashdotai/guide/11_pages/01_documents.mdx deleted file mode 100644 index f272d10492b..00000000000 --- a/content/hashdotai/guide/11_pages/01_documents.mdx +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "Documents" -description: "Standard linear pages" -metaTitle: "Documents - HASH" -metaDescription: "Documents are pages composed of blocks arranged in a fixed, linear order. In English this is top-to-bottom and left-to-right, but in other languages this may vary." -sidebarTitle: "Documents" -sidebarIcon: https://app.hash.ai/icons/docs/pages-documents.svg ---- - - - Creating and editing documents is only available to **Team** and **Ultra** - users of HASH. - - -# Overview - -Documents are a type of [page](/guide/pages) that allow for blocks to be inserted and arranged linearly (e.g. top-to-bottom, left-to-right) within columns. - -Whatever kind of information you're viewing, creating or editing when using documents in HASH, you'll interface with it through a [block](/guide/pages/blocks). - -# Inserting blocks - -When you create a new document in HASH, an empty "Paragraph" block will automatically be inserted at the top of the page and your cursor will be placed inside the block, ready to type. HASH does this so that pages can be used to quickly capture writing. - -Pressing the `/` key on your keyboard, while in an empty block (such as the one each page starts out with) will open a menu containing the different types of blocks available in HASH. You can scroll through this list or continue typing to search. Hitting return will insert the currently selected block in that menu, but you can also click on the block you want. The `/` command works in almost any text-based block. - -Hitting the return key `⮐` in the paragraph block will create a new empty block below the original. Each paragraph on a page exists an individual block. You can tell this from the `...` context menu on the left of the block, from the comment button on the right of the block, and from the `—-[+]—-` button which appears above and below the paragraph when you hover. Clicking on this button provides another means of inserting blocks onto a page, in the given location that the pressed button appeared. - -!["The insert block button"](https://hash.ai/cdn-cgi/imagedelivery/EipKtqu98OotgfhvKf6Eew/d54cea75-8635-415c-ffa3-163990c6f200/public) - -The "Paragraph" block is the most basic sort of block in HASH, and only one of many different kinds. - -# Managing blocks - -The `...` button shown to the left of the block while hovering over it is the block's context menu, providing a set of options: - -1. **Copy link**: copies a link to this specific block to your clipboard. Opening this link will open the page and show a visual highlight next to the block which was linked to. -1. **Edit block**: opens the "editor" for the entity attached to this block in a side-bar overlay on the right of the screen. Edits you make to the entity will be reflected in the block immediately. -1. **Configure**: opens the block’s configuration menu, if available. Not all blocks have configuration options. Those that do allow for things like the customization of the block’s UI or the toggling of different features. -1. **Delete**: removes a block from the current version of a page. - -You can also re-order blocks by clicking and dragging on the `...` conetxt menu icon. As you drag, you’ll notice a line will appear which indicates where the drop will move to in the order of blocks on the page if you drop it. - -# Using blocks - -Blocks are generally used for either (a) capturing new information (like our paragraph block), or (b) loading and display existing information (such as a chart block, which generates a graph plotting the values of some entities). - -However, some blocks may be used for both: for example a table block may query and display entities already in your graph, additionally making them editable, while allowing you to create new entities that match the query parameters, as well. - -Other blocks may not be used for either. For example, the "Minesweeper" game block provides on-page fun, but doesn't save your results or persist your score anywhere else. It is simply a "window" into a game. - -You can attach a comment to a block by clicking the speech bubble icon, which appears as you hover on the right. Comments are attached to the whole block. - - - In the future we'll support commenting on specific elements within blocks, as - well as on blocks themselves. - - -# Using chips - -In addition to the `/` command, you can type `@` inside a text block, as well as when writing a comment, to _mention_ entities or other users. Learn more about [chips >](/guide/pages/chips) diff --git a/content/hashdotai/guide/11_pages/02_canvases.mdx b/content/hashdotai/guide/11_pages/02_canvases.mdx deleted file mode 100644 index 045ca033fc3..00000000000 --- a/content/hashdotai/guide/11_pages/02_canvases.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Canvases" -description: "Freeform pages" -metaTitle: "Canvases - HASH" -metaDescription: "Canvases are pages composed of blocks arranged in a freeform manner, positionable anywhere on the page" -sidebarTitle: "Canvases" -sidebarIcon: https://app.hash.ai/icons/docs/pages-canvases.svg ---- - - - Creating and editing canvases is only available to **Team** and **Ultra** - users of HASH. - - -# Overview - -Canvases are a kind of [page](/guide/pages) which allow you to insert and arrange blocks in any way you choose. With canvases you can drag and drop blocks spatially, in any way choose, along X/Y/Z axes: displaying them overlaid, in front or behind — or adjacently, side-by-side or atop — one another. - -# Creating a canvas - -Click the `+` button in the top-right of navigation bar, and select "Canvas". New canvases created from here will by default be added to your private web, unless you select another location at the point of creation. - -# Ezample use cases - -Use cases for canvases include: - -- Dashboards -- Collaborative whiteboarding -- Tool-building: laying out blocks in more complicated or fluid layouts than allowed by [documents](/guide/pages/documents) -- Working with information spatially diff --git a/content/hashdotai/guide/11_pages/03_blocks.mdx b/content/hashdotai/guide/11_pages/03_blocks.mdx deleted file mode 100644 index 45e756fa1c9..00000000000 --- a/content/hashdotai/guide/11_pages/03_blocks.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: "Blocks" -description: "At the heart of pages" -metaTitle: "Blocks - HASH" -metaDescription: "Blocks are interactive rectangles on a page that can be viewed or edited, load data, or provide any other functionality" -sidebarTitle: "Blocks" -sidebarIcon: https://app.hash.ai/icons/docs/pages-blocks.svg ---- - -# What are blocks? - -Blocks are interactive rectangles on a page that can be viewed or edited, used to load data, or provide any other functionality. - -# Types of blocks - -Blocks can literally contain _anything_ on a page, so there's no real way to categorize them all. Nevertheless, most blocks in HASH can be thought of as **text**, **media**, **data** or **action** blocks. - - - - -Blocks for capturing and/or displaying text are the most commonly used kinds of -blocks in HASH - - - - - - -Blocks that are used to display or support interacting with multimedia content -such as images, videos, or 3D models. - - - - - - -Blocks for visualizing and interacting with entities. e.g. table, kanban, etc. - - - - - - -Action blocks can be programmed to respond to user behavior, allowing for the -creation of interactive "Apps" in HASH - -By allowing the behavior of some blocks to be "programmed", we can allow block-users to customize how blocks function when they are interacted with by end-users. For example, a block-user might "map" certain kinds of blocks (such as "button" blocks) to actions, enabling them to perform specific functions when clicked. These "action blocks" are a key part of how [apps](/guide/apps) are built in HASH. - - - - - - -There's no limit to what a block can do. For example, there are interactive -gaming blocks, such as the Minesweeper block, as well as AI Chat blocks. - -If you have your own idea for a block, you can also develop your own custom block and run it within HASH. Anybody who can code can build their own block to do absolutely anything in HASH. - -Although not part of _HASH_, custom blocks are user-developed blocks which can be inserted into any [page](/guide/pages) in HASH. - -More information about building your own blocks can be found in the [HASH Developer Docs](https://hash.dev/docs/blocks). - - - -# Inserting blocks onto pages - -You can insert blocks onto any page by pressing the forward-slash (`/`) key while no existing block is selected. - -# Configuring blocks - -Blocks can currently be configured using each individual block's "configuration bar" (which floats above the block, when selected). - - - We'll be replacing block configuration bars with a much more powerful "block - sidebar", which will appear on the right-hand side of any - [document](/guide/pages/documents) and at the bottom of a - [canvas](/guide/pages/canvases), when a block is selected. - diff --git a/content/hashdotai/guide/11_pages/04_chips.mdx b/content/hashdotai/guide/11_pages/04_chips.mdx deleted file mode 100644 index 2ccab4dc05d..00000000000 --- a/content/hashdotai/guide/11_pages/04_chips.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: "Chips" -description: "Inline dynamic information" -metaTitle: "Chips - HASH" -metaDescription: "Chips can be used to insert information dynamically inline within text (e.g. attribute values, links to entities, etc.)" -sidebarTitle: "Chips" -sidebarIcon: https://app.hash.ai/icons/docs/pages-chips.svg ---- - - - Inserting chips is only available to **Team** and **Ultra** users of HASH. - - -By pressing certain keys while within a text block you can insert one of a number of 'chips' which provide rich information within documents. - -## Entity chips - -Type `@`, start typing to narrow your search, highlight the entity you wish to insert, and click the entity -- or press the enter/return key (`↲`) -- to insert it onto your page. You can `@` mention _any_ kind of entity. For example, any thing found in your web, or even another `@user` of HASH. - -## Attribute chips - -Type `@`, and hover over or keyboard-navigate to the entity whose attribute (property or link value) you wish to insert. Once the entity has been highlighted, press the right arrow key on your keyboard `→` to expand the sub-menu to show the entity's attributes, and then tab up (`↑`) or down (`↓`) between properties until you've selected the one you wish to insert. Press the enter or return key on your keyboard (`↲`) to insert the chosen attribute onto the page. This attribute chip will then be kept automatically in sync with the underlying value, even if it changes on the entity in question. This makes it easy to create pages which remain up-to-date, and don't atrophy over time, like normal documents. - -## Calculation chips - -**Coming soon.** By pressing the `/` key and selecting 'Calculation (Inline)', you can type out a math formula in full and insert its result in a chip (with the underlying calculation, i.e. your formula, available upon hovering over or tapping the chip). - -## Datetime chip - -**Coming soon.** By pressing the `/` key and selecting 'Datetime', or by typing `@` and typing a specific date or time, you can insert a 'datetime chip'. _EXPLAIN_ - -## Currency chip - -**Coming soon.** By pressing `$`, `€` or `£` on your keyboard, you can insert a 'currency chip'. This lets you display a monetary amount in a particular currency at a specific point in time, making it easy to see changes in its relative value over time ("today's value" inflation) or across exchange rates (forex conversions). Support for additional currencies is planned. - -If you insert an _attribute chip_ containing a value whose [data type](/guide/types/data-types) is `Currency`, we'll attempt to display all of the same information you'd get by using a _currency chip_. diff --git a/content/hashdotai/guide/11_pages/05_modes.mdx b/content/hashdotai/guide/11_pages/05_modes.mdx deleted file mode 100644 index 9fd928febfe..00000000000 --- a/content/hashdotai/guide/11_pages/05_modes.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Modes" -description: "Viewing, commenting & editing" -metaTitle: "Modes - HASH" -metaDescription: "The ability to view a page in HASH may be restricted to a particular 'mode'. For example, you may have the right to comment on a page, but not edit it." -sidebarTitle: "Modes" -sidebarIcon: https://app.hash.ai/icons/docs/pages-modes.svg ---- - -# Overview - -Depending on your [permissions](/guide/webs/permissions) within a [web](/guide/webs), you may or may not be able to take certain actions (including viewing, commenting, or editing) on a page. - -# Types of modes - -## "Edit" vs "view" - -- **Editable:** a page is fully editable. Click inside a block to edit it. -- **Editable (locked):** even with edit permission on a page, you may find it has been "locked" to prevent its accidental editing. It is easy to lock and unlock a page (when you have the appropriate permission to do so), by clicking the "Lock"/"Unlock" button in a page's header, next to the "Share" button. -- **View only:** a page cannot be edited. Blocks will be selectable, but not editable. Certain blocks may be interactive, but changes will not be persisted for other users. - -## Additional permissions - -Additionally, you may have the following capabilities available to you on a page: - -- **Comment:** you may be able to leave comments on a block, or with reference to a particular part of a page. -- **Suggest:** short of the ability to edit a page directly, you may have the ability to propose changes to a page (adding new information, or updating existing information). - -# Previewing modes - -Depending on your permissions, you may be able to toggle between different modes, to preview how a page looks to others. diff --git a/content/hashdotai/guide/11_pages/WIP_XX_comments.mdx b/content/hashdotai/guide/11_pages/WIP_XX_comments.mdx deleted file mode 100644 index 7d10e630a51..00000000000 --- a/content/hashdotai/guide/11_pages/WIP_XX_comments.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Comments" -description: "Inline commenting on pages" -metaTitle: "Comments - HASH" -metaDescription: "Comments in HASH allow users to inline mark up pages with thoughts, questions or other information." -sidebarTitle: "Comments" -sidebarIcon: https://app.hash.ai/icons/docs/pages-comments.svg ---- - -# Overview - -Comments diff --git a/content/hashdotai/guide/12_apps/00_index.mdx b/content/hashdotai/guide/12_apps/00_index.mdx deleted file mode 100644 index 292981ffe7f..00000000000 --- a/content/hashdotai/guide/12_apps/00_index.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Apps" -description: "Building and using apps" -metaTitle: "Apps - HASH" -metaDescription: "HASH Apps let you add and run best-in-class applications directly within your web" -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/apps-overview.svg -visibility: "Hidden" ---- - -# Coming soon - - - Apps are not yet generally available in HASH. If you'd like to help beta test - Apps as a user, fill in the form below. Alternatively, if you'd like to - develop an app that is available at launch, [contact us](/contact) to become - one of our launch partners. - - -# Introduction - -**Apps** are ready-made bundles of blocks, types and pages, which can be added to a web with one click. They work with data that already exists inside your web, without it ever leaving your system, providing you with secure, out-the-box access to workflows, tools and functionality that historically would only have been accessible in standalone applications (e.g. an external CRM, ATS, or ERP system). diff --git a/content/hashdotai/guide/13_simulations/00_index.mdx b/content/hashdotai/guide/13_simulations/00_index.mdx deleted file mode 100644 index 1b2cd152ec2..00000000000 --- a/content/hashdotai/guide/13_simulations/00_index.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Simulations" -description: "Simulation modeling in HASH" -metaTitle: "Simulations - HASH" -metaDescription: "HASH Simulations allow you to model and simulate the real-world in HASH" -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/apps-overview.svg -visibility: "Hidden" ---- - -# Coming soon - - - Simulations are not yet generally available in HASH. If you'd like to help beta test - them as a user, fill in the form below. Alternatively, [contact us](/contact) to learn - more about early enterprise access if you have an urgent need and budget in excess of - $20,000. - - -# Introduction - -**Simulations** in HASH allow you to explore the real world in-silico, through agent-based models (ABMs). This approach improves upon historical Discrete Event (DE) and System Dynamics (SD) forms of simulation, leveraging the now-widespread availability of compute resources and granular data to simulate systems in high-fidelity. The underlying engine that powers simulation modeling in HASH ([hEngine](https://hash.dev/docs/simulation) also supports running DE and SD models, but the traditional benefit these approaches offer of being "relatively simpler" is eliminated with HASH, which simplifies the process of building and using ABMs. - -## Agent-Based Modeling - -In HASH ABMs, [typed](/guide/types) [entities](/guide/entities) from a [web](/guide/webs) can be instantatied as agents. Alternatively, synthetic populations of "lookalike" agents — of any arbitrary size — can be dynamically generated from example entities in a web, or user-provided descritpions. diff --git a/content/hashdotai/guide/14_account/00_index.mdx b/content/hashdotai/guide/14_account/00_index.mdx deleted file mode 100644 index 106f7ef890e..00000000000 --- a/content/hashdotai/guide/14_account/00_index.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Accounts" -description: "Managing HASH accounts" -metaTitle: "Account Management - HASH" -metaDescription: "HASH accounts can be managed using a variety of tools." -sidebarTitle: "Overview" -sidebarIcon: https://app.hash.ai/icons/docs/account-overview.svg ---- - -# Your Account - -Your **user account** is home to your own _private web_, and all of your personal information in HASH is stored within it. - -You can manage your [security](/guide/account/security), [privacy](/guide/account/privacy), and [notification](/guide/account/notifications) settings from your [Account Settings](http://app.hash.ai/settings) page in HASH itself, as well as manage your [personalization](/guide/account/personalization) and [billing](/guide/account/billing) preferences. - -All users of HASH, including free users, can also [get support](/guide/account/support) at any time. - -# Types of Accounts - -There are three types of accounts in HASH: - -1. **[user](#users) accounts**, each representing an individual human, with its own web (e.g. [hash.ai/@d](https://app.hash.ai/@d)) -1. **[org](#orgs) accounts**, each of which corresponds to a shared web (e.g. [hash.ai/@soho](https://app.hash.ai/@soho)) managed by one or more users -1. **[bot](#bots) accounts**, which perform automated actions in HASH - -## Users - -### Uniqueness - -Your **user** account is used to uniquely identify you. You should not share access to it with anybody else. - -Our [terms](/legal/terms) state that you may only have **one** user account at a time, so you should not have an "additional" or separate login. - -If you want to collaborate with other users, you should use HASH's [sharing](/guide/sharing) functionality, or create an [org](/guide/webs/orgs) with its own shared web. - -### Upgrading a user account - -User accounts can either be **Free** or **Plus**. You can find out more and upgrade on the [pricing](/pricing) page. - -### Canceling a user account - -You can cancel your account and delete all of your information at any time by getting in touch with us via the [contact](/contact) form. Requests for deletion are processed promptly. If you'd simply like to take a break, you can also let us know, and we'll disable your account (preserving your information) until you're ready to return. - -## Orgs - -You can create an **org** account at any time by following the instructions on the [orgs](/guide/webs/org) page in the user guide. - -All org accounts are owned by _at least_ one user. The administrator(s) of an org can choose to provision paid **Team** or **Ultra** seats for the members of their org. More information and the ability to upgrade can be found on the [pricing](/pricing) page. - -## Bots - -**Bot** accounts are machine-operated accounts which cannot be logged into directly. They perform system functions and automated actions in HASH. For now, the only bots you'll see as you use HASH are built-in ones, such as the `HASH AI` bot. In the future, we'll document how technical users familiar with programming can create their own bots for HASH, as part of our [developer docs](https://hash.dev/docs). diff --git a/content/hashdotai/guide/14_account/01_profile.mdx b/content/hashdotai/guide/14_account/01_profile.mdx deleted file mode 100644 index 31f5ea01740..00000000000 --- a/content/hashdotai/guide/14_account/01_profile.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Profiles" -description: "How users and orgs appear to others" -metaTitle: "Profiles - HASH" -metaDescription: "All users and organizations on HASH have a public profile whose content and appearance they control." -sidebarTitle: "Profile" -sidebarIcon: https://app.hash.ai/icons/docs/account-profile.svg ---- - -# Overview - -All [users](/guide/webs/users) and [organizations](/guide/webs/orgs) on HASH have a public profile whose content and appearance they control. - -# Viewing a profile - -To view a profile, simply click on the name of the user or organization you'd like to view, in HASH. To quickly view [your own profile](https://app.hash.ai/me), click on your user avatar in the top-right corner of the HASH interface, and select "View profile". - -# Managing a profile - -For the most part, you can choose exactly what information appears on your profile page. However, certain details like your name, account name (e.g. `@example`), and avatar will always be visible to others. - -## Featured Types - -You can feature up to 5 types on your profile. diff --git a/content/hashdotai/guide/14_account/03_privacy.mdx b/content/hashdotai/guide/14_account/03_privacy.mdx deleted file mode 100644 index fdb6f7d94ef..00000000000 --- a/content/hashdotai/guide/14_account/03_privacy.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Privacy" -description: "Control what you share" -metaTitle: "Account Privacy - HASH" -metaDescription: "Control what you share with other users by managing your HASH privacy settings." -sidebarTitle: "Privacy" -sidebarIcon: https://app.hash.ai/icons/docs/account-privacy.svg ---- - -# Overview - -HASH supports both public and fully private usage, fitting any set of neeeds. This is true whether you're using the hosted version of HASH at [hash.ai](https://app.hash.ai/) or the self-hosted version locally or on your own servers. - -## Profile visibility - -Anybody with access to a HASH instance (such as the global instance hosted at **hash.ai**) can view the profiles of users who have accounts on that instance. For example, the profile of HASH's CEO can be found at [hash.ai/@d](https://app.hash.ai/@d). Profiles always include your **name** (e.g. `Dei Vilkinsons`), **username** (e.g. `@d`), and **avatar** (profile picture), alongside any other optional information you choose to appear, including: - -- **Shared webs**: Any [shared webs](/guide/webs#shared-webs) you're a member of, where your membership visibility is set to "public", will appear on your profile. Please note: organizations with **Ultra** subscriptions to HASH may enforce whether members of their webs have publicly visible (or private-only) membership and in such cases you may not be able to control whether or not their icon(s) appear on your profile. -- **Pinned types**: Up to five types can be pinned to your profile and made publicly visible; additional types may be added which are only visible to certain kinds of other users — for example, colleagues or family members who have mutual access to a shared web. -- **Website URL**: A link to an external webpage (e.g. a personal blog, portfolio, or website) can be added. -- **Location**: A physical location (e.g. `London, UK`) can be added to your profile, helping other users know where you are. -- **Social media**: Icons linking to social media accounts you've connected to HASH may be shown, letting others find you elsewhere around the web. - -Because viewing a HASH profile requires the ability to view a HASH instance, if you were to host HASH yourself locally (i.e. on your own computer without exposing it to the internet) only you would be able to see your profile page. - -## Content visibility - -Both [types](/guide/types) and [entities](/guide/entities) you create can be either public or private. In addition, they can be [shared](/guide/sharing) with specific users or organizations. - -### Default visibility - -By default: **types** you create are _public_, while **entities** are private to members of a web. This lets users build on and use each others' definitions of things (types) and develop a shared understanding of the attributes of them that are of mutual interest, without exposing any underlying data (entities). - -### Type visibility - - - Private types are only available to **Plus** users and orgs on **Pro** or **Ultra** plans. [Learn more →](/pricing) - - -From time-to-time you may wish to work on types that you keep private. For example: - -- **Types of a personal nature:** related to hobbies or interests you'd rather not make public; -- **Types that are commercially-sensitiive:** publishing certain types might reveal something unintended about your work, or a project that's in-progress. -- **Types that are "under construction":** sometimes, you may simply not yet be ready to make a type public yet, while it is edited and refined. - -While types _themselves_ don't contain sensitive information relating to individual entities, their mere existence in a web might be used to infer interest in a thing. For example, if a company were to create a public `Acquisition Target` type in their web, an observant third-party may reasonably assume they are engaged in M&A activity, without necessarily being able to ascertain who they are targeting (although in a small industry there may be limited choices, or in combination with other types this may be inferable). - -### Entity visibility - - - Private entities are available to all users. - - -Entities can be made public or private at any time. diff --git a/content/hashdotai/guide/14_account/06_billing.mdx b/content/hashdotai/guide/14_account/06_billing.mdx deleted file mode 100644 index 5a77b795b57..00000000000 --- a/content/hashdotai/guide/14_account/06_billing.mdx +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Billing" -description: "Usage, payments and more" -metaTitle: "Billing - HASH" -metaDescription: "Track usage, manage payment methods, cap expenditure, view upcoming invoices, download historical receipts and manage your HASH billing account." -sidebarTitle: "Billing" -sidebarIcon: https://app.hash.ai/icons/docs/account-billing.svg ---- - -# Overview - -All billing in HASH is currently managed outside of the application itself. [Contact us](/contact?topic=billing) if you wish to change your billing details or modify any aspect of your subscription. - -In the future, we'll be making both upgrade and cancelation flows available for self-service use via the user administration panel in HASH. diff --git a/content/hashdotai/guide/14_account/WIP_02_security.mdx b/content/hashdotai/guide/14_account/WIP_02_security.mdx deleted file mode 100644 index cd08a54f2d1..00000000000 --- a/content/hashdotai/guide/14_account/WIP_02_security.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: "Security" -description: "Keeping your HASH account safe" -metaTitle: "Account Security - HASH" -metaDescription: "Learn more about the controls that HASH provides to keep your account safe and secure." -sidebarTitle: "Security" -sidebarIcon: https://app.hash.ai/icons/docs/account-security.svg ---- - - - This page is coming soon. - - -# Overview - -_Coming soon_ diff --git a/content/hashdotai/guide/14_account/WIP_04_notifications.mdx b/content/hashdotai/guide/14_account/WIP_04_notifications.mdx deleted file mode 100644 index 8aba6277302..00000000000 --- a/content/hashdotai/guide/14_account/WIP_04_notifications.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Notifications" -description: "For the things you care about" -metaTitle: "Notifications - HASH" -metaDescription: "Control the kind of notifications you receive via HASH, and how you receive them." -sidebarTitle: "Notifications" -sidebarIcon: https://app.hash.ai/icons/docs/account-notifications.svg ---- - -# Overview - -Notifications in HASH make you aware of key pieces of information relevant to you. - -As a HASH user, you can control what kind of notifications you receive, and the ways in which you receive them. - -# Types of Notifications - -Notifications may be triggered... - -# Notification Methods - -You can receive notifications: - -- inside of HASH ("in-app") -- via email -- via Slack -- via Discord -- and via one of SMS, WhatsApp or Telegram. - -By default you will only ever receive notifications in-app and via email from HASH and you must explicitly opt-in from the "notifications" page of HASH, or while installing a plugin (e.g. the HASH Slack App) to receive notifications via any other method. diff --git a/content/hashdotai/guide/14_account/WIP_05_personalization.mdx b/content/hashdotai/guide/14_account/WIP_05_personalization.mdx deleted file mode 100644 index 4e80e7f1c3c..00000000000 --- a/content/hashdotai/guide/14_account/WIP_05_personalization.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Personalization" -description: "Tailor your experience" -metaTitle: "Personalization - HASH" -metaDescription: "Customize your HASH experience to your preferences and needs. Learn more about language, currency, date/time formatting, color, accessibility and other personalization settings." -sidebarTitle: "Personalization" -sidebarIcon: https://app.hash.ai/icons/docs/account-personalization.svg ---- - -# Overview diff --git a/content/hashdotai/guide/14_account/WIP_07_support.mdx b/content/hashdotai/guide/14_account/WIP_07_support.mdx deleted file mode 100644 index a8f7d45874b..00000000000 --- a/content/hashdotai/guide/14_account/WIP_07_support.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: "Support" -description: "Get help and support" -metaTitle: "Support - HASH" -metaDescription: "Get help and support with your HASH account." -sidebarTitle: "Support" -sidebarIcon: https://app.hash.ai/icons/docs/account-support.svg ---- - -# Overview - -# General Support - -- Contact us via the website: private, guaranteed response - -# Developer Support - -If you're building with HASH: - -- Public GitHub Discussions: https://github.com/orgs/hashintel/discussions - -# Enterprise Support - -- Support provided via Email, Slack, Discord -- SLA -- Contact us to request more information - -# Training - -- User Guide (this!) -- Tutorials -- Developer Docs -- Custom live training available (in-person/on-site, and 1:1 via Zoom) - contact us to learn more. diff --git a/content/hashdotai/guide/LICENSE.md b/content/hashdotai/guide/LICENSE.md deleted file mode 100644 index d9d661ad4db..00000000000 --- a/content/hashdotai/guide/LICENSE.md +++ /dev/null @@ -1,169 +0,0 @@ -# Attribution-NonCommercial-ShareAlike 4.0 International - -Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. - -### Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. - -* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). - -* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). - -## Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. - -### Section 1 – Definitions. - -a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. - -b. __Adapter's License__ means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. - -c. __BY-NC-SA Compatible License__ means a license listed at [creativecommons.org/compatiblelicenses](http://creativecommons.org/compatiblelicenses), approved by Creative Commons as essentially the equivalent of this Public License. - -d. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. - -e. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. - -f. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. - -g. __License Elements__ means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike. - -h. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License. - -i. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. - -h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License. - -i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. - -j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. - -k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. - -l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. - -### Section 2 – Scope. - -a. ___License grant.___ - - 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: - - A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and - - B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only. - - 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. - - 3. __Term.__ The term of this Public License is specified in Section 6(a). - - 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. - - 5. __Downstream recipients.__ - - A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. - - B. __Additional offer from the Licensor – Adapted Material.__ Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. - - C. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. - - 6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). - -b. ___Other rights.___ - - 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this Public License. - - 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. - -### Section 3 – License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the following conditions. - -a. ___Attribution.___ - - 1. If You Share the Licensed Material (including in modified form), You must: - - A. retain the following if it is supplied by the Licensor with the Licensed Material: - - i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of warranties; - - v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; - - B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and - - C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. - - 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. - -b. ___ShareAlike.___ - -In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. - - 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. - -### Section 4 – Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: - -a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only; - -b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and - -c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. - -### Section 5 – Disclaimer of Warranties and Limitation of Liability. - -a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ - -b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__ - -c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. - -### Section 6 – Term and Termination. - -a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. - -b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or - - 2. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or - - For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. - -c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. - -d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. - -### Section 7 – Other Terms and Conditions. - -a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. - -b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. - -### Section 8 – Interpretation. - -a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. - -b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. - -c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. - -d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. diff --git a/content/hashdotdev/README.md b/content/hashdotdev/README.md deleted file mode 100644 index c6ccc8d511c..00000000000 --- a/content/hashdotdev/README.md +++ /dev/null @@ -1,20 +0,0 @@ -[hash.dev]: https://hash.dev/?utm_medium=organic&utm_source=github_readme_hashdotdev -[hash.dev/docs]: https://hash.dev/docs?utm_medium=organic&utm_source=github_readme_hashdotdev -[`internal` monorepo]: https://github.com/hashintel/internal -[license determination instructions]: https://github.com/hashintel/hash/blob/main/LICENSE.md#1-license-determination - - - -[github_star]: https://github.com/hashintel/hash# - -[![github_star](https://img.shields.io/github/stars/hashintel/hash?label=Star%20on%20GitHub&style=social)][github_star] - -# `hash.dev` content - -## Overview - -The [hash.dev] website code resides in our private [`internal` monorepo]. However, certain site content will be made publicly editable here in due course. This includes: - -- **Developer Docs** ([hash.dev/docs]): in a `docs` sub-directory - -Please check the individual `LICENSE` information within each file or sub-directory as appropriate, per the [license determination instructions].