- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Tue, 8 Jun 2010 06:31:59 -0400
- To: RDB2RDF WG <public-rdb2rdf-wg@w3.org>
* Eric Prud'hommeaux <eric@w3.org> [2010-06-07 11:49-0400] > In order to get some common terminology, I've created a draft of a > Direct Mapping. This defines a Direct Graph and demonstrates how this > definition can be extended. It would have helped, I suspect, if I'd remembered to include the URL! http://www.w3.org/2001/sw/rdb2rdf/directGraph/ Note the intended use for defining more complex mappings, à la http://www.w3.org/2001/sw/rdb2rdf/directGraph/#ManyToMany > The crux of it is still: > > directDB(db) ≝ { directR(r) ∀ r ∈ db } > directR(R) ≝ { directT(R, T) ∀ T ∈ R.Body } > directT(R, T) ≝ { directL(R, S, A) ∀ A ∈ scalar(T) } > ∪ { directN(R, S, A) ∀ A ∈ reference(T) } > ∣ S = nodemap(R, pk(T)) > directL(R, S, A) ≝ triple(S, predicatemap(R, A), literalmap(A)) > directN(R, S, A) ≝ triple(S, predicatemap(R, A), nodemap(R, A)) > > nodemap(R, A) ≝ IRI(stem + "/" + R.name "/" A.name + "." + A.value + "#_") > predicatemap(R, A) ≝ IRI(stem + "/" + R.name "#" A.name) > > I'm still playing with the notation. It's currently a pretty classic > notation: > > 3.1 Notation for Types > A : a type > A ⊔ B : disjoint union of A and B > ( A, B ) : tuple (Cartesian product) of types A and B > [ A ] : list of elements of type A > { A } : set of elements of type A > { A→B } : map of elements of type A to elements of type B > 3.2 Notation for Injectors > a : an instance of an A > ( a1, b1 ) : a tuple with elements a1 and b1 > [ a1, a2 ] : list with elements a1 and a2 > { a1, a2 } : set with elements a1 and a2 > { a1→b1, a2→b2 } : map with elements with key a1 mapped to b1 and key a2 mapped to b2 > 3.3 Supporting Functions > AB[a] : in a map of A to B, the instance of B for a given A* > > We can get more type-safety if we use something like a scala notation, > but I'm not sure how to tersely express things like disjoint union. > > 3.1 Notation for Types > x:X : x is an element in the set X > A ?? B : disjoint union of A and B (normally case classes > extending an abstract class, e.g.: > abstract class AB; A extends AB; B extends AB; > ) > ( A, B ) : tuple (Cartesian product) of types A and B > List[ A ] : list of elements of type A > Set[ A ] : set of elements of type A > Map[ A, B ] : map of elements of type A to elements of type B > 3.2 Notation for Injectors > a : an instance of an A > ( a1, b1 ) : a tuple with elements a1 and b1 > List( a1, a2 ) : list with elements a1 and a2 > Set( a1, a2 ) : set with elements a1 and a2 > Map( a1→b1, a2→b2 ) : map with elements with key a1 mapped to b1 and key a2 mapped to b2 > 3.3 Supporting Functions > AB(a) : in a map of A to B, the instance of B for a given A* > > -- > -ericP -- -ericP
Received on Tuesday, 8 June 2010 10:38:28 UTC