1

rr:termType rr:IRI在 Virtuoso 中生成时遇到问题。我不知道我是否做错了,但我遵循了 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') );
4

2 回答 2

1

明确一点——你是说 R2RML 映射加载成功,但是在运行 SPARQLCONSTRUCT查询时,rr:termType rr:IRI映射没有显示在结果集中?

正如文档所示rr:sqlQuery目前不支持 only ...

于 2014-11-09T14:22:21.300 回答
1

所以我发现我的代码是错误的,应该是这样的

 rr:predicateObjectMap 
    [
       rr:predicateMap
          [
             rr:constant  s:url 
          ]; 
       rr:objectMap 
          [ 
             rr:termType  rr:IRI          ; 
             rr:template  "{BRAND_LINK}"  ;
          ];

     ];.

它正在工作

谢谢你。

于 2014-11-15T19:12:46.647 回答