TypeDB Lecture: Why We Need a Polymorphic Database

Seeing the lecture https://www.youtube.com/watch?v=2S0zPXQCy0U&t=1541s on Why We Need a Polymorphic Database, does this meen that TypeDB will support graphs without a schema?

No it will not! TypeDB is a polymorphic database. One of the essential components of a polymorphic database is the schema, which provides the context necessary to enforce semantic integrity and resolve declarative polymorphic queries. If you’re looking for a schemaless graph database, then there are many great solutions out there.

What I am looking is for a schema less hyper graph database with an inference engine that can take rules like TypeDB Can you recommend me one?

You could just have a trivial schema.

define 
id sub attribute value string;
label sub attribute, value string;

vertex sub attribute, own id @key, plays edge:from, edge:to;
edge sub relation, relates from, relates to, owns label; # or just to
insert 
$a isa vertex, has id "here";
$b isa vertex, has id "there";
(from:$a,  to:$b) isa edge, has label "road";
match 
(from:$a, to: $b) has label "road"; (from: $b, to: $c) has label "rail";

If we let type-inference handle things, we can play some golf in the match statements:

define 
label sub attribute, value string;
vertex sub attribute, value string, plays edge:endpoint;
edge sub relation, relates endpoint, has label ;
match 
($a,$b) has "road"; ($b, $c) has "rail";

I don’t know of any off the top of my head. That’s quite a unique intersection of features, and I think you’ll struggle to find something that does those things without a schema.

I like the type-inference but the data are stored as strings. Is there a way to store the data in their correct data-type regardless of how they were inserted. Also is there a way for the database to infer the input is a label, vertex or edge? What about unique keys. Can Typedb infer those? I am looking for the absolute generalist schema where the Database inference engine does as most of the work as possible.

I’m not sure what you mean.
Attributes are stored as whatever value they’re declared to be.

If you defined attributes

define
  name sub attribute, value string;
  age sub attribute, value long;

You would only be able to insert strings for the attribute name and longs for the attribute age. Trying to insert a string for an age would throw an error.

define
label sub attribute, value string;
vertex sub attribute, value string, plays edge:endpoint;
edge sub relation, relates endpoint, has label ;

I am referring to the above schema you’ve provided. It defines everything as string.