Warning:
This wiki has been archived and is now read-only.
R2RML Test Cases v1
Go to TestCases description page
Contents
- 1 Test Cases
- 1.1 1table0rows
- 1.2 1table1row
- 1.3 1table2columns1row
- 1.4 1table3columns1row
- 1.5 1table2columnsprojection
- 1.6 2duplicates0nulls
- 1.7 1table1primarykey1column1row
- 1.8 1table1primarykey2columns1row
- 1.9 1table1compositeprimarykey3columns1row
- 1.10 2tables1primarykey1foreingkey
- 1.11 I18NnoSpecialChars
- 1.12 M2MRelations
- 1.13 2tables2duplicates0nulls
- 1.14 1table3columns2rows1nullvalue
Test Cases
The table owner for the whole set of dbs: boricles.
1table0rows
Graphical Representation:
| Name |
|---|
SQL:
CREATE TABLE Student ( Name varchar(50) );
Direct Graph TC0000
Title: Empty table
Purpose: Tests if an empty table produces an empty RDF graph.
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
# empty graph
R2RMLTC0000
Title: Empty table
Purpose: Tests if an empty table produces an empty RDF graph.
Specification Reference: 1.30
Review Status: Accepted.
Expected Result:
RDF:
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:tableOwner "boricles";
rr:tableName "Student";
rr:subjectMap [ rr:template "http://example.com/{Name}" ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Name" ]
]
.
1table1row
Graphical Representation:
| Name |
|---|
| Venus |
SQL:
CREATE TABLE Student (
Name varchar(50)
);
INSERT INTO Student (Name) VALUES ("Venus");
Direct Graph TC0001
Title: One table, one row
Purpose: Tests: (1) one column mapping, no primary key; (2) generation of a "BlankNode" subject; (3) one column to one property
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
_:a <Student#Name> "Venus". _:a a <Student> .
R2RMLTC0001a
Id: R2RMLTC0001a
Title: One column mapping
Purpose: Tests: (1) one column mapping, no primary key; (2) subject URI generation by using one single column; (3) one column to one property
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
RDF:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ex: <http://example.com/> . ex:Venus foaf:name "Venus".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:tableOwner "boricles";
rr:tableName "Student";
rr:subjectMap [ rr:template "http://example.com/{Name}" ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Name" ]
]
.
R2RMLTC0001b
Id: R2RMLTC0001b
Title: One column mapping
Purpose: Tests: (1) one column mapping, no primary key; (2) generation of a "BlankNode" subject; (3) one column to one property
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
RDF:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ex: <http://example.com/> . _:Venus foaf:name "Venus".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:tableOwner "boricles";
rr:tableName "Student";
rr:subjectMap [ rr:column "Name"; rr:termtype "BlankNode" ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Name" ]
]
.
1table2columns1row
Graphical Representation:
| ID | Name |
|---|---|
| 10 | Venus |
SQL:
CREATE TABLE Student ( ID integer, Name varchar(50) ); INSERT INTO Student (ID, Name) VALUES(10,"Venus");
Direct Graph TC0002
Title: Two columns mapping
Purpose: Tests: (1) two columns mapping, no primary key; (2) generation of a "BlankNode" subject; (3) one column to one property
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
_:a a <Student> . _:a <Student#id> 10 . _:a <Student#name> "Venus" .
R2RMLTC0002a
Id: R2RMLTC0002a
Title: Two columns mapping
Purpose: Tests: (1) two column mapping, no primary key; (2) subject URI generated by concatenation of two column values; (3) one column to one property
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
RDF:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:10Venus rdf:type foaf:Person;
ex:id "10"^^xsd:integer;
foaf:name "Venus".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:tableOwner "boricles";
rr:tableName "Student";
rr:subjectMap [ rr:template "http://example.com/{ID}{Name}";
rr:class foaf:Person ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:id ];
rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Name" ]
]
.
R2RMLTC0002b
Id: R2RMLTC0002b
Title: Two columns mapping
Purpose: Tests: (1) two column mapping, no primary key; (2) generation of a "BlankNode" subject; (3) one column to one property
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
RDF:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
_:Student10 rdf:type foaf:Person;
ex:id "10"^^xsd:integer;
foaf:name "Venus".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:SQLQuery """
Select ('Student' || ID ) AS "StudentId"
, ID
, Name
from Student
""";
rr:subjectMap [ rr:column "StudentId"; rr:termtype "BlankNode"; rr:class foaf:Person ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:id ];
rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Name" ]
]
.
1table3columns1row
Graphical Representation:
| ID | FirstName | LastName |
|---|---|---|
| 10 | Venus | Williams |
SQL:
CREATE TABLE Student ( ID integer, FirstName varchar(50), LastName varchar(50) ); INSERT INTO Student (ID, FirstName, LastName) VALUES (10,"Venus", "Williams");
Direct Graph TC0003
Title: Three column mapping
Purpose: Tests: (1) three column mapping, no primary key; (2) Generation of a "BlankNode" subject; (3) One column to one property
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
_:a a <Student> . _:a <Student#ID> 10 . _:a <Student#FirstName> "Venus" . _:a <Student#LastName> "Williams" .
R2RMLTC0003a
Id: R2RMLTC0003a
Title: Three column mapping
Purpose: Tests: (1)three column mapping, no primary key; (2) Subject URI generated by concatenation of three column values and a constant value; (3) One column to one property
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
RDF:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:Student10VenusWilliams rdf:type foaf:Person
ex:id "10"^^xsd:integer;
foaf:firstName "Venus";
foaf:lastName "Williams".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:tableOwner "boricles";
rr:tableName "Student";
rr:subjectMap [ rr:template "http://example.com/Student{ID}{FirstName}{LastName}";
rr:class foaf:Person ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:id ];
rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:firstName ];
rr:objectMap [ rr:column "FirstName" ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:lastName ];
rr:objectMap [ rr:column "LastName" ]
]
.
R2RMLTC0003b
Id: R2RMLTC0003b
Title: Two column mapping, a concatenation operation
Purpose: Tests: (1) two column mapping, no primary key; (2) subject URI generated by concatenation of three column values and a constant value; (3) Two column to one property – concat operation
Specification Reference: 1.30
Review Status: Accepted.
Expected Result:
RDF:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:Student10VenusWilliams rdf:type foaf:Person
ex:id "10"^^xsd:integer;
foaf:name "Venus Williams".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:SQLQuery """
SELECT ID,
(FirstName || ' ' || LastName) AS Name,
FirstName,
LastName
FROM Student
""";
rr:subjectMap [ rr:template "http://example.com/Student{ID}{FirstName}{LastName}";
rr:class foaf:Person ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:id ];
rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Name" ]
]
.
R2RMLTC0003c
Id: R2RMLTC0003c
Title: Three column mapping
Purpose: Tests: (1)three column mapping, no primary key; (2) Generation of a "BlankNode" subject; (3) One column to one property
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
RDF:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
_:Student10VenusWilliams rdf:type foaf:Person
ex:id "10"^^xsd:integer;
foaf:firstName "Venus";
foaf:lastName "Williams".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:SQLQuery """
SELECT ('Student' || ID || FirstName || LastName) as StudentID,
ID,
FirstName,
LastName
FROM Student
""";
rr:subjectMap [ rr:column "StudentID"; rr:termtype "BlankNode";
rr:class foaf:Person ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:id ];
rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:firstName ];
rr:objectMap [ rr:column "FirstName" ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:lastName ];
rr:objectMap [ rr:column "LastName" ]
]
.
R2RMLTC0003d
Id: R2RMLTC0003d
Title: Two column mapping, a concatenation operation
Purpose: Tests: (1) two column mapping, no primary key; (2) Generation of a "BlankNode" subject; (3) Two column to one property – concat operation
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
RDF:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
_:Student10VenusWilliams rdf:type foaf:Person
ex:id "10"^^xsd:integer;
foaf:name "Venus Williams".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:SQLQuery """
SELECT ('Student' || ID || FirstName || LastName) as StudentID,
ID,
(FirstName || ' ' || LastName) AS Name
FROM Student
""";
rr:subjectMap [ rr:column "StudentID"; rr:termtype "BlankNode";
rr:class foaf:Person ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:id ];
rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Name" ]
]
.
1table2columnsprojection
Graphical Representation:
| Student | Sport |
|---|---|
| Venus | Tennis |
SQL:
CREATE TABLE Student_Sport(
Student varchar(50),
Sport varchar(50)
);
INSERT INTO Student_Sport (Student,Sport) VALUES ("Venus", "Tennis");
Direct Graph TC0004
Title: Projection
Purpose: Tests: (1) two column mapping, no primary key, (2) generation of a "BlankNode" subject; (3) one row table to two different resources
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
_:a a <Student_Sport> . _:a <Student_Sport#Student> "Venus" . _:a <Student_Sport#Sport> "Tennis" .
R2RMLTC0004a
Id: R2RMLTC0004a
Title: Projection
Purpose: Tests: (1) two column mapping, no primary key, (2) subject URI generated by a column value; (3) one row table to two different resources
Specification Reference: 1.30
Review Status: unreviewed
Expected Result:
RDF:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
ex:Venus rdf:type ex:Student;
foaf:name "Venus".
ex:Tennis rdf:type ex:Sport;
foaf:name "Tennis".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:tableOwner "boricles";
rr:tableName "Student_Sport";
rr:subjectMap [ rr:template "http://example.com/{Student}";
rr:class ex:Student ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Student" ]
]
.
<TriplesMap2>
a rr:TriplesMapClass;
rr:tableOwner "boricles";
rr:tableName "Student_Sport";
rr:subjectMap [ rr:template "http://example.com/{Sport}";
rr:class ex:Sport ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Sport" ]
]
.
R2RMLTC0004b
Id: R2RMLTC0004b
Title: Projection
Purpose: Tests: (1) two column mapping, no primary key, (2) generation of a "BlankNode" subject; (3) one row table to two different resources
Specification Reference: 1.30
Review Status: unreviewed
Expected Result:
RDF:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
_:StudentVenus rdf:type ex:Student;
foaf:name "Venus".
_:SportTennis rdf:type ex:Sport;
foaf:name "Tennis".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:SQLQuery """
Select ('Student' || Student) AS StudentId
from Student_Sport
""";
rr:subjectMap [ rr:column "StudentId"; rr:termtype "BlankNode";
rr:class ex:Student ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Student" ]
]
.
<TriplesMap2>
a rr:TriplesMapClass;
rr:SQLQuery """
Select ('Sport' || Sport) AS SportId
from Student_Sport
""";
rr:subjectMap [ rr:column "SportId"; rr:termtype "BlankNode";
rr:class ex:Sport ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [ rr:column "Sport" ]
]
.
2duplicates0nulls
Graphical Representation:
| fname | lname | amount |
|---|---|---|
| Bob | Smith | 30 |
| Sue | Jones | 20 |
| Bob | Smith | 30 |
SQL:
CREATE TABLE IOUs (
fname CHAR(20),
lname CHAR(20),
amount FLOAT);
INSERT INTO IOUs (fname, lname, amount) VALUES ("Bob", "Smith", 30);
INSERT INTO IOUs (fname, lname, amount) VALUES ("Sue", "Jones", 20);
INSERT INTO IOUs (fname, lname, amount) VALUES ("Bob", "Smith", 30);
Direct Graph TC0005
Title: Duplicate tuples, no primary key
Purpose: Tests the generation of Blank Nodes for duplicate tuples
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . _:a a <IOUs> . _:a <IOUs#fname> "Bob" . _:a <IOUs#lname> "Smith" . _:a <IOUs#amount> "30"^^xsd:float . _:b a <IOUs> . _:b <IOUs#fname> "Sue" . _:b <IOUs#lname> "Jones" . _:b <IOUs#amount> "20"^^xsd:float . _:c a <IOUs> . _:c <IOUs#fname> "Bob" . _:c <IOUs#lname> "Smith" . _:c <IOUs#amount> "30"^^xsd:float .
R2RMLTC0005a
1table1primarykey1column1row
Graphical Representation:
| Name (PK) |
|---|
| Venus |
SQL:
CREATE TABLE Student (
Name varchar(50) PRIMARY KEY
);
INSERT INTO Student (Name) VALUES ("Venus");
Direct Graph TC0006
Title: One table, one column, one primary key
Purpose: Tests a table with a column that is a primary key
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
<Student/Name.Venus#_> <Student#Name> "Venus" . <Student/Name.Venus#_> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <Student> .
R2RMLTC0006
1table1primarykey2columns1row
Graphical Representation:
| ID (PK) | Name |
|---|---|
| 10 | Venus |
SQL:
CREATE TABLE Student ( ID integer, Name varchar(50), PRIMARY KEY (ID) ); INSERT INTO Student (ID, Name) VALUES(10,"Venus");
Direct Graph TC0007
Title: A table with a primary key and 2 columns
Purpose: Tests a table with a primary key and 2 columns
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
<Student/ID.10#_> <Student#ID> "10"^^<http://www.w3.org/2001/XMLSchema#integer> . <Student/ID.10#_> <Student#Name> "Venus" . <Student/ID.10#_> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <Student> .
R2RMLTC0007
1table1compositeprimarykey3columns1row
Graphical Representation:
| ID (PK) | Name (PK) | Sport |
|---|---|---|
| 10 | Venus Williams | Tennis |
SQL:
CREATE TABLE Student ( ID integer, Name varchar(50), Sport varchar (50), PRIMARY KEY (ID,Name) ); INSERT INTO Student (ID, Name,Sport) VALUES(10,"Venus Williams","Tennis");
Direct Graph TC0008
Title: Composite primary key
Purpose: Tests a table with a composite primary key
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
<Student/ID.10_Name.Venus+Williams#_> <Student#ID> "10"^^<http://www.w3.org/2001/XMLSchema#integer> . <Student/ID.10_Name.Venus+Williams#_> <Student#Name> "Venus Williams" . <Student/ID.10_Name.Venus+Williams#_> <Student#Sport> "Tennis" . <Student/ID.10_Name.Venus+Williams#_> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <Student> .
R2RMLTC0008
2tables1primarykey1foreingkey
Graphical Representation:
| ID (PK) | Name | Sport (FK) |
|---|---|---|
| 10 | Venus Williams | 100 |
| 20 | Demi Moore | NULL |
| ID (PK) | Name |
|---|---|
| 100 | Tennis |
SQL:
CREATE TABLE Sport ( ID integer, Name varchar (50), PRIMARY KEY (ID) ); CREATE TABLE Student ( ID integer, Name varchar(50), Sport integer, PRIMARY KEY (ID), FOREIGN KEY(Sport) REFERENCES Sport(ID) ); INSERT INTO Sport (ID, Name) VALUES (100,"Tennis"); INSERT INTO Student (ID, Name, Sport) VALUES (10,"Venus Williams", 100); INSERT INTO Student (ID, Name, Sport) VALUES (20,"Demi Moore", NULL);
Direct Graph TC0009
Title: Two tables 1 primary key 1 foreing key
Purpose: Tests two tables with a primary key and a foreing key
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
<Student/ID.20#_> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <Student> . <Student/ID.20#_> <Student#ID> "20"^^<http://www.w3.org/2001/XMLSchema#integer> . <Student/ID.20#_> <Student#Name> "Demi Moore" . <Student/ID.10#_> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <Student> . <Student/ID.10#_> <Student#ID> "10"^^<http://www.w3.org/2001/XMLSchema#integer> . <Student/ID.10#_> <Student#Name> "Venus Williams" . <Student/ID.10#_> <Student#Sport> <Sport/ID.100#_> . <Sport/ID.100#_> <Sport#ID> "100"^^<http://www.w3.org/2001/XMLSchema#integer> . <Sport/ID.100#_> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <Sport> . <Sport/ID.100#_> <Sport#Name> "Tennis" .
R2RMLTC0009
Id: R2RMLTC0009
Title: Two tables to multiple graphs.
Purpose: Test that results from distinct parts of the mapping can be directed to different target graphs.
Specification Reference: 1.30
Review Status: unreviewed
Expected Result:
RDF:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<http://example.org/graph/students>
{
<http://example.com/resource/student_10> a <http://example.com/ontology/Student> .
<http://example.com/resource/student_10> foaf:name "Venus Williams" .
<http://example.com/resource/student_20> a <http://example.com/ontology/Student> .
<http://example.com/resource/student_20> foaf:name "Demi Moore" .
}
<http://example.org/graph/sports>
{
<http://example.com/resource/sport_100> a <http://example.com/ontology/Sport> .
<http://example.com/resource/sport_100> rdf:label "Tennis" .
}
<http://example.org/graph/practise>
{
<http://example.com/resource/student_10> <http://example.com/ontology/practises> <http://example.com/resource/sport_100> .
}
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:tableOwner "alex";
rr:tableName "Student";
rr:subjectMap
[
rr:template "http://example.com/resource/student_{ID}";
rr:termType "IRI";
rr:class <http://example.com/ontology/Student>;
rr.graph <http://example.com/graph/students>;
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [
rr:column "Name";
rr:termType "Literal";
];
rr.graph <http://example.com/graph/students>;
];
rr:refPredicateObjectMap
[
rr:refPredicateMap [ rr:predicate ex:ontology/practises ];
rr:refObjectMap [
rr:parentTriplesMap <TriplesMap2>;
rr:joinCondition "child.{Sport} = parent.{ID}".
];
rr.graph <http://example.com/graph/practise>;
];
.
<TriplesMap2>
a rr:TriplesMapClass;
rr:tableOwner "alex";
rr:tableName "Sport";
rr:subjectMap
[
rr:template "http://example.com/resource/sport_{ID}";
rr:termType "IRI";
rr:class <http://example.com/ontology/Sport>;
rr.graph <http://example.com/graph/sports>;
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate rdf:label ];
rr:objectMap [
rr:column "Name";
rr:termType "Literal";
];
rr.graph <http://example.com/graph/sports>;
];
.
I18NnoSpecialChars
Graphical Representation:
| 名 | 使用部 | 条件 |
|---|---|---|
| シソ | 葉 | 新鮮な |
| 皿 | 植物名 | 使用部 |
|---|---|---|
| しそのとまと | シソ | 葉 |
SQL:
CREATE TABLE `植物` (
`名` CHAR(10),
`使用部` CHAR(10),
`条件` CHAR(10),
PRIMARY KEY (`名`, `使用部`)
);
INSERT INTO `植物` (`名`, `使用部`, `条件`) VALUES ("しそ", "葉", "新鮮な");
CREATE TABLE `成分` (
`皿` CHAR(10),
`植物名` CHAR(10),
`使用部` CHAR(10),
FOREIGN KEY (`植物名`, `使用部`) REFERENCES `植物`(`名`, `使用部`)
);
INSERT INTO `成分` (`皿`, `植物名`, `使用部`) VALUES ("しそのとまと", "しそ", "葉");
Direct Graph TC0010
Title: I18N No Special Chars
Purpose: Do we want to encode all [^0-9A-Za-z]?
Specification Reference: @@1.30
Review Status: proposed
Expected Result:
<植物/名.しそ,使用部.葉#_>
a <植物> ;
<植物#使用部> "葉" ;
<植物#名> "しそ" ;
<植物#条件> "新鮮な" .
_:a a <成分> ;
<成分#使用部> "葉" ;
<成分#植物名> "しそ" ;
<成分#植物名,使用部> <植物/名.しそ,使用部.葉#_> ;
<成分#皿> "しそのとまと" .
vs.
_:a a <%E6%88%90%E5%88%86> ;
<%E6%88%90%E5%88%86#%E4%BD%BF%E7%94%A8%E9%83%A8>
"葉" ;
<%E6%88%90%E5%88%86#%E6%A4%8D%E7%89%A9%E5%90%8D>
"しそ" ;
<%E6%88%90%E5%88%86#%E6%A4%8D%E7%89%A9%E5%90%8D,%E4%BD%BF%E7%94%A8%E9%83%A8>
<%E6%A4%8D%E7%89%A9/%E5%90%8D.%E3%81%97%E3%81%9D,%E4%BD%BF%E7%94%A8%E9%83%A8.%E8%91%89#_> ;
<%E6%88%90%E5%88%86#%E7%9A%BF>
"しそのとまと" .
<%E6%A4%8D%E7%89%A9/%E5%90%8D.%E3%81%97%E3%81%9D,%E4%BD%BF%E7%94%A8%E9%83%A8.%E8%91%89#_>
a <%E6%A4%8D%E7%89%A9> ;
<%E6%A4%8D%E7%89%A9#%E4%BD%BF%E7%94%A8%E9%83%A8>
"葉" ;
<%E6%A4%8D%E7%89%A9#%E5%90%8D>
"しそ" ;
<%E6%A4%8D%E7%89%A9#%E6%9D%A1%E4%BB%B6>
"新鮮な" .
R2RMLTC0010
Title: @@
Purpose: @@
Specification Reference: @@1.30
Review Status: templated.
Expected Result:
RDF:
R2RML Mapping:
M2MRelations
Graphical Representation:
| ID (PK) | FirstName | LastName |
|---|---|---|
| 10 | Venus | Williams |
| 11 | Fernando | Alonso |
| 12 | David | Villa |
| ID_Student (FK - Student(ID)) | ID_Sport (FK - Sport(ID)) |
|---|---|
| 10 | 110 |
| 11 | 111 |
| 11 | 112 |
| 12 | 111 |
| ID (PK) | Description |
|---|---|
| 110 | Tennis |
| 111 | Football |
| 112 | Formula1 |
SQL:
CREATE TABLE Student ( ID integer PRIMARY KEY, FirstName varchar(50), LastName varchar(50) ); CREATE TABLE Sport ( ID integer PRIMARY KEY, Description varchar(50) ); CREATE TABLE Student_Sport ( ID_Student integer, ID_Sport integer, PRIMARY KEY (ID_Student,ID_Sport), FOREIGN KEY (ID_Student) REFERENCES Student(ID), FOREIGN KEY (ID_Sport) REFERENCES Sport(ID) ); INSERT INTO Student (ID,FirstName,LastName) VALUES (10,"Venus", "Williams"); INSERT INTO Student (ID,FirstName,LastName) VALUES (11,"Fernando", "Alonso"); INSERT INTO Student (ID,FirstName,LastName) VALUES (12,"David", "Villa"); INSERT INTO Sport (ID, Description) VALUES (110,"Tennis"); INSERT INTO Sport (ID, Description) VALUES (111,"Football"); INSERT INTO Sport (ID, Description) VALUES (112,"Formula1"); INSERT INTO Student_Sport (ID_Student, ID_Sport) VALUES (10,110); INSERT INTO Student_Sport (ID_Student, ID_Sport) VALUES (11,111); INSERT INTO Student_Sport (ID_Student, ID_Sport) VALUES (11,112); INSERT INTO Student_Sport (ID_Student, ID_Sport) VALUES (12,111);
Direct Graph TC0011
Title: Many to Many relations
Purpose: Tests M to M relations
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
<Student/ID.12#_> <rdf:type> <Student> . <Student/ID.12#_> <Student#FirstName> "David". <Student/ID.12#_> <Student#ID> 12 . <Student/ID.12#_> <Student#LastName> "Villa" . <Student_Sport/ID_Student.10,ID_Sport.110#_> <rdf:type> <Student_Sport> . <Student_Sport/ID_Student.10,ID_Sport.110#_> <Student_Sport#ID_Sport> <Sport/ID.110#_> . <Student_Sport/ID_Student.10,ID_Sport.110#_> <Student_Sport#ID_Student> <Student/ID.10#_> . <Student/ID.11#_> <rdf:type> <Student> . <Student/ID.11#_> <Student#FirstName> "Fernando" . <Student/ID.11#_> <Student#ID> 11 . <Student/ID.11#_> <Student#LastName> "Alonso" . <Sport/ID.111#_> <rdf:type> <Sport>. <Sport/ID.111#_> <Sport#Description> "Football" . <Sport/ID.111#_> <Sport#ID> 111 . <Sport/ID.110#_> <rdf:type> <Sport> . <Sport/ID.110#_> <Sport#Description> "Tennis" . <Sport/ID.110#_> <Sport#ID> 110 . <Student_Sport/ID_Student.12,ID_Sport.111#_> <rdf:type> <Student_Sport> . <Student_Sport/ID_Student.12,ID_Sport.111#_> <Student_Sport#ID_Sport> <Sport/ID.111#_> . <Student_Sport/ID_Student.12,ID_Sport.111#_> <Student_Sport#ID_Student> <Student/ID.12#_> . <Student_Sport/ID_Student.11,ID_Sport.111#_> <rdf:type> <Student_Sport> . <Student_Sport/ID_Student.11,ID_Sport.111#_> <Student_Sport#ID_Sport> <Sport/ID.111#_> . <Student_Sport/ID_Student.11,ID_Sport.111#_> <Student_Sport#ID_Student> <Student/ID.11#_> . <Student_Sport/ID_Student.11,ID_Sport.112#_> <rdf:type> <Student_Sport> . <Student_Sport/ID_Student.11,ID_Sport.112#_> <Student_Sport#ID_Sport> <Sport/ID.112#_> . <Student_Sport/ID_Student.11,ID_Sport.112#_> <Student_Sport#ID_Student> <Student/ID.11#_> . <Sport/ID.112#_> <rdf:type> <Sport> . <Sport/ID.112#_> <Sport#Description> "Formula1" . <Sport/ID.112#_> <Sport#ID> 112 . <Student/ID.10#_> <rdf:type> <Student> . <Student/ID.10#_> <Student#FirstName> "Venus" . <Student/ID.10#_> <Student#ID> 10 . <Student/ID.10#_> <Student#LastName> "Williams" .
R2RMLTC0011
Id: R2RMLTC0011
Title: M to N relation
Purpose: Tests, M to N relations
Specification Reference: 1.30
Review Status: unreviewed
Expected Result:
RDF:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:10VenusWilliams ex:id "10"^^xsd:integer;
foaf:firstName "Venus";
foaf:lastName "Williams";
ex:plays ex:110Tennis.
ex:11FernandoAlonso ex:id "11"^^xsd:integer;
foaf:firstName "Fernando";
foaf:lastName "Alonso";
ex:plays ex:111Football;
ex:plays ex:112Formula1.
ex:12DavidVilla ex:id "12"^^xsd:integer;
foaf:firstName "David";
foaf:lastName "Villa";
ex:plays ex:111Football.
ex:110Tennis ex:id "110"^^xsd:integer;
ex:description "Tennis".
ex:111Football ex:id "111"^^xsd:integer;
ex:description "Football".
ex:112Formula1 ex:id "112"^^xsd:integer;
ex:description "Formula1".
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:SQLquery """
SELECT Student.ID as ID,
Student.FirstName as FirstName,
Student.LastName as LastName,
Sport.Description as Description,
Sport.ID as Sport_ID
FROM Student,Sport,Student_Sport
WHERE Student.ID = Student_Sport.ID_Student
AND Sport.ID = Student_Sport.ID_Sport;
""";
rr:subjectMap [ rr:template "http://example.com/{ID}{FirstName}{LastName}" ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:id ];
rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:firstName ];
rr:objectMap [ rr:column "FirstName" ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:lastName ];
rr:objectMap [ rr:column "LastName" ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:plays ];
rr:objectMap [ rr:template "http://example.com/{Sport_ID}{Description}" ]
]
.
<TriplesMap2>
a rr:TriplesMapClass;
rr:tableOwner "boricles";
rr:tableName "Sport";
rr:subjectMap [ rr:template "http://example.com/{ID}{Description}" ];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:id ];
rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:description ];
rr:objectMap [ rr:column "Description" ]
]
.
2tables2duplicates0nulls
Graphical Representation:
| fname | lname | amount |
|---|---|---|
| Bob | Smith | 30 |
| Sue | Jones | 20 |
| Bob | Smith | 30 |
| fname | lname | city |
|---|---|---|
| Bob | Smith | London |
| Sue | Jones | Madrid |
| Bob | Smith | London |
SQL:
CREATE TABLE IOUs (
fname CHAR(20),
lname CHAR(20),
amount FLOAT);
INSERT INTO IOUs (fname, lname, amount) VALUES ("Bob", "Smith", 30);
INSERT INTO IOUs (fname, lname, amount) VALUES ("Sue", "Jones", 20);
INSERT INTO IOUs (fname, lname, amount) VALUES ("Bob", "Smith", 30);
CREATE TABLE Lives (
fname CHAR(20),
lname CHAR(20),
city CHAR(20));
INSERT INTO IOUs (fname, lname, amount) VALUES ("Bob", "Smith", "London");
INSERT INTO IOUs (fname, lname, amount) VALUES ("Sue", "Jones", "Madrid");
INSERT INTO IOUs (fname, lname, amount) VALUES ("Bob", "Smith", "London");
Direct Graph TC0012
R2RMLTC0012a
Id: R2RMLTC0012a
Title: Duplicate tuples generate same blank node.
Purpose: Tests that blank nodes with same identifier and in the same graph but generated by different logical rows are considered equivalent.
Specification Reference:
Review Status:
unreviewed
Expected Result:
RDF:
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ex: <http://example.com/> . _:a a ex:IOU . _:a foaf:name "Bob Smith" . _:a ex:amount "30"^^xsd:float . _:b a ex:IOU . _:b foaf:name "Sue Jones" . _:b ex:amount "20"^^xsd:float .
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:subjectMap [
rr:template "{fname}_{lname}_{amount}";
rr:termtype "BlankNode";
rr:class ex:IOU;
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [
rr:template "{fname} {lname}";
rr:termtype "Literal"
]
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:amount ];
rr:objectMap [
rr:column "amount";
rr:termtype "Literal";
rr:datatype xsd:float;
]
];
.
R2RMLTC0012b
Id: R2RMLTC0012b
Title: Same blank node generated from different part of the map.
Purpose: Tests that blank nodes with same identifier and in the same graph but generated by via different part of the mapping are considered equivalent.
Specification Reference:
Review Status:
unreviewed
Expected Result:
RDF:
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ex: <http://example.com/> . _:a a ex:IOU . _:a foaf:name "Bob Smith" . _:a ex:city "London" . _:b a ex:IOU . _:b foaf:name "Sue Jones" . _:b ex:amount "Madrid" .
R2RML Mapping:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@base <http://mappingpedia.org/rdb2rdf/r2rml/tc/> .
<TriplesMap1>
a rr:TriplesMapClass;
rr:tableName "IOUs"
rr:tableOwner "alex"
rr:subjectMap [
rr:template "{fname}_{lname}";
rr:termtype "BlankNode";
rr:class ex:IOU;
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate foaf:name ];
rr:objectMap [
rr:template "{fname} {lname}";
rr:termtype "Literal"
]
];
.
<TriplesMap2>
a rr:TriplesMapClass;
rr:tableName "Lives"
rr:tableOwner "alex"
rr:subjectMap [
rr:template "{fname}_{lname}";
rr:termtype "BlankNode";
rr:class ex:IOU;
];
rr:predicateObjectMap
[
rr:predicateMap [ rr:predicate ex:city ];
rr:objectMap [
rr:column "city";
rr:termtype "Literal"
]
];
.
1table3columns2rows1nullvalue
Graphical Representation:
| ID (PK) | Name | DateOfBirth |
|---|---|---|
| 1 | Alice | NULL |
| 2 | Bob | September, 2010 |
SQL:
CREATE TABLE Person ( ID integer, Name varchar(50), DateOfBirth varchar(50) ); INSERT INTO Person (ID, Name, DateOfBirth) VALUES (1,"Alice", NULL); INSERT INTO Person (ID, Name, DateOfBirth) VALUES (2,"Bob", "September, 2010");
Direct Graph TC0013
Title: Direct Graph of table with NULL values
Purpose: Tests Direct Graph of table with NULL values
Specification Reference: 1.30
Review Status: Accepted
Expected Result:
<Person#ID> rdfs:domain <Person> . <Person#Name> rdfs:domain <Person> . <Person#DateOfBirth> rdfs:domain <Person> . <Person/ID=1> a <Person> . <Person/ID=1> <Person#Name> "Alice" . <Person/ID=2> a <Person> . <Person/ID=2> <Person#Name> "Bob" . <Person/ID=2> <Person#DateOfBirth> "September, 2010" .
R2RMLTC0013
Id:
Title:
Purpose:
Specification Reference:
Review Status:
Expected Result:
RDF:
R2RML Mapping: