Would be great to have a dark mode setting on the community relaunch. It's not always possible to download browser extensions. Feel free to enlighten me if I missed it.
... View more
Submitted on
07-31-2020
03:23 AM
Submitted by
once-returner
on
07-31-2020
03:23 AM
As a Neo4j Bloom user, I want to easily upload custom icons for nodes so that I am not limited to the defaults.
Acceptance Criteria:
Users should be able to upload custom icons for Neo4j Bloom nodes.
Ideally, the supported filetypes would be .PNG and .SVG.
The required size / ratio for custom icons should be visible to users.
Ideally, Neo4j would be able to upscale / downscale .SVG icons gracefully for beautiful rendering.
... View more
Submitted on
11-05-2018
04:32 AM
Submitted by
mckenzma
on
11-05-2018
04:32 AM
I would love to see spatial support in the Neo4j browser to control how nodes are displayed. As the growth of spatial data continues, this will be highly beneficial when querying and understanding the data.
... View more
Submitted on
12-11-2021
05:42 PM
Submitted by
dylanloader
on
12-11-2021
05:42 PM
Hi everyone,
I'm currently working through some of Neo4j's existing white papers and I'm wondering if there is some kind of list of academic references associated with them.
Currently the two papers I have of interest are " Financial Fraud Detection with Graph Data Science" By Amy E. Hodler and "Improving Machine Learning Predictions Using Graph Algorithms" By Amy E. Hodler. I'm also reading the Graph algorithm book provided by Neo4j.
In the first two white papers there are some quantitative statements (eg. "With graph data science, you detect more fraud in the data you already have without changing
your ML pipeline.") that I would love to find a cite-able paper for.
If anyone has other recommendations for comparative computation resources please feel free to send them to me. I definitely see the efficiency in graph approaches, but need some references for academic writing on the topic.
P.S. I will also post this to the discord.
Thank you in advance,
Dylan Loader
... View more
Submitted on
11-25-2020
11:42 AM
Submitted by
clem
on
11-25-2020
11:42 AM
In this tutorial:
Neo4j Graph Database Platform
Creating Relationships - Introduction to Neo4j 4.x Series
There is the query:
MATCH (a:Person), (m:Movie)
WHERE a.name = 'Michael Caine' AND m.title = 'Batman Begins'
CREATE (a)-[:ACTED_IN]->(m)
RETURN a, m
with an explanation that this query will create a cartesian product but it does NOT explain how to avoid that!
Avoiding a cartesian product is explained here:
Avoid cartesian product when create relationships Cypher
Hi! I'm new to neo4j and I try to find some help here.
I have two sets of nodes say one is people and another is car.I want to create relationship between these two sets of nodes but I don't want to create relationships base on cartesian product of result return by match since it will take much time.
The cypher statement I use like below:
MATCH (a:test_11),(b:test_12)
WHERE a.car ="0" AND b."price" = "1"
MERGE (a)-[r:own{time:2020,location:"LA"}]->(b)
Is there a way to write cyher which ca…
(I would have made a Pull Request on it, but I don't know where it lives in github.)
... View more
Submitted on
09-02-2018
11:04 PM
Submitted by
Illia_Komendant
on
09-02-2018
11:04 PM
"Your topic is similar to.." is awesome feature.
Thanks for that 😃
... View more
Submitted on
03-06-2022
11:39 PM
Submitted by
okaytouch
on
03-06-2022
11:39 PM
Hello. I read the graphql doc and find there isn't exist mutation of upsert(or createOrUpdate) which is very useful in batch update, it has been implemented by Dgraph. https://dgraph.io/docs/graphql/mutations/upsert/
I only find connectOrCreate which can create or connect the node, but don't offer hook to UPDATE the property's value of match(connect) node.
Say we have a schema
type Product {
id: ID @id
name: String
hsCode: String
price: Currenty @relationship(type: "HAS_PRICE", direction: OUT)
}
type Currenty {
id: ID @id
currencyCode: CurrencyCode @default(value: USD)
amount: Float!
}
enum CurrencyCode {
"US Dollar"
USD
"EURO Currency "
EUR
"Japan Yuan"
JPY
"Hongkong Dollar"
HKD
"China Yuan"
CNY #ISO 4217
}
I want to update the name of Product and amount of price within same mutation. Sometime we will offer price when create product, but something not.
So when I want to update price of product, there maybe has not price(type: Currency).
What I expected is when the price is not exsisted(determined by id), it will created a new one, if the price's id exist, it will update the node with the given data within some method such as onUpdate or onCreateOrUpdate...
mutation xx{
updateProducts(
where:{id:"***"}
update:{
name: "Foobar"
price:{
connectOrCreate:{ // I want another upsert operation here
where:{id:"**"}
onCreate // It should have onConnect hook too. So we can update the node here, such as onConnect { node: { name: "Product A" } }, we will match the node and UPDATED at the same time here.
// if will have onCreateOrUpdate hook here, it will be great, I will update or create from given data without considering which type(create or connect) of mutation it take.
}
}
}
)
}
So I was stuck now, I can't update the price if the id exist. I have to write another Mutation to do this task. So I have two Mutation for nested update, also I have to judge if the price's id(type Currency) is exisit before I decide which Mutation to apply.
... View more
Submitted on
08-01-2019
04:41 AM
Submitted by
Kirsten_Langend
on
08-01-2019
04:41 AM
Hi,
I have made some typos when creating properties (types) and would like to remove the property types listed in the browser. Is there a command for that?
Also, the schema has some relationships that are not in the graph, but appears in the graph schema. How to clean that up?
I cannot seem to find solution for this documented anywhere - except starting all over again.
br Kirsten
... View more
Submitted on
02-09-2019
07:55 AM
Submitted by
mckenzma
on
02-09-2019
07:55 AM
Hi everyone,
I really like that Neo4j has a Community Site like this. It is cool having one place to see how others are learning and sharing. The fact I can interact with fellow graphistas from around the world is just really cool. The Community is one of the best aspects of Neo4j.
That is all.
Michael
... View more
Submitted on
02-07-2019
06:33 AM
Submitted by
mckenzma
on
02-07-2019
06:33 AM
Hi,
This is just another browser request. I would love the ability to adjust the size of the Command Line in the Browser. Sometimes I want to reference a previous command as I work on a problem, but my current Command Line entry is restricted to about 6 lines. I know I can press ESC and have the Command Line go full screen, but I would like to see the option to drag it down so I can control how much of the Command Line I can see.
Thank.
... View more
Submitted on
02-17-2021
10:36 AM
Submitted by
clem
on
02-17-2021
10:36 AM
I noticed that the the APOC reverse function has been deprecated:
Neo4j Graph Database Platform
apoc.coll.reverse - APOC Documentation
This section contains reference documentation for the apoc.coll.reverse function.
I presume there will be an Ascending/Descending option for the various APOC functions? This doesn't seem to be explained in the APOC documentation.
Also, there is an error in the documentation in:
Neo4j Graph Database Platform
apoc.coll.sortNodes - APOC Documentation
This section contains reference documentation for the apoc.coll.sortNodes function.
The example purportedly shows how to return sorted Nodes in name ascending order, but the doc forgot to mention that you need to insert ^ before the name property:
so this
apoc.coll.sortNodes(people, 'name')
should be:
apoc.coll.sortNodes(people, '^name')
I tried editing using github page for apoc.coll.sortNodes but I'm not sure how to get to the actual github page with the example text to edit it. (Also, the example out of the box doesn't work with the Movie DB.)
... View more
Submitted on
10-29-2018
06:14 PM
Submitted by
mckenzma
on
10-29-2018
06:14 PM
I would love to be able to sort projects by name on the Desktop Application (MacOS). Or am I missing this as an option?
... View more
Submitted on
10-05-2018
09:37 AM
Submitted by
mckenzma
on
10-05-2018
09:37 AM
You can set the community page to have a dark theme in your profile page....YES!!!!
... View more
Submitted on
01-15-2021
04:52 PM
Submitted by
clem
on
01-15-2021
04:52 PM
I have a couple of suggestions to improve the documentation.
Add some interesting numeric fields to the Movie DB, such as Cost and BoxOffice.
I figured out an interesting example using SubQuery. Cost of a movie is many digits and varies a lot, so it's a bit hard to look at without formatting. But if you format the Cost as a string, then it won't sort numerically. With Subqueries, you can do a sort of the Cost as Numeric and in the subsequent query, drop the Numeric column (which is ugly but accurate.)
CALL{
MATCH (m:Movie)
WITH m.title AS Title,
m.cost AS CostNumber, // cost as numeric so we can sort
apoc.number.format(m.cost, '$#,###') AS Cost // as a formatted string
RETURN title, Cost, CostNumber ORDER BY CostNumber DESC // ordered by Numeric
}
RETURN Title, Cost limit 100 // CostNumber is dropped
... View more
Submitted on
12-17-2020
10:20 AM
Submitted by
clem
on
12-17-2020
10:20 AM
If I have a property with a long string, it would be nice if the Browser's property view box at the bottom of the cell was growable. (This is not an issue with Bloom, which has plenty of space to show a big property.)
For example, I added a property "synopsis" to the movie DB. Since the string is very long, it won't entirely fit inside the bottom property viewer. The box is scrollable, so I can eventually see the entire property, but it's annoying to have to scroll all the time.
... View more
Submitted on
11-30-2020
08:20 AM
Submitted by
clem
on
11-30-2020
08:20 AM
Somebody else had this problem. When I tried to downgrade to 4.1.4, the Downgrade button is dimmed. (I'm currently on 4.2.1.). The reason why I want to do this, is because Neosemantics only supports 4.0 and 4.1. (P.S. It would be nice if all Neo4J supported code could move forward when a new release is made.)
At first, I thought maybe it's because I've been deleting old versions of the DB. So, I spun up a new DB with 4.1.4 but still the Downgrade button is dimmed for my old DB.
I also tried upgrading my new DB to 4.2.1 and then trying to downgrade to 4.1.4 but for this new DB that I would have thought would "know" about 4.1.4 doesn't seem to. Again, I can't Downgrade to a previous version.
See also:
How to downgrade neo4j Newbie Questions
Downgrading you can do in the Neo4J desktop program, stop the database.
Click on the 3dots and select manage; select the upgrade tab and select the correct version.
Alternatively you might want to create a new database with a recent 3.x version and use that for your application.
[image]
... View more
Submitted on
10-19-2020
06:25 AM
Submitted by
adam_cowley
on
10-19-2020
06:25 AM
There are a variety of ways to interact with and use graph data in Neo4j.
This guide introduces the different products we provide at Neo4j to suit your diverse business and technology needs and show you how to get started using them.
From our core product (the graph database) to visualization for business users, we provide a variety of opportunities to maximize your business and simplify your data.
This is a companion discussion topic for the original entry at https://neo4j.com/developer/graph-platform/
... View more
Submitted on
09-17-2020
08:31 PM
Submitted by
jmaness52
on
09-17-2020
08:31 PM
Can we please have an option for a skinny cursor if the editor is in insert mode?
... View more
Submitted on
08-12-2020
10:26 AM
Submitted by
adam_cowley
on
08-12-2020
10:26 AM
At Neo4j, we want to provide options to solve many different kinds of business and technical needs.
Our goal is that our products are simple and fit your use case, whatever it may be.
Whether you are relying upon graphs for transactions, market analysis, operations optimizations, or anything else, Neo4j strives to provide a seamless process for integrating our tools with the rest of your existing system.
Capabilities in the Neo4j graph platform include aiding developers to import data to the graph, business analysts to explore the data with ease, and data scientists to make decisions based on analysis results.
No matter your role within your organization, we want to put the power of the graph and Neo4j within reach to help you maximize business value and achieve technical needs.
Graph Data Modeling
The richness of graph data and the performance of your queries depends closely on how the data is modeled.
Data in Neo4j should resemble the real-world information and relationships, but data modeling focuses on understanding what questions the data will answer and what types of information you need from it.
Your data model may also impact the queries you write and the performance of the results returned.
Choosing to store certain pieces of data as properties versus separate nodes and determining how to structure your relationships is part of the process to maintain good data and maximize query performance.
Cypher - A Next-Generation Query Language
We wanted to make querying graph data not only fun, but easy to learn, understand, and use for everyone.
That’s why we created a human-friendly, declarative query language which uses ASCII-Art to represent visual graph patterns for finding or updating data in Neo4j.
Cypher was based on the power of SQL, but optimized specifically for graphs.
The syntax is concise and straightforward, allowing users to easily write all the normal CRUD operations in a simple and maintainable way.
Graph Visualization
Visualizations often provide a better understanding of your data than textual formats can support.
As one of our customers said of graph visualization, "I can look at a graph of transactions and fraudulent activity pops out for me."
Neo4j offers methods for visualizing data, such as Neo4j Browser for developers, Neo4j Bloom for analysts and others looking for natural language search, and libraries for developers to embed graphs directly into their applications.
We also have several partners providing additional options in this space to fit a variety of visualization needs.
Data Import
If you are looking to bring data into Neo4j from another source, Neo4j has a variety of tools and partner applications for different approaches to the data import problem.
We want to maximize value by simplifying the import process and allow you to start analyzing your graph data sooner.
Our goal in this area to help developers transfer some of their own relevant data into Neo4j to see how it would look and what a graph database can help them do with it.
We also have options for other types of data import, including integrations with other vendor products and tools.
This area aids businesses to transport data from technology to technology as easily and smoothly as possible.
Drivers for Popular Programming Languages
Developing applications using Neo4j is straightforward.
Using the binary "Bolt" protocol, we provide officially-supported drivers for languages such as .Net, Java (also Spring), JavaScript, and Python.
Other drivers for the binary and the http protocol are developed by our active contributor community.
These drivers allow developers to build applications and integrations using the programming language(s) of their choice and easily interact with data in the Neo4j database.
Extensions and Integrations
Neo4j is supported by a rich ecosystem of libraries, tools, drivers, and guides provided by Neo4j, partners, users, and community contributors.
We want to allow users the ability to integrate with familiar technologies and minimize pain associated with a rip-and-replace approach to solutions.
This area continues to expand as the technology ecosystem and developer needs consistently grow.
Before writing any new code, we recommend checking out GitHub and other resources to see if something has already been developed to solve your need.
Deploying Neo4j
If you are looking to run Neo4j in production environments, we provide various options for types of deployments and configurations.
Neo4j provides options for causal clustering, performance tuning, cloud deployment, backups and failovers, and more.
We also have tools to plan and manage your deployments and preferences, including a calculator to help you know how much hardware you will need to run your data in Neo4j.
From local to cloud deployments and anything in between, we can help satisfy your preferences and requirements.
While each implementation will have its own advantages and difficulties, the power to choose resides in the business and technical needs of your company.
This is a companion discussion topic for the original entry at https://neo4j.com/developer/get-started-notrack/
... View more
Submitted on
08-05-2020
09:31 AM
Submitted by
adam_cowley
on
08-05-2020
09:31 AM
To fully utilize the power of a graph database, we also need to express the relationships between our nodes.
Relationships are represented in Cypher using an arrow --> or <-- between two nodes.
Notice how the syntax looks like the arrows and lines connecting our nodes in the visual representation.
Additional information, such as how nodes are connected (relationship type) and any properties pertaining to the relationship, can be placed in square brackets inside of the arrow.
In our example, the lines with LIKES , IS_FRIENDS_WITH , and WORKS_FOR between nodes are our relationships.
Undirected relationships are represented with no arrow and just two dashes -- .
This means that the relationship can be traversed in either direction.
While a direction must be inserted to the database, it can be matched with an undirected relationship where Cypher ignores any particular direction and retrieves the relationship and connected nodes, no matter what the physical direction is.
This allows the queries to be flexible and not force the user to know the physical direction of the relationship stored in the database.
If data is stored with one relationship direction, and a query specifies the wrong direction, Cypher will not return any results.
In these cases where you may not be sure of direction, it is better to use an undirected relationship and retrieve some results.
//data stored with this direction
CREATE (p:Person)-[:LIKES]->(t:Technology)
//query relationship backwards will not return results
MATCH (p:Person)<-[:LIKES]-(t:Technology)
//better to query with undirected relationship unless sure of direction
MATCH (p:Person)-[:LIKES]-(t:Technology)
Relationship Types
Relationship types categorize and add meaning to a relationship, similar to how labels group nodes.
In our property graph data model, relationships show how nodes are connected and related to each other.
You can usually identify relationships in your data model by looking for actions or verbs.
You can specify any type of relationship you want between nodes, but we recommend good naming conventions using verbs and actions.
Poor relationship type names make it more difficult to both read and write Cypher (remember, it should sound like English!).
For example, let us look at the relationship types from our example graph.
[:LIKES] - makes sense when we put nodes on either side of the relationship (Jennifer LIKES Graphs)
[:IS_FRIENDS_WITH] - makes sense when we put nodes with it (Jennifer IS_FRIENDS_WITH Michael)
[:WORKS_FOR] - makes sense with nodes (Jennifer WORKS_FOR Neo4j)
Relationship Variables
Just as we did with nodes, if we want to refer to a relationship later in a query, we can give it a variable like [r] or [rel] .
We can also use longer, more expressive variable names like [likes] or [knows] .
If you do not need to reference the relationship later, you can specify an anonymous relationship using two dashes --+, +-->+, +<-- .
As an example, you could use either -[rel]-> or -[rel:LIKES]-> and call the rel variable later in your query to reference the relationship and its details.
If you forget the colon in front of a relationship type like this -[LIKES]->, it represents a variable (not a relationship type).
Since no relationship type declared, Cypher will search all types of relationships.
This is a companion discussion topic for the original entry at https://neo4j.com/developer/cypher/syntax/
... View more