4 ms·
> 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 qu
by enragedcacti 2y ago
> 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.
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 2y ago> clunky lists Not sure what the problem is here. The nodes and relationships are represented as JSON so it's fairly easy to work with them. They also come with a pretty extensive set of list functions[0] and operators[1]. 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/ https://neo4j.com/docs/cypher-manual/current/functions/list/ [1] https://neo4j.com/docs/cypher-manual/current/syntax/operators/#query-operators-list https://neo4j.com/docs/cypher-manual/current/syntax/operator... [2] https://neo4j.com/docs/cypher-manual/current/clauses/unwind/#unwind-unwinding-a-list https://neo4j.com/docs/cypher-manual/current/clauses/unwind/...
- enragedcacti 2y agoIt has been a while so maybe things have changed, but the main reasons I remember are 1) lists stored as a property must be a homogeneous list of simple builtin datatypes so no mixing of types, custom types, or language tagging like RDF has as first class concepts. 2) indexes on lists are much more limited ( exact match only iirc) so depending on the size of the data and the search parameters it could be a big performance issue. 3) cypher gets cumbersome if you have many multi-valued properties because every clause becomes any(elem in node.foo where <clause>). In Sparql it's just ?node schema:foo <clause>. I don't think everybody should run away from property graphs for RDF or anything, in terms of the whole package they are probably the right technical call ninety-something percent of the time. I just find Neo4J's fairly consistent mischaracterization annoying and I have a soft spot for how amazingly flexible RDF is, especially with RDF-star.
- CharlieDigital 2y agoWhat would you recommend as an RDF database to explore?
- bawolff 2y agoIf you just want to try some queries, there is a public sparql wikidata endpoint at https://query.wikidata.org https://query.wikidata.org . If you press on the file folder icon there are example queries, which let you get a feel for the query language.
- lolive 2y agoGraphDB is the one I usually use. It has a web interface that eases the first steps. Virtuoso (especially Virtuoso 7, which is open source) is also an option. [a bit more command line based]. In case you want to have a look a the SPARQL client I maintain, Datao.net, you can go to the website and drop me a mail. [i really need to update the video there as the tool has evolved a lot since that time]
- zozbot234 2y agoThe new kid on the block is very much QLever. Still lacking some features, especially wrt. real time update that make it unsuitable for replacing the Wikidata SPARQL endpoint altogether just yet, but it's clearly getting there.
- riku_iki 2y ago> The new kid that kid is 7 years old already, and in my understanding currently has only one active contributor. But idea of the project is very strong.
- khaki54 2y agoMarklogic is the best triple store