RDFn (simplified): Set of Triples and Set of Edges

Happy New Year to everybody! Here is a simplified version of RDFn, after eliminating some of the aspects that may be helpful in practice but not strictly essential for modeling (such as, auto-naming,  reservation of exclusive IRI namespaces for names of "edges", isAsserted attribute, and edge-set naming).

RDFn Graphs:
===========
An RDFn graph is made up of two sets: 1) Set of RDF triples 2) Set of RDFn edges.

RDF Triples:
=========
Same as RDF triples in RDF1.1 [1], but uses the extended definition of Literals in RDF1.2 working draft [2].

RDFn Edges:
===========
An RDFn edge is a 4-tuple that is defined as follows: If s is an IRI [3] or a blank node [4], p is an IRI, o is an IRI, a blank node, or a literal [2], and n is an IRI or a blank node, then (s, p, o, n) is an RDFn edge.

Given an edge (s, p, o, n), s is called the subject of the edge, p is called the predicate of the edge, o is called the object of the edge, and n is called the name of the edge.

The name of an RDFn edge may be used as the subject or object of an RDF Triple or another RDFn edge.

Note A: If use of the name of an edge e1 as the subject and/or object of another edge e2 is considered a dependency of the edge e1 on the edge e2, then it is not valid in RDFn to have a circular dependency, based on transitivity, where e1 depends on e1.

Note B: One could use RDF triples such as (n, rdf:type, C), where C is a class from a set of classes {rdfn:Occurrence, rdfn:Quote, …} that are part of a class hierarchy with rdfn:EdgeId as the root class, to indicate that an RDFn edge (s, p, o, n) belongs to some special subcategory (with implications on entailment).

Note C: Here we assume the presence of a functional dependency n -> (s, p, o) where (s, p, o, n) represents an RDFn edge. Such a functional dependency is not essential and can be removed if support for naming of edge-sets is deemed critical.

Abstract Syntax (tweaked version of the DRAFT 2023.12.21 here [5])
=============

graph ::= (triple | edge)*
triple ::= subject predicate object
edge ::= subject predicate object name
subject ::= iri | BlankNode
predicate ::= iri
object ::= iri | BlankNode | literal
name ::= iri | BlankNode

Sample RDF Graph using Concrete Syntax (N-Triple with edge support)
==================================

:liz :spouse :richard | :wed-1 . # edge 1 (independent of, and hence does not create, any triple)
:wed-1 :start 1964 .             # triple 1a (uses name of edge 1 as subject)
:wed-1 :end 1974 .               # triple 1b (uses name of edge 1 as subject)

:liz :spouse :richard | :wed-2 . # edge 21 (independent of, and hence does not create, any triple)
:wed-2 :start 1975 .             # triple 2a (uses name of edge 2 as subject)
:wed-2 :end 1976 .               # triple 2b (uses name of edge 2 as subject)

Thanks,
Souri.

[1] https://www.w3.org/TR/rdf11-concepts/#section-triples
[2] https://www.w3.org/TR/rdf12-concepts/#section-Graph-Literal
RDF 1.2 Concepts and Abstract Syntax<https://www.w3.org/TR/rdf12-concepts/#section-Graph-Literal>
The Resource Description Framework (RDF) is a framework for representing information in the Web. This document defines an abstract syntax (a data model) which serves to link all RDF-based languages and specifications. The abstract syntax has two key data structures:
www.w3.org

[3] https://www.w3.org/TR/rdf11-concepts/#section-IRIs
[4] https://www.w3.org/TR/rdf11-concepts/#section-blank-nodes
[5] https://github.com/w3c/rdf-star-wg/wiki/Semantics:-Andy's-proposal
[https://opengraph.githubassets.com/222e05c728ed0de689012eed1d628d98d17d012a5697dee2eadad09d87bfd298/w3c/rdf-star-wg]<https://github.com/w3c/rdf-star-wg/wiki/Semantics:-Andy's-proposal>
Semantics: Andy's proposal<https://github.com/w3c/rdf-star-wg/wiki/Semantics:-Andy's-proposal>
RDF-star Working Group. Contribute to w3c/rdf-star-wg development by creating an account on GitHub.
github.com

Received on Monday, 1 January 2024 17:54:58 UTC