- From: Souripriya Das <SOURIPRIYA.DAS@oracle.com>
- Date: Mon, 21 Nov 2011 07:39:02 -0800 (PST)
- To: <public-rdb2rdf-wg@w3.org>
- Cc: Seema Sundara <SEEMA.SUNDARA@oracle.com>
We think that there is a "phantom triples" problem (i.e., may generate triples that should not be there) with the SKOS-based scheme for representing many-to-one mapping of DBterms to RDFterms as illustrated by the following example where Translation Scheme B is more discerning than Translation Scheme A:
<RDFterm1, TranslationSchemeA, DBterm1>
<RDFterm1, TranslationSchemeA, DBterm2>
<RDFterm1, TranslationSchemeB, DBterm1>
<RDFterm2, TranslationSchemeB, DBterm2>
Here is a relational form:
RDFterm TranslationScheme (skos:inScheme) DBterm (skos:notation)
---------------- ------------------------ -------------------
RDFterm1 TranslationSchemeA DBterm1
RDFterm1 TranslationSchemeA DBterm2
RDFterm1 TranslationSchemeB DBterm1
RDFterm2 TranslationSchemeB DBterm2
Since the proposed structuring of the <DBterm> to <RDFterm> mapping in the SKOS-based scheme is of the form:
<RDFterm>
skos:inScheme <MappingScheme> ;
skos:notation <DBterm> .
translation of the above table to RDF, using (the non-unique) RDFterm column as subject (as implied by the SKOS-based scheme), generates the following INCORRECT set of RDF triples (using Turtle syntax):
# generated from table row numbers 1, 2, and 3:
<RDFterm1>
skos:inScheme <TranslationSchemeA>, <TranslationSchemeB>;
skos:notation "DBterm1", "DBterm2" .
# generated from table row number 4:
<RDFterm2>
skos:inScheme <TranslationSchemeB> ;
skos:notation "DBterm2" .
The above set of triples is INCORRECT because it includes the following NON-EXISTENT translation as a triple:
<RDFterm1> <TranslationSchemeB> "DBterm2" .
---------------
In the alternate proposal using R2RML-native properties and class (extended to allow many-to-one mapping), the set of triples would be as follows (exactly as intended):
<TranslationSchemeA> rr:translationMap
[ rr:toTerm <RDFterm1> ;
rr:fromTerm "DBterm1", "DBterm2" ;
] .
<TranslationSchemeB> rr:translationMap
[ rr:toTerm <RDFterm1> ;
rr:fromTerm "DBterm1" ;
] ,
[ rr:toTerm <RDFterm2>
rr:fromTerm "DBterm2" ;
] .
Here is a more concrete (Chinese food :-)) version of this example:
---------------------------------------------------------------------------------------------------------
Suppose we would like to translate as follows:
1) "Lo Mein" translated
to <Chinese> using both "InternationalCuisnineTranslationScheme" and "ChineseCuisineTranslationScheme"
2) "Fu Chi Fei Pian" translated
to <Chinese> using "InternationalCuisnineTranslationScheme" and
to <Sichuan> using "ChineseCuisnineTranslationScheme",
----------------------------------------------------------------------------------------------------------
Using the SKOS-based scheme this can be expressed as follows:
<Chinese>
skos:inScheme <InternationalCuisnineTranslationScheme> ;
skos:notation "Lo Mein", "Fu Chi Fei Pian" .
<Chinese>
skos:inScheme <ChineseCuisineTranslationScheme> ;
skos:notation "Lo Mein" .
<Sichuan>
skos:inScheme <ChineseCuisineTranslationScheme> ;
skos:notation "Fu Chi Fei Pian" .
Note that the following triple actually gets repeated if we translate the above Turtle to N-Triples:
<Chinese> skos:notation "Lo Mein" .
The above Turtle can be compacted to the following equivalent version (after removing the duplicate triple):
<Chinese>
skos:inScheme <InternationalCuisnineTranslationScheme>, <ChineseCuisineTranslationScheme> ;
skos:notation "Lo Mein", "Fu Chi Fei Pian" .
<Sichuan>
skos:inScheme <ChineseCuisineTranslationScheme> ;
skos:notation "Fu Chi Fei Pian" .
The above set of triples is INCORRECT because it includes the following NON-EXISTENT translation as a triple:
<Chinese> <ChineseCuisineTranslationScheme> "Fu Chi Fei Pian" .
-------------------------------------------------------------------------------------------------------------------
Using the alternate proposal, and extending it a bit to allow >1 cardinality for rr:fromTerm (to allow mapping many DBterms to one RDFterm), we can express the above situation as follows (benefits: every translationMap is neatly enclosed within a TranslationScheme boundary AND no triples representing a NON-EXISTENT translation):
<InternationalCuisnineTranslationScheme> rr:translationMap
[ rr:toTerm <Chinese> ;
rr:fromTerm "Lo Mein", "Fu Chi Fei Pian" ;
] .
<ChineseCuisineTranslationScheme> rr:translationMap
[ rr:toTerm <Chinese> ;
rr:fromTerm "Lo Mein" ;
] ,
[ rr:toTerm <Sichuan>
rr:fromTerm "Fu Chi Fei Pian" ;
] .
----------------------------------------------------------------------------------------------------
In summary, overall, the alternate proposal, as extended, now supports:
1) many-to-one mapping from (one or more) DBterms to RDFterm
2) Both RDFterm and DBterm can be any type of RDF term -- that is, IRI or Literal
3) Use of a translation scheme as anchor (for a group of translation maps) gives it an intuitive organization
4) the new rr: terms (rr:translationMap, rr:TranslationMap class, rr:toTerm, rr:fromTerm) are intuitive as well
Given this we still believe that the alternate proposal is more expressive and easy to use.
Thanks,
- Souri and Seema
----- Original Message -----
From: richard@cyganiak.de
To: public-rdb2rdf-wg@w3.org
Sent: Tuesday, November 15, 2011 7:03:34 AM GMT -05:00 US/Canada Eastern
Subject: Revised SKOS-based translation table proposal
Regarding ISSUE-72 “Bring back R2RML lookup tables” [1], here's a new proposal:
http://www.w3.org/2001/sw/rdb2rdf/drafts/translation-tables-DERI2.html
It is still SKOS-based like the first proposal [2], but drops the possibility of using skos:xxxMatch properties, and retains only the ability to use skos:notation, as suggested by David [3].
This makes it simpler than the Oracle proposal [4] in terms of new properties introduced and total triples needed to express a translation table. Since Souri's and Seema's objection to the original proposal [2] was about its complexity [5], I'm confident that the revised proposal is acceptable to them.
(The new proposal retains the ability to express non-bijective mappings, and is limited to mapping to IRIs. This differs from the Oracle proposal, which can only express bijective mappings, but can also map to literals.)
Ivan noted [6] that re-adding this feature would require a second last call.
Best,
Richard
[1] http://www.w3.org/2001/sw/rdb2rdf/track/issues/72
[2] http://www.w3.org/2001/sw/rdb2rdf/drafts/translation-tables-DERI.html
[3] http://lists.w3.org/Archives/Public/public-rdb2rdf-wg/2011Aug/0186.html
[4] http://www.w3.org/2001/sw/rdb2rdf/drafts/translation-tables-Oracle.html
[5] http://www.w3.org/2001/sw/rdb2rdf/track/issues/66
[6] http://lists.w3.org/Archives/Public/public-rdb2rdf-wg/2011Nov/0013.html
Received on Monday, 21 November 2011 15:39:47 UTC