Hello Mike,

> I'm working our Blazegraph / TP3 integration and I have a few questions
> about how to deal with multi-properties / multi-valued properties.
> Blazegraph is an RDF database at its core, so everything gets converted
> into triples.  Blazegraph also supports the RDR specification, which allows
> triples to be used inside of other triples.

K. Just read your post on RDR.
        https://wiki.blazegraph.com/wiki/index.php/Reification_Done_Right

First thing. Note that you do NOT have to support multi-properties nor 
meta-properties if you don't want to. However, its strongly recommended.
        http://tinkerpop.incubator.apache.org/docs/3.0.1-incubating/#_features

Okay, now moving on…

> 1. Can you have multi-valued multi-properties?
> 
> element.prop = ["a", "b", "c"],  element.prop = ["b", "c", "d"]

This depends on your Features. See VertexPropertes.Features.UniformListValues 
and VertexProperties.Features.MixedListValues.

Thus, whatever you do support, be sure to make it explicit in your Features.

> 2. Can you have single-valued multi-properties with the same value?
> 
> element.prop = "a", element.prop = "a"

Yes. However, I just realized (and talking with Stephen) that TinkerGraph 
doesn't support it and its not an explicit Feature -- thus, we don't test for 
it.

gremlin> graph = TinkerGraph.open()
==>tinkergraph[vertices:0 edges:0]
gremlin> v = graph.addVertex()
==>v[0]
gremlin> v.property("name","marko")
==>vp[name->marko]
gremlin> v.property("name","marko")
==>vp[name->marko]
gremlin> v.properties("name")
==>vp[name->marko]

I just added this ticket:
        https://issues.apache.org/jira/browse/TINKERPOP3-919

If you can support it, support it.

> 2a. If so, can you attach different property-properties (provenance) to
> each instance?

Yes.

> 3. Can you have multi-properties with different cardinalities - e.g. one
> single-valued, one list, and one set?
> 
> element.prop = set["a", "b", "c"],  element.prop = list["b", "c", "d",
> "b"], element.prop = "a"

No. The cardinality is determined by the Feature.getCardinatlity(String key). 
Thus, its per key.

I'm not sure we have a test suite case for this either. I just made this ticket:
        https://issues.apache.org/jira/browse/TINKERPOP3-920

Those are really good questions with two potential holes in our test suite 
identified.

Thank you for your comments and good luck with BlazeGraph/TP3,
Marko.

http://markorodriguez.com

Reply via email to