Coder Social home page Coder Social logo

aws / graph-explorer Goto Github PK

View Code? Open in Web Editor NEW
286.0 32.0 45.0 3.68 MB

React-based web application that enables users to visualize both property graph and RDF data and explore connections between data without having to write graph queries.

Home Page: https://github.com/aws/graph-explorer

License: Apache License 2.0

Dockerfile 0.13% JavaScript 1.17% HTML 0.33% TypeScript 97.56% CSS 0.04% Shell 0.77%
amazon-neptune apache-tinkerpop graph graph-database graph-visualization opencypher rdf

graph-explorer's Introduction

Graph Explorer

The Graph Explorer project provides a React-based web application that enables users to visualize both property graph and RDF data and explore connections between data without having to write graph queries. You can connect to a graph database that supports either the W3C RDF/SPARQL open standard or the open source Apache TinkerPop Gremlin Server.

To get started, you can deploy Graph Explorer on a local machine using Docker Desktop, or in the cloud using Amazon EC2 or a container service like Amazon ECS.

A sample image of property graph created by Graph Explorer A sample image of RDF graph created by Graph Explorer

Getting Started

This project contains the code needed to create a Docker image of the Graph Explorer. The image will create the Graph Explorer application and proxy server that will be served over the standard HTTP or HTTPS ports (HTTPS by default). The proxy server will be created automatically, but will only be necessary if you are connecting to Neptune. Gremlin-Server and BlazeGraph can be connected to directly. Additionally, the image will create a self-signed certificate that can be optionally used.

There are many ways to deploy the Graph Explorer application. The following instructions detail how to deploy graph-explorer onto an Amazon EC2 instance and use it as a proxy server with SSH tunneling to connect to Amazon Neptune. Note that this README is not an official recommendation on network setups as there are many ways to connect to Amazon Neptune from outside of the VPC, such as setting up a load balancer or VPC peering.

Prerequisites

  • Provision an Amazon EC2 instance that will be used to host the application and connect to Neptune as a proxy server. For more details, see instructions here.
  • Ensure the Amazon EC2 instance can send and receive on ports 22 (SSH), 8182 (Neptune), and 443 or 80 depending on protocol used (graph-explorer).
  • Open an SSH client and connect to the EC2 instance.
  • Download and install the necessary command line tools such as git and docker.

Steps to install Graph Explorer

  1. To download the source project, run git clone https://github.com/aws/graph-explorer/. Navigate to the newly created graph-explorer directory.
  2. To build the image, run docker build -t graph-explorer . from the root directory. If you receive an error relating to the docker service not running, run service docker start.
  3. Run docker run -p 80:80 -p 443:443 --env HOST={hostname-or-ip-address} graph-explorer to run the docker container.
  4. Now, open a browser and type in the public URL of your EC2 instance accessing the explorer endpoint (e.g., https://ec2-1-2-3-4.us-east-1.compute.amazonaws.com/explorer). You will receive a warning as the SSL certificate used is self-signed.
  5. Since the application is set to use HTTPS by default and contains a self-signed certificate, you will need to add the Graph Explorer certificates to the trusted certificates directory and manually trust them. See HTTPS Connections section.
  6. After completing the trusted certification step and refreshing the browser, you should now see the Connections UI. See below description on Connections UI to configure your first connection to Amazon Neptune.

Troubleshooting

  1. If the container does not start, or immediately stops, use docker logs graph-explorer to check the container console logs for any related error messages that might provide guidance on why graph-explorer did not start.
  2. If you are having issues connecting graph-explorer to your graph database, use your browser's Developer Tools feature to monitor both the browser console and network calls to determine if here are any errors related to connectivity.

Features

Connections UI:

You can create and manage connections to graph databases using this feature. Connections is accessible as the first screen after deploying the application, when you click Open Connections on the top-right. Click + on the top-right to add a new connection. You can also edit and delete connections.

  • Add a new connection:

    • Name: Enter a name for your connection (e.g., MyNeptuneCluster).
    • Graph Type: Choose a graph data model that corresponds to your graph database.
    • Public or proxy endpoint: Provide the publicly accessible endpoint URL for a graph database, e.g., Gremlin Server. If connecting to Amazon Neptune, then provide a proxy endpoint URL that is accessible from outside the VPC, e.g., EC2.
      • Note: For connecting to Amazon Neptune, ensure that the graph connection URL is in the format https://[NEPTUNE_ENDPOINT]:8182, and that the proxy endpoint URL is either https://[EC2_PUBLIC_HOSTNAME]:443 or http://[EC2_PUBLIC_HOSTNAME]:80, depending on the protocol used. Ensure that you don't end either of the URLs with /.
    • Using proxy server: Check this box if using a proxy endpoint.
    • Graph connection URL: Provide the endpoint for the graph database
    • AWS IAM Auth Enabled: Check this box if connecting to Amazon Neptune using IAM Auth and SigV4 signed requests
    • Service Type: Choose the service type
    • AWS Region: Specify the AWS region where the Neptune cluster is hosted (e.g., us-east-1)
    • Fetch Timeout: Specify the timeout for the fetch request
  • Available Connections: Once a connection is created, this section will appear as a left-hand pane. When you create more than one connection to a graph database, you can only connect to and visualize from one graph database endpoint at a time. To select the active database, toggle the “Active” switch.

  • Connection Details: Once a connection is created, this section will appear as a right-hand information pane for a selected connection. It shows details such as the connection name, graph data model type, endpoint and a summary of the graph data, such as the count of nodes, edges, and a list of node types.

  • Last Synchronization: When a connection is created, Graph Explorer will perform a scan of the graph to provide summary data. To re-synchronize after data has changed on your graph, select a connection, and then click the “refresh” button next to “Last Synchronization” text.

  • Data Explorer UI: Under a listed node type, you can click on the ‘>’ arrow to get to the “Data Explorer” view. This allows you to see a sample list of nodes under this type and choose one or more nodes to “Send to Explorer” for getting started quickly if you are new to the data.

Graph Explorer UI:

You can search, browse, expand, customize views of your graph data using Graph Explorer, which is the main UI of this application. Once you create a connection, you can click “Open Graph Explorer” on the top-right to navigate here. There are several key features on this UI:

  • Top Bar UI:

    • Search bar: If a user wants to start without using the Data Explorer, they can go directly to the search bar and use the search to visualize a starting node in the graph.
    • Toggles: You can toggle to show/hide the Graph View and/or Table View for screen real-estate management.
    • Open Connections: This takes the user back to Connections UI.
  • Graph View UI: The graph visualization canvas that you can interact with. Double-click to expand the first-order neighbors of a node.

    • Layout drop-down & reset: You can display graph data using standard graph layouts in the Graph View. You can use the circular arrow to reset the physics of a layout.
    • Screenshot: Download a picture of the current window in Graph View.
    • Zoom In/Out & Clear: To help users quickly zoom in/out or clear the whole canvas in the Graph View.
    • Legend (i): This displays an informational list of icons, colors, and display names available.
  • Right-hand Pane UI: There are 5-6 functions in the collapsible right-hand pane of Graph Explorer:

    • Details View shows details about a selected node/edge such as properties etc.
    • Entities Filter is used to control the display of nodes and edges that are already expanded in the Graph View; click to hide or show nodes/edges.
    • Expand is used when expanding will result in 10+ neighbors and control the meaningful expansion. You will need to select a number as the limit to expand to. You can also add text filters for expansion.
    • Node Styling of node display options (e.g., color, icon, the property to use for the displayed name).
    • Edge Styling of edge display options (e.g., color, icon, the property to use for the displayed name).
    • Namespaces (RDF only): This RDF-specific configuration feature allows you to shorten the display of Resource URIs within the app based on auto-generated prefixes, commonly-used prefix libraries, or custom prefixes set by the user. Order of priority is set to Custom > Common > Auto-generated.
  • Table View UI: This collapsible view shows a row-column display of the data in the Graph View. You can use filters in the Table to show/hide elements in the Graph View, and you can export the table view into a CSV or JSON file. The following columns are available for filtering on property graphs (RDF graphs in parentheses):

    • Node ID (Resource URI)
    • Node Type (Class)
    • Edge Type (Predicate)
    • Source ID (Source URI)
    • Source Type (Source Class)
    • Target ID (Target URI)
    • Target Type (Target Class)
    • Display Name - Set in the Node/Edge Styling panes
    • Display Description - Set in the Node/Edge Styling panes
    • Total Neighbors - Enter an integer to be used as the >= limit
  • Additional Table View UI Features

    • Visibility - manually show or hide nodes or edges
    • All Nodes / All Edges (or All Resources / All Predicates) dropdown - allows you to display a list of either nodes or edges and control display/filter on them
    • Download - You can download the current Table View as a CSV or JSON file with additional customization options
    • Default columns - You can set which columns you want to display
    • Paging of rows

Connections

The Graph Explorer supports visualizing both property graphs and RDF graphs. You can connect to Amazon Neptune or you can also connect to open graph databases that implement an Apache TinkerPop Gremlin Server endpoint or the SPARQL 1.1 protocol, such as Blazegraph. For additional details on connecting to different graph databases, see Connections.

Providing a Default Connection

To provide a default connection such that initial loads of the graph explorer always result with the same starting connection, modify the docker run ... command to either take in a JSON configuration or runtime environment variables. If you provide both a JSON configuration and environmental variables, the JSON will be prioritized.

Valid ENV connection variables, their defaults, and their descriptions

  • Required:
  • Optional
    • GRAPH_TYPE - None - If not specified, multiple connections will be created for every available graph type / query language. See Add a New Connection
    • USING_PROXY_SERVER - False - See Add a New Connection
    • IAM - False - See Add a New Connection
    • GRAPH_EXP_HTTPS_CONNECTION - True - Controls whether the Graph Explorer uses SSL or not
    • PROXY_SERVER_HTTPS_CONNECTION - True - Controls whether the server uses SSL or not
    • GRAPH_EXP_FETCH_REQUEST_TIMEOUT - 240000 - Controls the timeout for the fetch request
  • Conditionally Required:
    • Required if USING_PROXY_SERVER=True
    • Required if USING_PROXY_SERVER=True and IAM=True
      • AWS_REGION - None - See Add a New Connection
      • SERVICE_TYPE - neptune-db, Set this as neptune-db for Neptune database or neptune-graph for Neptune Analytics.

JSON Configuration Approach

First, create a config.json file containing values for the connection attributes:

{
     "PUBLIC_OR_PROXY_ENDPOINT": "https://public-endpoint",
     "GRAPH_CONNECTION_URL": "https://cluster-cqmizgqgrsbf.us-west-2.neptune.amazonaws.com:8182",
     "USING_PROXY_SERVER": true, (Can be string or boolean)
     "IAM": true, (Can be string or boolean)
     "SERVICE_TYPE": "neptune-db",
     "AWS_REGION": "us-west-2",
     "GRAPH_TYPE": "gremlin" (Possible Values: "gremlin", "sparql", "openCypher"),
     "GRAPH_EXP_HTTPS_CONNECTION": true (Can be string or boolean),
     "PROXY_SERVER_HTTPS_CONNECTION": true, (Can be string or boolean),
     "GRAPH_EXP_FETCH_REQUEST_TIMEOUT": 240000 (Can be number)
}

Pass the config.json file path to the docker run command.

docker run -p 80:80 -p 443:443 --env HOST={hostname-or-ip-address} -v /path/to/config.json:/graph-explorer/config.json graph-explorer` 

Environment Variable Approach

Provide the desired connection variables directly to the docker run command, as follows:

docker run -p 80:80 -p 443:443 \
 --env HOST={hostname-or-ip-address} \
 --env PUBLIC_OR_PROXY_ENDPOINT=https://public-endpoint \
 --env GRAPH_TYPE=gremlin \
 --env USING_PROXY_SERVER=true \
 --env IAM=false \
 --env GRAPH_CONNECTION_URL=https://cluster-cqmizgqgrsbf.us-west-2.neptune.amazonaws.com:8182 \
 --env AWS_REGION=us-west-2 \
 --env SERVICE_TYPE=neptune-db \
 --env PROXY_SERVER_HTTPS_CONNECTION=true \
 --env GRAPH_EXP_FETCH_REQUEST_TIMEOUT=240000 \
 graph-explorer

Development

For development guidance, see Development.

Security

You can use the Graph Explorer to connect to a publicly accessible graph database endpoint, or connect to a proxy endpoint that redirects to a private graph database endpoint.

Graph Explorer supports the HTTPS protocol by default and provides a self-signed certificate as part of the Docker image. You can choose to use HTTP instead by changing the environment variable default settings.

HTTPS Connections

If either of the Graph Explorer or the proxy-server are served over an HTTPS connection (which it is by default), you will have to bypass the warning message from the browser due to the included certificate being a self-signed certificate. You can bypass by manually ignoring them from the browser or downloading the correct certificate and configuring them to be trusted. Alternatively, you can provide your own certificate. The following instructions can be used as an example to bypass the warnings for Chrome, but note that different browsers and operating systems will have slightly different steps.

  1. Download the certificate directly from the browser. For example, if using Google Chrome, click the “Not Secure” section on the left of the URL bar and select “Certificate is not valid” to show the certificate. Then click Details tab and click Export at the bottom.
  2. Once you have the certificate, you will need to trust it on your machine. For MacOS, you can open the Keychain Access app. Select System under System Keychains. Then go to File > Import Items... and import the certificate you downloaded in the previous step.
  3. Once imported, select the certificate and right-click to select "Get Info". Expand the Trust section, and change the value of "When using this certificate" to "Always Trust".
  4. You should now refresh the browser and see that you can proceed to open the application. For Chrome, the application will remain “Not Secure” due to the fact that this is a self-signed certificate. If you have trouble accessing Graph Explorer after completing the previous step and reloading the browser, consider running a docker restart command and refreshing the browser again.

Note: To get rid of the “Not Secure” warning, see Using self-signed certificates on Chrome.

Authentication

Authentication for Amazon Neptune connections is enabled using the SigV4 signing protocol.

To use AWS IAM authentication, you must run requests through a proxy endpoint, such as an EC2 instance, where credentials are resolved and where requests are signed.

To set up a connection in Graph Explorer UI with AWS IAM auth enabled on Neptune, check Using Proxy-Server, then check AWS IAM Auth Enabled and type in the AWS Region where the Neptune cluster is hosted (e.g., us-east-1).

For further information on how AWS credentials are resolved in Graph Explorer, refer to this documentation.

Logging

Logs are, by default, sent to the console and will be visible as output to the docker logs. If you want to access the full set of logs, you can run docker logs {container name or id}. The log level will be set via the LOG_LEVEL env variable at /packages/graph-explorer/.env where the possible options, from highest to lowest, are error, warn, info, debug, and trace such that error is the highest level and will only include logs labeled as errors and trace the lowest and will include any type of log. By default, the log level is set to info and the only type of logs generated are those of error, info, or debug. If you need more detailed logs, you can change the log level from info in the default .env file to debug and the logs will begin printing the error's stack trace.

Within node-server.js, you'll notice three things.

  1. A proxyLogger object - This is responsible for actually recording the logs.
  2. An errorHandler - This automatically sends errors to the proxyLogger and can log extra information by adding wanted text to the error object at a key called extraInfo.
  3. An endpoint called /logger - This is how you would log things from the browser. It needs a log level and message header passed and you can then expect to see the message logged at the provided log level.

Contributing Guidelines

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.

graph-explorer's People

Contributors

agutierrezgit avatar amazon-auto avatar charlesivie avatar cubeddu avatar dependabot[bot] avatar jackson-millard avatar joywa avatar kevinphillips81 avatar kmcginnes avatar krlawrence avatar michaelnchin avatar nestoralvarezd avatar strongpa55word avatar tawkirahmed avatar triggan avatar vkagamlyk avatar xd3coder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

graph-explorer's Issues

Code Readability and Maintenance

#1/ Add comments at class level to help developers understand the purpose of the classes (i.e., in what context the class is used and why) Comment what is the expected result of the queries.

#1 (comment)
#1 (comment)

2/ Can we leverage this utility to make it easier to maintain: https://github.com/awslabs/amazon-neptune-tools/tree/master/neptune-gremlin-js

#1 (comment)

3/ Rename package and classes. Technically SPARQL is spelled all capital. In this context you could also name it all lower case: sparql.

#1 (comment)

4/ Rename Data Explorer files

#1 (comment)

5/ Use https://www.npmjs.com/package/aws4 to sign the requests instead of implementing it ourselves.

#1 (comment)

Initial page doesn't load

Firefox console error
[vite] connecting... client.ts:19:8
[vite] connected.
Loading failed for the module with source “https://[server].compute-1.amazonaws.com:5173/src/components/AdvancedList/internalComponents/SearchBar.tsx”. [server].compute-1.amazonaws.com:5173:45:1
Loading failed for the module with source “https://[server].compute-1.amazonaws.com:5173/src/connector/sparql/templates/predicatesWithCountsTemplate.ts”. [server].compute-1.amazonaws.com:5173:45:1
Loading failed for the module with source “https://[server].compute-1.amazonaws.com:5173/src/components/Tabular/builders/makeChipCell.tsx”. [server].compute-1.amazonaws.com:5173:45:1
Loading failed for the module with source “https://[server].compute-1.amazonaws.com:5173/node_modules/.vite/deps/cytoscape-canvas.js?v=936cc47d”. [server].compute-1.amazonaws.com:5173:45:1
Loading failed for the module with source “https://[server].compute-1.amazonaws.com:5173/src/components/HumanReadableNumberFormatter/numberFormat.ts”. [server].compute-1.amazonaws.com:5173:45:1
Loading failed for the module with source “https://[server].compute-1.amazonaws.com:5173/src/modules/GraphViewer/useGraphStyles.ts”. [server].compute-1.amazonaws.com:5173:45:1
Loading failed for the module with source “https://[server].compute-1.amazonaws.com:5173/src/modules/NodesStyling/lineStyling.tsx”. [server].compute-1.amazonaws.com:5173:45:1
Loading failed for the module with source “https://[server].compute-1.amazonaws.com:5173/src/components/Sidebar/Sidebar.tsx”. [server].compute-1.amazonaws.com:5173:45:1
Loading failed for the module with source “https://[server].compute-1.amazonaws.com:5173/src/modules/GraphViewer/useNodeBadges.ts”. [server].compute-1.amazonaws.com:5173:45:1
..............[Many more modules that fail to load......

Docker Logs

[email protected] dev /graph-explorer
concurrently "pnpm start:proxy-server" "pnpm start"

[1]
[1] > [email protected] start /graph-explorer
[1] > pnpm -F graph-explorer start
[1]
[0]
[0] > [email protected] start:proxy-server /graph-explorer
[0] > pnpm -F graph-explorer-proxy-server start
[0]
[0]
[0] > [email protected] start /graph-explorer/packages/graph-explorer-proxy-server
[0] > node node-server.js
[0]
[1]
[1] > [email protected] start /graph-explorer/packages/graph-explorer
[1] > vite
[1]
[1]
[1] VITE v3.2.0 ready in 700 ms
[1]
[1] ➜ Local: https://localhost:5173/
[1] ➜ Network: https://172.17.0.2:5173/
[0] Master credentials available
[0] Proxy server located at https://localhost:8182

Create release & artifacts

Final QA - Joy, Kelvin
Add a changelog.md - Joy (Done)
Update the version number - Done by Nestor
Tag a branch with release 1.1 tag - Michael

[Feature request] Search on property not shown

Community Note

  • Please use a 👍 reaction to provide a +1/vote. This helps the community and maintainers prioritize this request.
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment.

Graph Explorer Version (and Graph Database and Version used if applicable)
Any

Is your feature request related to a problem? Please describe.
Enhancement

Describe the solution you'd like
In the upper search bar, suppose I want to search on a specific property for a specific node label. If the property I want to search on is not shown from the dropdown, I would like be able to enter is manually so I can search on it. Example from a demo: show accounts in a specific community. The community property is not shown in dropdown.

Additional context

[Feature request] Attribute search should be case-insensitive

Community Note

  • Please use a 👍 reaction to provide a +1/vote. This helps the community and maintainers prioritize this request.
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment.

Describe the bug
Attribute search should is case-insensitive.

To Reproduce
Steps to reproduce the behavior:

  1. Type in a search term in the top search bar.
  2. The search results only show if there is an exact case-sensitive match.

Expected behavior
Search is intuitively expected to be case-insensitive.
There can be a checkbox or some other UI element to switch to a case-sensitive search if needed.

[Bug] In data explorer view filter options show show Node Id and Node Type, Filters don't seem to do anything

Community Note

  • Please use a 👍 reaction to provide a +1/vote. This helps the community and maintainers prioritize this request.
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment.

Describe the bug
In data explorer view filter options show show Node Id and Node Type, Filters don't seem to do anything

  • OS: [e.g. Mac OS]
  • Browser: [e.g. Firefox]
  • Graph Explorer Version: [e.g. latest]
  • Graph Database & Version: [e.g., Amazon Neptune 1.2.0.2]

To Reproduce
Steps to reproduce the behavior:

  1. Go to '.Graph Explorer'
  2. Select Filters on top right
  3. Nothing changes and no messages either.

screenshot

Screenshot 2023-04-13 at 9 40 24 AM

Expected behavior
Filters should take effect and data should not be shown if nothing matches the filter or Appropriate error message should be shown

Connecting to TinkerPop In-memory graph loaded into gremlin-server locally

I loaded an in-memory graph on gremlin-server as per the steps in https://kelvinlawrence.net/book/Gremlin-Graph-Guide.html#servertinkergraph.

Now, I want to explore the graph using graph explorer. But the connection is not being established when I am giving endpoint URL as http://localhost:8182. I tried various variants of the URL but was not able to succeed.

I pulled the image using the command
docker build --build-arg host=127.0.0.1 -t graph-explorer .

I started the container with the command
docker run -dit -p 5173:5173 --name graphexp graph-explorer

Can you please help if I'm missing something?

Synchronization issue for large data set in neptune

Hey,
We have configured graph explorer on an EC2 instance. Connectivity is fine but we are having issues while synchronizing to Neptune from Graph explorer UI. We are pulling ~1.7 TB of data with 618 M nodes and 861 M Edges. Earlier we are getting timeouts so we have increased the query execution time to 30 mins. It ran but it takes a lot of time. Is there any way we can optimize this synchronization and expidite this process?

[Feature request] Allow for default class where a rdf:Class does not exist.

Is your feature request related to a problem? Please describe.
When data does not have a class type
e.g. nothing like
:Charlie a :Person
The user interface cannot display a node, as it is reliant on that data to be in the model.

Describe the solution you'd like
Where a class does not exist for a node, assume a default class type of rdf:Resource.
Update the SPARQL queries accordingly using 'Coalesce'.

Blank node ("bnode") support

Example query that computes a maximum 4-hop CBD approximation:

    SELECT ?s1 ?p1 ?o1 {
        {
            SELECT ?s1 ?p1 ?o1 {
                BIND($uri AS ?s1)
                ?s1 ?p1 ?o1
            }
        } UNION {
            SELECT ?s1 ?p1 ?o1 {
                BIND($uri AS ?s2)
                ?s2 ?p2 ?s1 . FILTER(ISBLANK(?s1))
                ?s1 ?p1 ?o1
            }
        } UNION {
            SELECT ?s1 ?p1 ?o1 {
                BIND($uri AS ?s3)
                ?s3 ?p3 ?s2 . FILTER(ISBLANK(?s2))
                ?s2 ?p2 ?s1 . FILTER(ISBLANK(?s1))
                ?s1 ?p1 ?o1
            }
        } UNION {
            SELECT ?s1 ?p1 ?o1 {
                BIND($uri AS ?s4)
                ?s4 ?p4 ?s3 . FILTER(ISBLANK(?s3))
                ?s3 ?p3 ?s2 . FILTER(ISBLANK(?s2))
                ?s2 ?p2 ?s1 . FILTER(ISBLANK(?s1))
                ?s1 ?p1 ?o1
            }
        }
    }

Easy to extend to more hops. I have used $uri as the "marker" for the resource for which we want the CBD computed. Replace with your own syntax in templates...

Rename and rewrite SPARQL query vertexLabelsTemplate.ts

return "SELECT ?vertexType (COUNT(?vertexType) as ?count) {?start a ?vertexType} GROUP BY ?vertexType";

This file uses terms that don't make sense in the RDF world. Please rename the file to the following:
instancesOfClassesCounts.ts

and rewrite the query withe the following terms:

/**
 * Fetch all classes and counts of instances of them
 */
SELECT ?class (COUNT(?class) as ?count) 
{
     ?s a ?class
} 
GROUP BY ?class

[BUG] "findDOMNode is deprecated in StrictMode" error

Describe the bug
Browser freezes when I try to expand a node with few neighbors (9) from Amazon Neptune.
I can reproduce it in Firefox and Chrome (versions attached below).
The Console shows:
Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of Transition2 which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-find-node div Transition2@https://localhost:5173/node_modules/.vite/deps/react-transition-group.js?v=a5a5d86c:111:30 CSSTransition2@https://localhost:5173/node_modules/.vite/deps/react-transition-group.js?v=a5a5d86c:387:35 div TransitionGroup2@https://localhost:5173/node_modules/.vite/deps/react-transition-group.js?v=a5a5d86c:646:30 div div NotificationProvider@https://localhost:5173/src/components/NotificationProvider/NotificationProvider.tsx:69:37 div ThemeProvider@https://localhost:5173/src/core/ThemeProvider/ThemeProvider.tsx:35:23 DndProvider<@https://localhost:5173/node_modules/.vite/deps/react-dnd.js?v=8d77ea20:1591:18 QueryClientProvider2@https://localhost:5173/node_modules/.vite/deps/react-query.js?v=1bf679e6:2643:16 div ConnectedProvider@https://localhost:5173/src/core/ConnectedProvider/ConnectedProvider.tsx:40:7 Router@https://localhost:5173/node_modules/.vite/deps/react-router-dom.js?v=47b6e6dd:2697:7 HashRouter@https://localhost:5173/node_modules/.vite/deps/react-router-dom.js?v=47b6e6dd:3106:7

To Reproduce
Steps to reproduce the behavior:

  1. Go to Graph Explorer
  2. Click on Search Bar
  3. Select one node with 9 neighbour nodes. Click on "Add Selected". Selected node appears in the canvas.
  4. Click on the new node in the canvas, limit returned neighbors to 1
  5. Click on Expand
  6. Browser freezes. Above error message shows up in the Console.

Expected behavior
I expected to see 1 neighbor node in the canvas when I click "Add Selected".

Desktop (please complete the following information):

  • OS: MacOS Monterey 12.6.2
  • Browsers: Chrome (109.0.5414.87 (Official Build) (x86_64)) and Firefox (102.6.0esr (64-bit))
  • Graph Explorer version: (pulled from Github today, 3.7.0)

Code cleanup task

  1. On this file: https://github.com/aws/graph-explorer/blob/637d26b21f99e387bee3ab8b3a1e193b91d89202/packages/graph-explorer-proxy-server/cert-info/csr.conf

Line 13: Review if we need the "Graph Explorer Dev" line
Line 14: Change provider of the certificate to Graph Explorer, not Amazon Neptune

  1. On this file: https://github.com/aws/graph-explorer/blob/1f26af373197af9853393bcaa20c70e1672fe330/docker-entrypoint.sh

Line 10: Also change provider to be consistent.

  1. Review all mentions of "Dev" in the code and eliminate what is no longer needed or rename:

https://github.com/aws/graph-explorer/search?p=1&q=Dev

[Bug] Unable to disable https using defined environment variables

When running graph-explorer within a container, I'm unable to disable https for the graph-explorer service using the following docker run command. Https for the proxy does get disabled with this, but not the graph-explorer service (Vite server).

docker run -dit -p 5173:5173 -p 8182:8182 \
    --name <container_name> \
    --env GRAPH_EXP_HTTPS_CONNECTION=false \
    --env PROXY_SERVER_HTTPS_CONNECTION=false \
    -t <container_image>

Rename and rewrite SPARQL query edgeLabelsTemplate.ts

https://github.com/aws/graph-explorer/blob/2a99b249e2d6fc64020a96c88802306ee9731fc7/packages/client/src/connector/sparQL/templates/edgeLabelsTemplate.ts

Please rename and rewrite this query to use RDF terminology. e.g.

groupRelationshipsByPredicateObject

/**
 * Count groups of common predicate-objects where object is not a literal.
 * 
 */
SELECT ?predicate (COUNT(?predicate) as ?count) 
{
    ?subject ?predicate ?object 
    FILTER(!isLiteral(?object))    
} 
GROUP BY ?predicate

Unable to synchronize database when running on an EC2 Instance without an attached IAM role.

Describe the bug
If you deploy a graph-explorer container on an EC2 instance without an IAM role attached to the EC2 instance (such as might be the case if you're connecting to an Amazon Neptune cluster without IAM Authentication enabled), the following error occurs:

Error: Credentials undefined after refresh. Check that you have proper access and that the credentials should work.
    at retryFetch (/graph-explorer/packages/graph-explorer-proxy-server/node-server.js:60:15)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async /graph-explorer/packages/graph-explorer-proxy-server/node-server.js:165:18

To Reproduce
Steps to reproduce the behavior:

  1. Create a new EC2 instance in the same VPC as a Neptune cluster.
  2. Deploy Graph Explorer in a container on the EC2 instance.
  3. Attempt to create a connection to a Neptune cluster.
  4. Notice in both the docker logs and in the browser console that the error above is generated.

Expected behavior
In the event that no role is found, we should catch the error an note in the logs that no IAM credentials have been provided.

Screenshots
N/A

Desktop (please complete the following information):

  • OS: [e.g. Amazon Linux 2]
  • Browser: [e.g. Firefox]
  • Version: [e.g. 1.0.0]

Additional context
N/A

[Feature request] Embeddability of components into custom applications

Is your feature request related to a problem? Please describe.
I want to embed the visualizations from Graph Explorer into my own custom built graph visualization application

Describe the solution you'd like
Provide an SDK or componentized version of Graph Explorer that can be added to any React-based project

Describe alternatives you've considered
Building my own visualizations

Additional context
Add any other context or screenshots about the feature request here.

"No master credentials available"

Discussed in #86

Originally posted by akuckartz April 1, 2023
I am trying to run AWS Graph Explorer locally.

What does this mean? Why is this happening?

Credentials undefined. Trying refresh.
No master credentials available Error: connect ECONNREFUSED 169.254.169.254:80
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) {
  message: 'EC2 Metadata roleName request returned error',
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '169.254.169.254',
  port: 80,
  time: 2023-04-01T18:52:07.484Z,
  originalError: {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '169.254.169.254',
    port: 80,
    message: 'connect ECONNREFUSED 169.254.169.254:80'
  }
}
```</div>

Unit tests failing for Gremlin oneHopTemplate

When running unit tests for client package locally, all of the tests in this file return fail status:

https://github.com/aws/graph-explorer/blob/2a99b249e2d6fc64020a96c88802306ee9731fc7/packages/client/src/connector/gremlin/templates/oneHopTemplate.test.ts

Full output:

|  FAIL  src/connector/gremlin/templates/oneHopTemplate.test.ts (141.928 s)
|   oneHopTemplate
|     ✕ Should return a template for a simple vertex id (24 ms)
|     ✕ Should return a template with an offset and limit (1 ms)
|     ✕ Should return a template for specific vertex type (1 ms)
|     ✕ Should return a template with specific filter criteria (1 ms)
| 
|   ● oneHopTemplate › Should return a template for a simple vertex id
| 
|     expect(received).toBe(expected) // Object.is equality
| 
|     Expected: "g.V(\"12\").project(\"vertices\", \"edges\").by(both().dedup().range(0, 10).fold()).by(bothE().dedup().range(0, 10).fold())"
|     Received: "g.V(\"12\").project(\"vertices\", \"edges\").by(both().dedup().range(0, 10).fold()).by(bothE().dedup().fold())"
| 
|        7 |     });
|        8 |
|     >  9 |     expect(template).toBe(
|          |                      ^
|       10 |       'g.V("12").project("vertices", "edges")' +
|       11 |         ".by(both().dedup().range(0, 10).fold())" +
|       12 |         ".by(bothE().dedup().range(0, 10).fold())"
| 
|       at Object.<anonymous> (src/connector/gremlin/templates/oneHopTemplate.test.ts:9:22)
| 
|   ● oneHopTemplate › Should return a template with an offset and limit
| 
|     expect(received).toBe(expected) // Object.is equality
| 
|     Expected: "g.V(\"12\").project(\"vertices\", \"edges\").by(both().dedup().range(5, 10).fold()).by(bothE().dedup().range(5, 10).fold())"
|     Received: "g.V(\"12\").project(\"vertices\", \"edges\").by(both().dedup().range(5, 10).fold()).by(bothE().dedup().fold())"
| 
|       21 |     });
|       22 |
|     > 23 |     expect(template).toBe(
|          |                      ^
|       24 |       'g.V("12").project("vertices", "edges")' +
|       25 |         ".by(both().dedup().range(5, 10).fold())" +
|       26 |         ".by(bothE().dedup().range(5, 10).fold())"
| 
|       at Object.<anonymous> (src/connector/gremlin/templates/oneHopTemplate.test.ts:23:22)
| 
|   ● oneHopTemplate › Should return a template for specific vertex type
| 
|     expect(received).toBe(expected) // Object.is equality
| 
|     Expected: "g.V(\"12\").project(\"vertices\", \"edges\").by(both().hasLabel(\"country\").dedup().range(5, 15).fold()).by(bothE().where(otherV().hasLabel(\"country\")).dedup().range(5, 15).fold())"
|     Received: "g.V(\"12\").project(\"vertices\", \"edges\").by(both().hasLabel(\"country\").dedup().range(5, 15).fold()).by(bothE().where(otherV().hasLabel(\"country\")).dedup().fold())"
| 
|       36 |     });
|       37 |
|     > 38 |     expect(template).toBe(
|          |                      ^
|       39 |       'g.V("12").project("vertices", "edges")' +
|       40 |         '.by(both().hasLabel("country").dedup().range(5, 15).fold())' +
|       41 |         '.by(bothE().where(otherV().hasLabel("country")).dedup().range(5, 15).fold())'
| 
|       at Object.<anonymous> (src/connector/gremlin/templates/oneHopTemplate.test.ts:38:22)
| 
|   ● oneHopTemplate › Should return a template with specific filter criteria
| 
|     expect(received).toBe(expected) // Object.is equality
| 
|     Expected: "g.V(\"12\").project(\"vertices\", \"edges\").by(both().hasLabel(\"country\").and(has(\"longest\",gte(10000)),has(\"country\",containing(\"ES\"))).dedup().range(5, 15).fold()).by(bothE().where(otherV().hasLabel(\"country\")).dedup().range(5, 15).fold())"
|     Received: "g.V(\"12\").project(\"vertices\", \"edges\").by(both().hasLabel(\"country\").and(has(\"longest\",gte(10000)),has(\"country\",containing(\"ES\"))).dedup().range(5, 15).fold()).by(bothE().where(otherV().hasLabel(\"country\")).dedup().fold())"
| 
|       55 |     });
|       56 |
|     > 57 |     expect(template).toBe(
|          |                      ^
|       58 |       'g.V("12").project("vertices", "edges")' +
|       59 |         '.by(both().hasLabel("country")' +
|       60 |         '.and(has("longest",gte(10000)),has("country",containing("ES")))' +
| 
|       at Object.<anonymous> (src/connector/gremlin/templates/oneHopTemplate.test.ts:57:22)
| 

[Feature Request] Share view with another use

Community Note

  • Please use a 👍 reaction to provide a +1/vote. This helps the community and maintainers prioritize this request.
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment.

Graph Explorer Version (and Graph Database and Version used if applicable)
Any

Is your feature request related to a problem? Please describe.
Enhancement

Describe the solution you'd like
As a user, can I share my view with another user? I just dragged 5 nodes on the graph and expanded them out. I want the other user to continue working on it. I know you can share an image, but can you actually share what you have in the canvas?

Additional context

[Feature Request] Boolean/greater-than/less-than search

Community Note

  • Please use a 👍 reaction to provide a +1/vote. This helps the community and maintainers prioritize this request.
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment.

Graph Explorer Version (and Graph Database and Version used if applicable)
Any

Is your feature request related to a problem? Please describe.
Enhancement

Describe the solution you'd like
In the upper search bar, support boolean search with less-than, greater-than operators: I want to find nodes in community 82 where pageRank > 0.9. So I want to do an AND of two properties. Also, I’m using greater-than, not equality.

Additional context

EC2 Metadata roleName Request Returned Error

I]. Overview

  1. I am trying to set up AWS Graph Explorer to connect with our AWS Neptune DB. Goal: Visualize and interact with data in AWS Neptune.
  2. Running docker run -p 80:80 -p 443:443 --env HOST={hostname-or-ip-address} graph-explorer throws an EC2 Metadata roleName request returned error.

II]. Description of Docker Logs

[ec2-user@<EC2 Public IPv4 Address>]$ sudo docker run -p 80:80 -p 443:443 --env HOST=<Private IPv4 Address> graph-explorer
Generating new self-signed SSL cert using <Private IPv4 Address>...
Generating a 2048 bit RSA private key
.................+++
....................+++
writing new private key to 'rootCA.key'
-----
Generating RSA private key, 2048 bit long modulus
..........................................................................+++
...+++
e is 65537 (0x10001)
Signature ok
subject=/C=US/ST=Washington/L=Seattle/O=Graph Explorer/OU=Graph Explorer Dev/CN=Amazon Neptune
Getting CA Private Key
Starting graph explorer...

> [email protected] start:proxy-server /graph-explorer
> pnpm -F graph-explorer-proxy-server start

> [email protected] start /graph-explorer/packages/graph-explorer-proxy-server
> node node-server.js

No master credentials available Error: EC2 Metadata roleName request returned error
    at IncomingMessage.<anonymous> (/graph-explorer/node_modules/.pnpm/[email protected]/node_modules/aws-sdk/lib/util.js:912:34)
    at IncomingMessage.emit (node:events:525:35)
    at IncomingMessage.emit (node:domain:489:12)
    at endReadableNT (node:internal/streams/readable:1358:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  statusCode: 404,
  retryable: false,
  time: 2023-03-11T12:19:01.401Z
}
        Proxy server located at https://localhost

III]. To Reproduce
Details of the infra/systems/tools used:

  • OS: Amazon Linux 2
  • Instance: AWS EC2
  • Date of Error: 11/March/2023

Steps to reproduce the behavior:

  1. Set up Neptune. Enable SG to allow 'All traffic' (as a last ditch effort right now - as the Graph Explorer was not working)
  2. Set up Ec2 (t2.medium)
    2.a. Verify Ec2 can connect to and access Neptune: https://github.com/aws/graph-notebook/tree/main/additional-databases/neptune
    2.b. Install docker: https://www.cyberciti.biz/faq/how-to-install-docker-on-amazon-linux-2/
    2.c. Install Git: https://www.how2shout.com/linux/how-to-install-git-on-aws-ec2-amazon-linux-2/
    2.d. Start Docker: https://stackoverflow.com/a/64310814
  3. Set up Graph Explorer on EC2: https://github.com/aws/graph-explorer
    3.a. Cloned Graph Explorer onto EC2
    3.b. Built the docker image (docker build -t graph-explorer .)
    3.c. Ran the following command and I get the above error
    -- Do note: instead of using the EC2 instance's Private IP Address in Step 3.c., I have tried with the EC2 instance's Public IP Address and even localhost - it fails regardless.
    Would request the team's urgent help on this so that I can work with AWS Graph Explorer itself for the current project.

[Feature request] Pick up from last graph view or share graph view as a starting point

Is your feature request related to a problem? Please describe.
I would like an easy way to reload from my last image in Graph View or share a Graph View as a starting point with another user for exploration

Describe the solution you'd like
A specific URL link that provides the exact view I was on

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Connecting to non-neptune TinkerPop db

Trying to connect to a TinkerPop database, I get the error "Synchronization Required
It is necessary to synchronize the connection to be able to work with the database."
Looking into network calls, I see it tries to query g.V().groupCount().by(label)
which is refused with the error message:
Could not find a suitable index to answer graph query and graph scans are disabled

Seems like an index on label is required to run graph-explorer

Connection to graph is not working

I have followed the installation guide and was able to install the graph explorer. But unable to connect to graph DB. Could you please provide the details what i am missing.Thanks.

Support openCypher-based graph databases

Community Note

  • Please use a 👍 reaction to provide a +1/vote. This helps the community and maintainers prioritize this request.
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment.

Is your feature request related to a problem? Please describe.
Currently the Graph Explorer only supports viewing property graph data using Gremlin queries. I would like to use Explorer to connect to openCypher-based graph databases.

Describe the solution you'd like
Support connections to openCypher graph databases

Rename and rewrite SPARQL query keywordSearchTemplate.ts

Please change the following query using the example query below as a guide, the name keywordSearchTemplate is ok.

https://github.com/aws/graph-explorer/tree/2a99b249e2d6fc64020a96c88802306ee9731fc7/packages/client/src/connector/sparQL/templates#:~:text=keywordSearchTemplate.ts

/*
 * @example
 * searchTerm = "Ch"
 * vertexTypes = ["http://www.example.com/soccer/ontology/Team"]
 * searchByAttributes = [
 *   "http://www.example.com/soccer/ontology/teamName",
 *   "http://www.example.com/soccer/ontology/nickname"
 * ]
 * limit = 10
 * offset = 0
 *
 * SELECT DISTINCT ?start ?vertexType ?property ?propertyValue
 * {
 *   ?start ?property ?propertyValue
 *   {
 *     SELECT DISTINCT ?start ?vertexType
 *     {
 *       ?start ?property ?propertyValue
 *       {
 *         SELECT *
 *         {
 *           ?start ?edgeType ?vertexType
 *           FILTER(?vertexType = <http://www.example.com/soccer/ontology/Team>)
 *         }
 *       }
 *       FILTER (
 *         (?property = <http://www.example.com/soccer/ontology/teamName> && ) ||
 *         (?property = <http://www.example.com/soccer/ontology/nickname> && regex(str(?propertyValue), "Ch", "i"))
 *       )
 *     }
 *     LIMIT 10
 *     OFFSET 0
 *   }
 * }
 */
SELECT DISTINCT ?subject ?class ?predicate ?value WHERE {
 
    ?subject a          ?class ;
                   ?predicate ?value .
         
    FILTER ?predicate IN (
        <http://www.example.com/soccer/ontology/teamName>, 
        <http://www.example.com/soccer/ontology/nickname>
    )
    
    FILTER ?class IN ( 
        <http://www.example.com/soccer/ontology/Team> 
    )
     
    FILTER (regex(str(?value), "Ch", "i")) 

}
LIMIT 10
OFFSET 0

[Bug] Connection fails if any vertex has a label that contains spaces

Community Note

  • Please use a 👍 reaction to provide a +1/vote. This helps the community and maintainers prioritize this request.
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment.

Describe the bug
Connection fails if any vertex has a label that contains spaces.

To Reproduce
Steps to reproduce the behavior:

  1. Have a vertex with a label that contains spaces.
  2. Try to establish or synchronize a connection which will fail.

In the file the following code removes all the white space characters even in the labels.

  return `
   g.V()
     .project(${labels.map(l => `"${l}"`).join(",")})
     ${labels.map(l => `.by(V().hasLabel("${l}").limit(1))`).join("")}
     .limit(1)
  `.replace(/(\t|\s)+|\n/g, "");

Expected behavior
Tool should be able to handle vertices with labels that have whitespace characters.

Rename and rewrite SPARQL query incomingOneHopTemplate.ts

https://github.com/aws/graph-explorer/blob/2a99b249e2d6fc64020a96c88802306ee9731fc7/packages/client/src/connector/sparQL/templates/incomingOneHopTemplate.ts

Please see below.

please rename to 'getAllIncomingRelationshipsFilteredeByClass.ts'

%%sparql

/**
 * Fetch all neighbors whose source is the given vertex.
 *
 * @example
 * sourceId = "http://www.example.com/soccer/resource#London_Stadium"
 * vertexTypes = [
 *   "http://www.example.com/soccer/ontology/Stadium",
 *   "http://www.example.com/soccer/ontology/League"
 * ]
 * limit = 10
 * offset = 0
 *
 * SELECT *
 * {
 *   ?start ?property ?propertyValue
 *   {
 *     SELECT *
 *     {
 *       ?start ?edge <http://www.example.com/soccer/resource#London_Stadium>
 *       FILTER(!isLiteral(?start))
 *       {
 *         SELECT *
 *         {
 *           ?start a ?vertexType
 *           {
 *             SELECT *
 *             {
 *               ?target a ?targetVertexType
 *               FILTER(?target=<http://www.example.com/soccer/resource#London_Stadium>)
 *             }
 *           }
 *           FILTER(
 *             ?vertexType=<http://www.example.com/soccer/ontology/Stadium> ||
 *             ?vertexType=<http://www.example.com/soccer/ontology/League>
 *           )
 *         }
 *       }
 *     }
 *     LIMIT 10 OFFSET 0
 *   }
 * }
 */

# I think this is doing the same thing....
# get all subjects and predicates for object 'x' in one of classes in list
 
SELECT ?p ?o WHERE {
 
     ?s ?p <http://www.example.com/soccer/resource#London_Stadium> ;
        a  ?class .
     
     FILTER(
              ?vertexType=<http://www.example.com/soccer/ontology/Stadium> ||
              ?vertexType=<http://www.example.com/soccer/ontology/League>
           )
 }

[Feature request] Ability to write/update data from Explorer

Is your feature request related to a problem? Please describe.
I would like the ability to annotate data by adding new properties or edges or nodes and having the ability to overwrite an existing data point.

Describe the solution you'd like
Ability to perform CRUD operations on my data

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Support for Non-String Vertex/Edge IDs with Property Graph Data

Describe the bug
At present, any use of non-String vertex IDs appears in the UI as [object Object].

image

In the query response, the GraphSON response object contains the following:

...
{
    "@type":"g:Vertex",
    "@value":{
        "id":{
            "@type":"g:Int64",
            "@value":2306
        },
        "label":"airport"
   }
}
...

With using string-based IDs, the following is returned:

...
{
    "@type":"g:Vertex",
    "@value":{
        "id":"2306",
        "label":"airport"
   }
}
...

The extra type field gets returned for non-string IDs, causing the values to not be serialized properly back to the UI.

To Reproduce
Steps to reproduce the behavior:

Using Gremlin Server and TinkerGraph (with a vertexIdManager=ANY), create two vertices:

g.addV('airport').property(id,'2306')
and
g.addV('airport').property(id,2306)

Expected behavior
The ID should appear as the same value regardless of data type used.

Desktop (please complete the following information):

  • OS: MacOS
  • Browser: Firefox
  • Version: 102.7.0esr

Additional context
Add any other context about the problem here.

Named Graph support for RDF graphs

RDF data may be organised into Named Graphs, but the explorer has no way of filtering by them.

Add support to filter by RDF Named graph.

[Feature Request] Integration with Neptune graph summary API

Community Note

  • Please use a 👍 reaction to provide a +1/vote. This helps the community and maintainers prioritize this request.
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment.

Graph Explorer Version (and Graph Database and Version used if applicable)
For Neptune engine versions 1.2.1.0 and later

Is your feature request related to a problem? Please describe.
N/A

Describe the solution you'd like
Use the summary API for making requests related to count or display of node/edge labels and other useful information on the summary API response

Additional context
Add any other context or screenshots about the feature request here. Describe any alternatives you've considered.

Unable to synchronize Neptune DB

Hi guys,

We have followed the steps described in the guide, however, we are having problems synchronizing with our Neptune DB.

We have seen that when calling the _AbstractConnector to the endpoint "https://{ourneptuneendpint}:8182/?gremlin=g.V().groupCount().by(label)&format=json"
a connection_timeout is produced, while if from the same EC2 and container we launch a curl -G "https://{ourneptuneendpint}:8182/?gremlin=g.V().groupCount().by(label)&format=json" we get the results.

What could be going on here?

RDF visualization - Expand buttons not working

https://demo.opensource-neptune-workbench.connected-fi.com/#/graph-explorer

EITHER

  1. Log into https://demo.opensource-neptune-workbench.connected-fi.com/#/graph-explorer and connect to the RDF dataset
  2. Search for Tottenham
  3. Right click and 'expand'

OR

  1. Log into https://demo.opensource-neptune-workbench.connected-fi.com/#/graph-explorer and connect to the RDF dataset
  2. Search for Tottenham
  3. Select Tottenham
  4. click 'expand' in right hand window

BUG - nothing happens

proxy-server: The security token included in the request is expired

Hello!

When IAM Auth is enabled, AWS credentials expire after some time. From my POV, proxy-server should renew credentials automaticalLy, but instead we are getting the following errors from the proxy-server endpoint:

{"code":"AccessDeniedException","requestId":"XXX-XXX-XXXX-XXXX-XXX-XX","detailedMessage":"The security token included in the request is expired"}

[Bug] Local installation without SSL does not start

Graph Explorer can no longer be started without using SSL and certificates. The script https://github.com/aws/graph-explorer/blob/main/docker-entrypoint.sh then ends with exit 1. But according to https://github.com/aws/graph-explorer/blob/main/additionaldocs/development.md a docker container without GRAPH_EXP_HTTPS_CONNECTION should be accessible using http instead of https.

This results in significant additional efforts when AWS is to be installed and used only locally. And at the moment it is not clear if using SSL locally works. See #86

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.