JeffreyBenjaminBrown / hode

rslt, take five-ish
GNU General Public License v3.0
147 stars 4 forks source link

Clarify hode's relation to Semantic Synchrony #5

Closed stormwatch closed 4 years ago

stormwatch commented 4 years ago

Hello Jeffrey. Please excuse me for polluting the issues with this question which might seem silly but How does Hode differ and relate to Semantic Synchrony? Or are they completely unrelated? I am new to both.

Thank you

JeffreyBenjaminBrown commented 4 years ago

Hah! Not at all -- it's a good question.

Semantic Synchrony is a graph db written in Neo4j with an Emacs frontend. It's relatively simple to use, and its data model couldn't be more intuitive -- basically, nodes have text and there is one kind of relationship, which is directed.

Hode is more expressive -- rather than a single unlabeled binary relationship, you can have any number of relationships of any arity, nested in any structure. It also lets you query in a graph-aware way -- for instance, "show me everything Sarah needs that depends on Bill" -- using a language very close to ordinary English, as described here. (For instance, the query I gave as an example would be Sarah #needs /it && /it #(depends on) Bill.

Semantic Synchrony lets you search the text of your graph using Lucene, which gives a better text-search experience than Hode offers -- in Hode you basically can't make spelling mistakes and expect a search to work. (At least it'll tell you that it can't find the word.) However the Lucene search in SmSn applies to individual nodes only; you can't search for, say, nodes with the word "beautiful" descended from nodes with the word "contract theory".

@joshsh, SmSn's developer (I only played a bit part), is also making a more expressive alternative to SmSn. I can't really speak to its advantages but maybe he'll want to.

joshsh commented 4 years ago

Yes, perfectly good question. +1 to Jeff's answer. Some more details on the SmSn side:

You can traverse a Semantic Synchrony knowledge graph using Gremlin, but I very rarely do this; one usually gets around by navigating through tree views, and using free text search. The data model is very simple: a node has an ordered list of zero or more children, and may be the child of any number of other nodes. Nodes also have properties that indicate the data source, title, text, links to resources outside of the graph, weight, etc.

The next version of Semantic Synchrony will use the Scala-based implementation of Algebraic Property Graphs which is to be part of TinkerPop 4. This will give you the option of defining a more sophisticated schema for your knowledge graph. It should be straightforward to export your graph to RDF, and from there, to query using SPARQL.

stormwatch commented 4 years ago

Thank you. I think this is sufficiently closed.