我在Virtuoso中生成rr:termType
rr:IRI
时遇到问题。我不知道我做错了但是我遵循了W3C规范。
我的映射看起来像这样。当我使用CONSTRUCT
语句生成三元组时,我仍然会获得"URL"
但不会IRI => <url>
(OWNER_LINK
和BRAND_LINK
列。这是Virtuoso不支持的事情,还是我错误的编码方式?
DB.DBA.TTLP
( '
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix gr: <http://purl.org/goodrelations/v1#> .
@prefix s: <http://schema.org/> .
@prefix pod: <http://linked.opendata.cz/ontology/product-open-data.org#> .
<#TriplesMap3>
a rr:TriplesMap ;
rr:logicalTable
[
rr:tableSchema "POD" ;
rr:tableOwner "DBA" ;
rr:tableName "BRAND_OWNER_BSIN"
];
rr:subjectMap
[
rr:template "http://linked.opendata.cz/resource/brand-owner-bsin/{BSIN}" ;
rr:class gr:BusinessEntity ;
rr:graph <http://linked.opendata.cz/resource/dataset/product-open-data.org/2014-01-01>
];
rr:predicateObjectMap
[
rr:predicate gr:hasBrand ;
rr:objectMap
[
rr:parentTriplesMap <#TriplesMap4> ;
rr:joinCondition
[
rr:child "OWNER_CD" ;
rr:parent "OWNER_CD" ;
]; ]; ];
.
<#TriplesMap4>
a rr:TriplesMap ;
rr:logicalTable
[
rr:tableSchema "POD" ;
rr:tableOwner "DBA" ;
rr:tableName "BRAND_OWNER"
];
rr:subjectMap
[
rr:template "http://linked.opendata.cz/resource/brand-owner/{OWNER_CD}" ;
rr:class gr:BusinessEntity ;
rr:graph <http://linked.opendata.cz/resource/dataset/product-open-data.org/2014-01-01>
];
rr:predicateObjectMap
[
rr:predicate gr:legalName ;
rr:objectMap
[ rr:column "OWNER_NM" ];
];
rr:predicateObjectMap
[
rr:predicate s:url ;
rr:objectMap
[
rr:termType rr:IRI ;
rr:column {OWNER_LINK} ;
]; ];
rr:predicateObjectMap
[
rr:predicate gr:hasBrand ;
rr:objectMap
[
rr:parentTriplesMap <#TriplesMap3> ;
rr:joinCondition
[
rr:child "OWNER_CD" ;
rr:parent "OWNER_CD" ;
]; ]; ];
.
<#TriplesMap2>
a rr:TriplesMap;
rr:logicalTable
[
rr:tableSchema "POD";
rr:tableOwner "DBA";
rr:tableName "BRAND_TYPE"
];
rr:subjectMap
[
rr:template "http://linked.opendata.cz/resource/brand-type/{BRAND_TYPE_CD}" ;
rr:class gr:BusinessEntityType ;
rr:graph <http://linked.opendata.cz/resource/dataset/product-open-data.org/2014-01-01>
];
rr:predicateObjectMap
[
rr:predicate gr:name ;
rr:objectMap
[ rr:column "BRAND_TYPE_NM" ];
];
.
<#TriplesMap1>
a rr:TriplesMap;
rr:logicalTable
[
rr:tableSchema "POD" ;
rr:tableOwner "DBA" ;
rr:tableName "BRAND"
];
rr:subjectMap
[
rr:template "http://linked.opendata.cz/resource/brand/{BSIN}" ;
rr:class gr:Brand ;
rr:graph <http://linked.opendata.cz/resource/dataset/product-open-data.org/2014-01-01>
];
rr:predicateObjectMap
[
rr:predicate pod:bsin ;
rr:objectMap [ rr:column "BSIN" ] ;
];
rr:predicateObjectMap
[
rr:predicate gr:name ;
rr:objectMap [ rr:column "BRAND_NM" ] ;
];
rr:predicateObjectMap
[
rr:predicate s:url ;
rr:objectMap
[
rr:termType rr:IRI ;
rr:column "BRAND_LINK" ;
]; ];
rr:predicateObjectMap
[
rr:predicate gr:BusinessEntityType ;
rr:objectMap
[
rr:parentTriplesMap <#TriplesMap2> ;
rr:joinCondition
[
rr:child "BRAND_TYPE_CD" ;
rr:parent "BRAND_TYPE_CD" ;
]; ]; ];
.
',
'http://product-open-data.org/temp',
'http://product-open-data.org/temp'
);
exec ( 'sparql ' || DB.DBA.R2RML_MAKE_QM_FROM_G ('http://product-open-data.org/temp') );
答案 0 :(得分:1)
要清楚 - 您是说R2RML映射是否已成功加载,但在运行SPARQL CONSTRUCT
查询时,结果集中未显示rr:termType rr:IRI
映射?
As the docs indicate,目前仅支持rr:sqlQuery
...
答案 1 :(得分:1)
所以我发现我的代码错了它应该是这样的
rr:predicateObjectMap
[
rr:predicateMap
[
rr:constant s:url
];
rr:objectMap
[
rr:termType rr:IRI ;
rr:template "{BRAND_LINK}" ;
];
];.
它的工作
谢谢。