Hi Michael,
Hi Niclas,
On 11/22/2014 2:13 AM, Michael Hunger wrote:
> Hey Niclas, when looking at your post, I wondered how you do your cypher
> query and thought you could easily speed up performance by a factor of
> 100 or 1000
>
> look at these nodes -> if you added the "kind" as a label to each node,
> like :Uri, :Literal, :BNode and then created an index on :Label(value)
> for each of those.
> You could even leave off the "kind" properties then.
>
that's also the approach we are following in our unmanaged extension for
our (RDF-based) graph data model and RDF.
> Alternatively for a quick win you can add a "generic" label, like
> ":Node" and create an index on :Node(value)
>
> Then (depending on the way you resolve things in your sparql impl, you
> should be able to speed it up massively, by using the label + value to
> find things (either via cypher or embedded api
> (graphdb.findByLabelAndProperty()
We also experimented with the label-based approach (see [1]) for
identifying the node types of the RDF-based graph data model (to make
use of the schema index approach of neo4j) in an earlier stage of
development. However, we didn't notify any difference in performance,
when querying our data. Furthermore, the metadata model (the RDF-based
graph data model) get mixed with the content itself. In my mind, it's a
better design approach to "separate" both worlds a bit from each other,
i.e., to define clear parts in the property graph model where one can
find content data and where metadata about the content (e.g., whether
the node is a literal node or a resource node). So I prefer to utilise
node labels to assign resource types (as I guess that's what they are
design for (to assign classes, types, categories, universals)), instead
of meta data model node types*.
Cheers,
Bo
*) albeit, we also write rdf:type statements into the graph db (which
can cause super nodes and which doubles this part of the content data)
to guarantee the compatibility to RDF
[1]
https://github.com/dswarm/dswarm-graph-neo4j/blob/3121b05d7a2f7c66945eb3068f6fde993bea55ce/src/main/java/org/dswarm/graph/rdf/parse/nx/Neo4jRDFHandler.java
>
> Michael
>
> |(a {kind: "uri", value: "
http://example.com <
http://example.com/>" })|
> A literal node:
> |(a {kind: "literal", value: "Text", type:
> "
http://www.w3.org/2001/XMLSchema#"})|
> A blank node:
> |(a {kind: "bnode" value: "genid--b1234"})|
>
>
> On Sat, Nov 22, 2014 at 2:10 AM, Andrii Stesin <
ste...@gmail.com
> <mailto:
ste...@gmail.com>> wrote:
>
> Hi Bo,
>
> yes it definitely has something in common. Would you please mind
> pointing me to some explanations, why reification is considered so
> harmful?
>
> I see some interesting points there, namely
>
> The subject of a reification
> <
http://www.w3.org/TR/2014/REC-rdf11-mt-20140225/#dfn-reification>
> is intended to refer to a concrete realization of an RDF triple,
> such as a document in a surface syntax, rather than a triple
> considered as an abstract object. This *supports use cases where
> properties such as dates of composition or provenance
> information are applied to the reified triple*, which are
> meaningful *only when thought of as referring to a particular
> instance* or token of a triple.
>
>
> it seems worth the attention at the very least. And also
>
> Since the relation between triples and reification
> <
http://www.w3.org/TR/2014/REC-rdf11-mt-20140225/#dfn-reification>s
> of triples in any RDF graph or graphs need not be one-to-one,
> asserting a property about some entity described by a
> reification
> <
http://www.w3.org/TR/2014/REC-rdf11-mt-20140225/#dfn-reification>
> need not entail that the same property holds of another such
> entity, even if it has the same components.
>
>
> This seems interesting to me. Also I like dictionary approach like
> in RDF HDT format
> <
http://www.rdfhdt.org/technical-specification/#triples>. What do
> you think about this combination as a basic data model?
>
> WBR,
> Andrii
>
> On Saturday, November 22, 2014 12:12:16 AM UTC+2, Bo Ferri wrote:
>
> Hi Andrii,
> well, this looks like a re-incarnation of RDF reification [1],
> which is
> the worst modelling option for subject-predicate-object
> statements in my
> mind ;)
>
> --
> You received this message because you are subscribed to the Google
> Groups "Neo4j" group.
> To unsubscribe from this group and stop receiving emails from it,
> send an email to
neo4j+un...@googlegroups.com
> <mailto:
neo4j+un...@googlegroups.com>.
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Neo4j" group.