# Microsoft Graph Engine | - | Windows | Linux | |:------:|:------:|:------:| |Build|![Build status badge](https://msai.visualstudio.com/GraphEngine/_apis/build/status/GraphEngine-Windows)|![Build status badge](https://msai.visualstudio.com/GraphEngine/_apis/build/status/GraphEngine-Linux)| This repository contains the source code of [Microsoft Graph Engine][graph-engine] and its graph query language -- [Language Integrated Knowledge Query][likq] (LIKQ). Microsoft Graph Engine is a distributed in-memory data processing engine, underpinned by a strongly-typed in-memory key-value store and a general-purpose distributed computation engine. [LIKQ][likq-gh] is a versatile graph query language built atop Graph Engine. It combines the capability of fast graph exploration with the flexibility of lambda expressions. Server-side computations can be expressed in lambda expressions, embedded in LIKQ, and executed on the Graph Engine servers during graph traversal. ## Getting started Recommended operating system: Windows 10 or Ubuntu 22.04. ### Building on Windows Download and install [Visual Studio][vs] with the following "workloads" and "individual components" selected: - The ".NET desktop development" and "Desktop development with C++" workloads. - The ".NET Portable Library targeting pack" individual component. Open a PowerShell window, run `.\tools\build.ps1` for building the NuGet packages. The script has been tested on Windows 10 (22H2) with Visual Studio 2022. ### Building on Linux Install g++, cmake, and libssl-dev. For example, on Ubuntu, simply run ```shell sudo apt update && sudo apt install g++ cmake libssl-dev ``` Install [.NET SDK x64 8.0][dotnet-on-linux]. For example, on Ubuntu 22.04, run `sudo apt update && sudo apt install -y dotnet-sdk-8.0`. Then, build GraphEngine with the following command: ```shell bash tools/build.sh ``` The build script has been tested on Ubuntu 22.04 with g++ 11.4.0. ### Using the built packages You can find the built NuGet packages `build/GraphEngine**._version_.nupkg` in the `build` folder. In the building process, the `build` directory has been registered as a local NuGet repository and the local package cache for `GraphEngine.Core` has been cleared. After the packages are built, run `dotnet restore` to use the newly built packages. ### Running your first Graph Engine app Go to the `samples/Friends` folder, execute `dotnet restore` and `dotnet run` to run the sample project. ## Contributing Pull requests, issue reports, and suggestions are welcome. Please read the [code of conduct](CODE_OF_CONDUCT.md) before contributing code. Follow these [instructions](SECURITY.md) for reporting security issues. ## License Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the [MIT](LICENSE.md) license. ## Disclaimer Microsoft Graph Engine is a research project. It is not an officially supported Microsoft product. ## References We kindly request that any published paper that makes use of Microsoft Graph Engine cites the following paper: - [Bin Shao](https://www.binshao.info/), [Haixun Wang](https://haixun.github.io/), and [Yatao Li](https://www.microsoft.com/en-us/research/people/yatli/). [Trinity: A Distributed Graph Engine on a Memory Cloud](https://www.graphengine.io/downloads/papers/Trinity.pdf). In SIGMOD 2013: Proceedings of SIGMOD 2013, New York, New York, USA, June 22-27, 2013, pages 505-516. ([BibTeX](https://www.graphengine.io/downloads/papers/Trinity.bib)) If you want to learn more about the algorithms and applications built on top of Microsoft Graph Engine, please refer to these [publications](https://www.graphengine.io/docs/publications/index.html). [graph-engine]: https://www.graphengine.io/ [likq]: https://www.graphengine.io/video/likq.video.html [likq-gh]: https://github.com/Microsoft/GraphEngine/tree/master/src/Modules/LIKQ [academic-graph-search]: https://azure.microsoft.com/en-us/services/cognitive-services/academic-knowledge/ [vs-extension]: https://visualstudiogallery.msdn.microsoft.com/12835dd2-2d0e-4b8e-9e7e-9f505bb909b8 [graph-engine-core]: https://www.nuget.org/packages/GraphEngine.Core/ [likq-nuget]: https://www.nuget.org/packages/GraphEngine.LIKQ/ [vs]: https://www.visualstudio.com/ [dotnet-download]: https://dotnet.microsoft.com/ [dotnet-on-linux]: https://dotnet.microsoft.com/en-us/download/dotnet [license]: LICENSE.md