Virtuoso R2RML rr:IRI生成

时间:2014-11-08 20:37:57

标签: mapping rdf virtuoso r2rml

我在Virtuoso中生成rr:termType rr:IRI时遇到问题。我不知道我做错了但是我遵循了W3C规范。

我的映射看起来像这样。当我使用CONSTRUCT语句生成三元组时,我仍然会获得"URL"但不会IRI => <url>OWNER_LINKBRAND_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') );

2 个答案:

答案 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}"  ;
          ];

     ];.

它的工作

谢谢。