Three ideas

Hi

I thought I'd put the ideas I shared during the longer discussion in one
place to make it easier for people to read and give feedback. I love what's
been achieved so far, I just want whatever is released to be the best
possible thing that could be released. I'm not certain of any of the things
in this email, they're just ideas. Any feedback at all is welcome and
appreciated, even as little as "+1" or "-1".

Summary:
1. Optional time, space, and certainty positions.
2. Separating additional data from metadata.
3. Simple, compound, and complex statements.

- - -

*1. Optional time, space, and certainty positions*

We exist in time and space, and this type of modeling could possibly be
easier. A statement would have four optional positions, leaving the time
and space positions blank would mean "unbounded", and leaving the last
position blank would mean 1.0:

Subject Relation Object T1 T2 SpatialBound Certainty

Examples:

:RichardB :marriedTo :LizT 1964 1974
:RichardB :marriedTo :LizT 1975 1976

:BigMac :price-USD 7.30 T1 T2 :Switzerland
:BigMac :price-USD 1.62 T1 T2 :India

If anybody has worked with temporal databases they might see an analogy
with "valid times". By extension, the spatial bound could be thought of as
a "valid place".

*2. Separating additional data from metadata*

This would remove a lot of ambiguity and creates a clear order of
assertion. It also seems to match the Wikidata data model.

Example:

:LizT :starredIn :JaneEyre
    {
        :role :HelenBurns,
        :pay-USD 10000,
    }
    {|
        :statedBy :Bob,
        :statedIn :Wikipedia,
    |}

*3. Simple, compound, and complex statements*

Taking inspiration from linguistics, there could be four different types of
statements:

1. Simple statement
2. Compound statement
3. Complex statement
4. Compound-complex statement

Simple statement (binary relationship):
S R O T1 T2 SB C

Compound statement (graph):
{
    S R O T1 T2 SB C,
    S R O T1 T2 SB C,
    S R O T1 T2 SB C,
}
    T1 T2 SB C

Complex statement (n-ary relationship):
S R O T1 T2 SB C
    {
        R O T1 T2 SB C,
        R O T1 T2 SB C,
    }

Compound-complex statement (n-ary relationship):
{
    S R O T1 T2 SB C,
    S R O T1 T2 SB C,
    S R O T1 T2 SB C,
}
    T1 T2 SB C
    {
        R O T1 T2 SB C,
        R O T1 T2 SB C,
    }

This creates consistency, and makes it easy to reason about the
temporal/spatial validity of any graph.

The existing RDF-Star "<<" and ">>" delimiters could be applied to
statements of any type to say that a statement was "neutrally asserted", as
I think Pat has described it before. Maybe for completeness, and based on
something Pat published, other delimiters could be created that would mean
"negatively asserted", something like "<!" and "!>" for example.

The existing RDF-Star "{|" and "|}" delimiters could be applied to
statements of any type to add metadata. The example in Section 2 of this
email is an example of a complex statement with metadata.

And I'm not sure, but it seems that nesting statements could be a general
solution to contexts, the deepest nested statements would be in the most
specific contexts. I haven't examined it properly though.

If you've made it here thanks for reading! If you need more examples please
ask and I'll do my best. I love everything done so far, I just want to
bounce around these additional ideas with the hope that they're
constructive. Please reply with any feedback at all, good and bad, it's all
welcome!

Regards
Anthony

Received on Saturday, 8 January 2022 09:40:39 UTC