Copyright © 2024-2025 the Contributors to the RML-FNML: Test Cases Specification, published by the Knowledge Graph Construction Community Group under the W3C Community Contributor License Agreement (CLA). A human-readable summary is available.
This document defines the RML-FNML test cases to the determine the RML-FNML specification conformance of tools.
This specification was published by the Knowledge Graph Construction Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Contributor License Agreement (CLA) there is a limited opt-out and other conditions apply. Learn more about W3C Community and Business Groups.
GitHub Issues are preferred for discussion of this specification.
This document defines the RML-FNML test cases, consisting of a collection of test case documents (input and expected output). The purpose of the test cases is to determine the conformance of tools that execute RML rules to the RML-FNML specification.
The test cases are semantically described for re-usability and shareability following the W3C Test case description.
Each test:Testcase
as the following properties:
dcterms:identifier
: unique ID of the test case.rmltest:hasError
: if an error of the RML Processor is expected or not.rmltest:input
: One or more input data of the test case.rmltest:output
: One or more output data of the test case.rmltest:inputFormat
: the input data format.rmltest:outputFormat
: the output data format.rmltest:mappingDocument
: the RML mapping rules in Turtle.This section describes the RML-FNML test cases. These descriptions are also available as RDF.
The files are available on GitHub in the folder test-cases
.
Each test case is contained in a single folder, containing three types of files:
mapping.ttl
, in the Turtle format.Title: Function on object, 0 parameters
Description: Tests (1) if a function without parameters can be used (FnO) (2) if a function on an object map can be used (Term) (3) if the output of the function is assigned the correct termType by default
Error expected? No
Input
Id,Name,Comment,Class
1,Venus,A&B,A
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix idlab-fn: <https://w3id.org/imec/idlab/function#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return idlab-fn:_stringOut
]
] .
<#Execution>
rml:function idlab-fn:random .
Output
<http://example.com/Venus> <http://xmlns.com/foaf/0.1/name> "e4dcc7ee-8e2a-4012-92cc-9a74dd545e89" .
Title: Function on object, 1 reference parameter
Description: Tests: (1) if a function with one parameter can be used, (FnO) (2) a reference parameter can be used (Term)
Error expected? No
Input
Id,Name,Comment,Class
1,Venus,A&B,A
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:stringOut
]
] .
<#Execution>
rml:function grel:toUpperCase ;
rml:input
[
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:reference "Name" ;
]
] .
Output
<http://example.com/Venus> <http://xmlns.com/foaf/0.1/name> "VENUS" .
Title: Function on object, 1 reference parameter, the output termType is IRI
Description: Tests if the output of the function is assigned the correct termType
Error expected? No
Input
Id,Name,Comment,Class,url
1,Venus,A&B,A,http://example.com/venus
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@prefix idlab-fn: <https://w3id.org/imec/idlab/function#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return idlab-fn:_stringOut ;
rml:termType rml:IRI
];
] .
<#Execution>
rml:function idlab-fn:toUpperCaseURL ;
rml:input
[
rml:parameter idlab-fn:str ;
rml:inputValueMap [
rml:reference "url"
];
] .
Output
<http://example.com/Venus> <http://xmlns.com/foaf/0.1/name> <HTTP://EXAMPLE.COM/VENUS> .
Title: Function on object, the output termType is Literal
Description: Tests if the output of the function is assigned the correct termType
Error expected? No
Input
Id,Name,Comment,Class,url
1,Venus,A&B,A,http://example.com/venus
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@prefix idlab-fn: <https://w3id.org/imec/idlab/function#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:stringOut
]
] .
<#Execution>
rml:function grel:length ;
rml:input
[
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:reference "Name"
];
] .
Output
<http://example.com/Venus> <http://xmlns.com/foaf/0.1/name> "5"^^<http://www.w3.org/2001/XMLSchema#integer> .
Title: Function on object, 1 template parameter
Description: Tests if a function with a template parameter can be used
Error expected? No
Input
Id,Name,Comment,Class
1,Venus,A&B,A
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:stringOut
]
] .
<#Execution>
rml:function grel:toUpperCase ;
rml:input
[
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:template "Name: {Name}" ;
];
] .
Output
<http://example.com/Venus> <http://xmlns.com/foaf/0.1/name> "NAME: VENUS" .
Title: Function on object returns empty string
Description: Tests that a triple is generated when the results is an empty string.
Error expected? No
Input
Id,Name,Comment,Class
1,Venus,A&B,A
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@prefix idlab-fn: <https://w3id.org/imec/idlab/function#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:stringOut
]
] .
<#Execution>
rml:function grel:string_substring ;
rml:input
[
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:reference "Name"
];
] ,
[
a rml:Input ;
rml:parameter grel:p_int_i_from ;
rml:inputValue "5"
] .
Output
<http://example.com/Venus> <http://xmlns.com/foaf/0.1/name> "" .
Title: Function on object returns null
Description: Tests that no triple should be generated when the result is null.
Error expected? No
Input
Id,Name,Comment,Class
1,Venus,A&B,A
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@prefix idlab-fn: <https://w3id.org/imec/idlab/function#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:stringOut
]
] .
<#Execution>
rml:function grel:string_substring ;
rml:input
[
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:reference "Name"
];
] ,
[
a rml:Input ;
rml:parameter grel:p_int_i_from ;
rml:inputValue "1000"
] .
Output
Title: Function on predicate, 1 parameter
Description: Tests if a function can be used on a predicate
Error expected? No
Input
Id,Name,Comment,Class
1,Venus,A&B,A
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@prefix idlab-fn: <https://w3id.org/imec/idlab/function#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicateMap [
rml:functionExecution <#Execution> ;
rml:return idlab-fn:_stringOut
];
rml:object foaf:name;
] .
<#Execution>
rml:function idlab-fn:toUpperCaseURL ;
rml:input
[
rml:parameter idlab-fn:str ;
rml:inputValueMap [
rml:reference "Name"
];
] .
Output
<http://example.com/Venus> <http://VENUS> <http://xmlns.com/foaf/0.1/name> .
Title: Function on object, 1 reference parameter, 1 constant parameter
Description: Tests if a function with multiple parameters can be used
Error expected? No
Input
Id,Name,Comment,Class
1,Venus,A&B,A
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:stringOut
]
] .
<#Execution>
rml:function grel:escape ;
rml:input
[
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:reference "Comment"
]
] ,
[
rml:parameter grel:modeParam ;
rml:inputValue "html"
] .
Output
<http://example.com/Venus> <http://xmlns.com/foaf/0.1/name> "A&B" .
Title: Function on subject, 1 parameter
Description: Tests if (1) a function can be used on a subject (2) Tests if the default termType assigned to the output of the function to be correct
Error expected? No
Input
Id,Name,url
1,Venus,www.example.com
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@prefix idlab-fn: <https://w3id.org/imec/idlab/function#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:functionExecution <#Execution> ;
rml:return idlab-fn:_stringOut
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [ rml:reference "Name"]
] .
<#Execution>
rml:function idlab-fn:toUpperCaseURL ;
rml:input
[
rml:parameter idlab-fn:str ;
rml:inputValueMap [
rml:reference "url"
];
] .
Output
<http://WWW.EXAMPLE.COM> <http://xmlns.com/foaf/0.1/name> "Venus" .
Title: Function using non-constant shortcut property return
Description: Tests that a non-constant FNML Return map also works
Error expected? No
Input
Id,Name,Comment,Class,url
1,Venus,A&B,A,http://example.com/venus
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:returnMap [
rml:constant grel:stringOut
]
]
] .
<#Execution>
rml:function grel:toUpperCase ;
rml:input
[
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:reference "Name" ;
]
] .
Output
<http://example.com/Venus> <http://xmlns.com/foaf/0.1/name> "example.com" .
Title: Nested function - Test A
Description: Tests if a composite function of form f(g(x1),x2) works (i.e., the inner function is only one argument of the outer function)
Error expected? No
Input
Id,Name,Comment,Class
1,M Venus,A&B,A
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@prefix idlab-fn: <https://w3id.org/imec/idlab/function#> .
@base <http://example.com/base/> .
<#Person_Mapping>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap <#NameMapping> .
<#NameMapping>
rml:predicate foaf:name ;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:stringOut
]; .
<#Execution> a rml:FunctionExecution ;
rml:function grel:toUpperCase ;
rml:input
[
a rml:Input ;
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:functionExecution <#Execution2> ;
rml:return grel:stringOut
]
] .
<#Execution2> a rml:Execution ;
rml:function grel:string_replace ;
rml:input
[
a rml:Input ;
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:reference "Name"
]
] ,
[
a rml:Input ;
rml:parameter grel:param_find ;
rml:inputValue " "
] ,
[
a rml:Input ;
rml:parameter grel:param_replace ;
rml:inputValue "-"
] .
Output
<http://example.com/M%20Venus> <http://xmlns.com/foaf/0.1/name> "M-VENUS" .
Title: Function on graph, 1 parameter
Description: Tests if a function can be used on a graph
Error expected? No
Input
Id,Name,Comment,Class,url
1,Venus,A&B,A,http://example.com/venus
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@prefix idlab-fn: <https://w3id.org/imec/idlab/function#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}" ;
rml:graphMap [
rml:functionExecution <#Execution> ;
rml:return idlab-fn:_stringOut
]
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:reference "Name"
]
] .
<#Execution>
rml:function idlab-fn:toUpperCaseURL ;
rml:input
[
rml:parameter idlab-fn:str ;
rml:inputValueMap [
rml:reference "url" ;
]
] .
Output
<http://example.com/Venus> <http://xmlns.com/foaf/0.1/name> "Venus" <HTTP://EXAMPLE.COM/VENUS> .
Title: Function on object, 1 false reference parameter
Description: Tests if a false reference parameters is caught
Error expected? Yes
Input
Id,Name,Comment,Class
1,Venus,A&B,A
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@prefix idlab-fn: <https://w3id.org/imec/idlab/function#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:stringOut
]
] .
<#Execution>
rml:function grel:toUpperCase ;
rml:input
[
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:reference "name" ;
]
] .
Title: Function on object, wrong function URI
Description: Tests that nothing is generated if a function is used where no implementation is made available to the mapping engine
Error expected? No
Input
Id,Name,Comment,Class
1,Venus,A&B,A
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:stringOut
]
] .
<#Execution>
rml:function grel:unknown_func ;
rml:input
[
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:reference "Name" ;
]
] .
Output
Title: Function on object, wrong parameter
Description: Tests that nothing is generated if a function is defined using a parameter not defined in the FnO description
Error expected? No
Input
Id,Name,Comment,Class,url
1,Venus,A&B,A,http://example.com/venus
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:stringOut
]
] .
<#Execution>
rml:function grel:toUpperCase ;
rml:input
[
rml:parameter grel:unknownParam ;
rml:inputValueMap [
rml:reference "Name" ;
]
] .
Output
Title: Function on object, wrong return parameter
Description: Tests that nothing is generated if a function is defined using a return not defined in the FnO description
Error expected? No
Input
Id,Name,Comment,Class,url
1,Venus,A&B,A,http://example.com/venus
Mapping
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ex: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rml: <http://w3id.org/rml/> .
@prefix fno: <https://w3id.org/function/ontology#> .
@prefix grel: <http://users.ugent.be/~bjdmeest/function/grel.ttl#> .
@base <http://example.com/base/> .
<TriplesMap1>
rml:logicalSource [
rml:source [ a rml:RelativePathSource;
rml:root rml:MappingDirectory;
rml:path "student.csv"
];
rml:referenceFormulation rml:CSV
];
rml:subjectMap [
rml:template "http://example.com/{Name}"
];
rml:predicateObjectMap [
rml:predicate foaf:name;
rml:objectMap [
rml:functionExecution <#Execution> ;
rml:return grel:unknownOut
]
] .
<#Execution>
rml:function grel:toUpperCase ;
rml:input
[
rml:parameter grel:valueParam ;
rml:inputValueMap [
rml:reference "Name" ;
]
] .
Output