RMLMapperを使用して JSON から RDF に変換しています。JSON に格納される値の 1 つが URL です。これを RDF ステートメントのオブジェクトの IRI の基礎として使用したいと考えています。
入力は
{
"documentId": {
"value": "http://example.org/345299"
},
...
ステートメントの件名の IRIhttp://example.org/345299#item
を<http://example.org/345299#item> a <http://schema.org/Thing> .
私は試した
@prefix rr: <http://www.w3.org/ns/r2rml#>.
@prefix rml: <http://semweb.mmlab.be/ns/rml#>.
@prefix ql: <http://semweb.mmlab.be/ns/ql#>.
<#Mapping> a rr:TriplesMap ;
rml:logicalSource [
rml:source "input.json";
rml:referenceFormulation ql:JSONPath;
rml:iterator "$"
];
rr:subjectMap [
rr:template "{documentId.value}#item" ;
rr:class schema:Thing
]
rr:template "{documentId.value}#item"
有効な IRI を生成しないエラーが発生します。
@base に値を指定すると有効な IRI が得られますが、これはベースに URL エンコードされた値が追加されたベースです。<http://example.org/http%3A%2F%2Fexample.org%2Fjobposts%2F345299#item>
r2rml / rml で値を取り、それを IRI として使用する方法はありますか? または、文字列を IRI に変換するには?