Good article on the high level concepts of a knowledge graph, but some concerning mischaracterizations of core functions of ontologies supporting the class schema and continued disparaging of competing standards-based (RDF triple-store) solutions. That the author omits the updates for property annotations using RDF* is probably not an accident and glosses over the issues with their proprietary clunky query language.While knowledge graphs are useful in many ways, personally I wouldn't use Neo4J to build a knowledge graph as it doesn't really play to any of their strengths.
Also, I would rather stab myself with a fork than try to use Cypher to query a concept graph when better standards-based options are available.
CharlieDigital|1 year ago
The ability to "land and expand" efficiently (my term for how I think about KG's in Neo4j) is quite nice with Cypher. Retrieval performance with "land and expand" is, however, highly dependent on your initial processing to build the graph and how well you've teased out the relationships in the dataset.
Cypher is a variant of the GQL standard that was born from Cypher itself and subsequently the working group of openCypher: https://opencypher.org/More info:
https://neo4j.com/blog/gql-international-standard/
https://neo4j.com/blog/cypher-gql-world/
enragedcacti|1 year ago
Not just that, w.r.t. reification they gloss over the fact that neo4j has the opposite problem. Unlike RDF it is unable to cleanly represent multiple values for the same property and requires reification or clunky lists to fix it.
CharlieDigital|1 year ago
Neo4j's UNWIND makes it relatively straightforward to manipulate the lists as well[2].
I'm not super familiar with RDF triplestores, but what's nice about Neo4j is that it's easy enough to use as a generalized database so you can store your knowledge graph right alongside of your entities and use it as the primary/only database.
[0] https://neo4j.com/docs/cypher-manual/current/functions/list/
[1] https://neo4j.com/docs/cypher-manual/current/syntax/operator...
[2] https://neo4j.com/docs/cypher-manual/current/clauses/unwind/...
whakim|1 year ago
9dev|1 year ago
Do you by chance have any recommendations?
alexchantavy|1 year ago
westurner|1 year ago
GraphQL is a JSON HTTP API schema (2015): https://en.wikipedia.org/wiki/GraphQL
GQL (2024): https://en.wikipedia.org/wiki/Graph_Query_Language
W3C RDF-star and SPARQL-star (2023 editors' draft): https://w3c.github.io/rdf-star/cg-spec/editors_draft.html
SPARQL/Update implementations: https://en.wikipedia.org/wiki/SPARUL#SPARQL/Update_implement...
/? graphql sparql [ cypher gremlin ] site:github.com inurl:awesome https://www.google.com/search?q=graphql+sparql++site%253Agit...
But then data validation everywhere; so for language-portable JSON-LD RDF validation there are many implementations of JSON Schema for fixed-shape JSON-LD messages, there's W3C SHACL Shapes and Constraints Language, and json-ld-schema is (JSON Schema + SHACL)
/? hnlog SHACL, inference, reasoning; https://news.ycombinator.com/item?id=38526588 https://westurner.github.io/hnlog/#comment-38526588
throwaway48540|1 year ago
wey-gu|1 year ago
andersonvaz|1 year ago
jsemrau|1 year ago
Which ones would you recommend?