Xml 在RML(RDF映射语言)中连接多个(2+;)节点/多跳映射

Xml 在RML(RDF映射语言)中连接多个(2+;)节点/多跳映射,xml,join,xpath,rdf,rml-rdf,Xml,Join,Xpath,Rdf,Rml Rdf,我试图将XML源映射到RDF,但似乎无法使多跳映射或多连接条件起作用。在经历了这个过程之后,我甚至不确定这是否可能 我感谢任何帮助解决这一问题 下面是一个简化的XML示例、我迄今为止创建的RML映射、使用生成的当前RDF输出以及我期望的RDF输出 资料 main1 其他1 main1 其他2 其他条件2 另一个1 另一个描述1 其他1 另一个2 另一个描述2 第二条 映射 @前缀rml:。 @前缀rr:。 @前缀ql:。 @前缀owl:。 @前缀rdf:。 @前缀rdfs:。 @前缀test

我试图将XML源映射到RDF,但似乎无法使多跳映射或多连接条件起作用。在经历了这个过程之后,我甚至不确定这是否可能

我感谢任何帮助解决这一问题

下面是一个简化的XML示例、我迄今为止创建的RML映射、使用生成的当前RDF输出以及我期望的RDF输出

资料

main1
其他1
main1
其他2
其他条件2
另一个1
另一个描述1
其他1
另一个2
另一个描述2
第二条
映射
@前缀rml:。
@前缀rr:。
@前缀ql:。
@前缀owl:。
@前缀rdf:。
@前缀rdfs:。
@前缀testont:。
@前缀:。
@基地。
:TriplesMapNotherNode a rr:TriplesMap;
rml:逻辑源[
rml:源“multihop_data.xml”;
rml:referenceFormulation ql:XPath;
rml:迭代器“//另一个节点”
].
:TripleSpanotherNode rr:subjectMap[
rr:模板“{description}”
].
:TriplesMapOtherNode a rr:TriplesMap;
rml:逻辑源[
rml:源“multihop_data.xml”;
rml:referenceFormulation ql:XPath;
rml:迭代器“//OtherNode”
].
:TriplesMapOtherNode rr:subjectMap[
rr:模板“{name}”
].
:TripleMapMain节点a rr:TripleMap;
rml:逻辑源[
rml:源“multihop_data.xml”;
rml:referenceFormulation ql:XPath;
rml:迭代器“//MainNode”
].
:TripleMapMain节点rr:subjectMap[
rr:模板“{name}”
].
:TripleMapMain节点rr:PredicateObject映射[
rr:谓词rdf:type;
rr:object testont:MainClass
].
:TriplesMapOtherNode rr:PredicateObject映射[
rr:谓词testont:dummy谓词;
rr:objectMap[
a rr:重新对象映射;
rr:ParentTripleMap:TripleSpaNotherNode;
rr:连接条件[
rr:子“名称”;
rr:父“另一个条件”;
]
]
].
:TripleMapMain节点rr:PredicateObject映射[
rr:谓词testont:hassdescription;
rr:objectMap[
a rr:重新对象映射;
rr:ParentTripleMap:TripleMapotherNode;
rr:连接条件[
rr:子“名称”;
rr:父“其他条件”;
]
]
].
当前RDF
。
.
.
预期RDF
。
.
总之,

  • 如何基于2个连接条件连接3个节点
  • 如何跳过或避免创建三元组
  • 我可以根据2+连接条件将其扩展为连接3+节点吗

@stanislav kralin我可以问一下为什么您认为
rml
标签不适合这个问题吗?是Adobe的报表标记语言。我明白了。谢谢你指出。我编辑了这个标题,因为我将RML称为RDF映射语言。@stanislav kralin我可以问你为什么认为
RML
标记不适合这个问题吗?是Adobe的报表标记语言。我明白了。谢谢你指出。我编辑了这个标题,因为我将RML称为RDF映射语言。
@prefix rml: <http://semweb.mmlab.be/ns/rml#> .
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix ql: <http://semweb.mmlab.be/ns/ql#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

@prefix testont: <http://www.example.com/ontology/> .
@prefix : <http://www.example.com/rules/> .
@base <http://www.example.com/instance/> .


:TriplesMapAnotherNode a rr:TriplesMap;
  rml:logicalSource [
    rml:source "multihop_data.xml";
    rml:referenceFormulation ql:XPath;
    rml:iterator "//AnotherNode"
  ].

:TriplesMapAnotherNode rr:subjectMap [
  rr:template "{description}"
].

:TriplesMapOtherNode a rr:TriplesMap;
    rml:logicalSource [
        rml:source "multihop_data.xml";
        rml:referenceFormulation ql:XPath;
        rml:iterator "//OtherNode"
    ].

:TriplesMapOtherNode rr:subjectMap [
    rr:template "{name}"
].

:TriplesMapMainNode a rr:TriplesMap;
    rml:logicalSource [
        rml:source "multihop_data.xml";
        rml:referenceFormulation ql:XPath;
        rml:iterator "//MainNode"
    ].

:TriplesMapMainNode rr:subjectMap [
    rr:template "{name}"
].

:TriplesMapMainNode rr:predicateObjectMap [
    rr:predicate rdf:type;
    rr:object testont:MainClass
].

:TriplesMapOtherNode rr:predicateObjectMap [
  rr:predicate testont:dummypredicate;
  rr:objectMap [
    a rr:RefObjectMap;
    rr:parentTriplesMap :TriplesMapAnotherNode;
    rr:joinCondition [
      rr:child "name";
      rr:parent "anotherCondition";
    ]
  ]
].

:TriplesMapMainNode rr:predicateObjectMap [
    rr:predicate testont:hasDescription;
    rr:objectMap [
        a rr:RefObjectMap;
        rr:parentTriplesMap :TriplesMapOtherNode;
        rr:joinCondition [
          rr:child "name";
          rr:parent "otherCondition";
        ]
    ]
].
<http://www.example.com/instance/other1> <http://www.example.com/ontology/dummypredicate> <anotherDesc1>.
<http://www.example.com/instance/main1> <http://www.example.com/ontology/hasDescription> <other1>.
<http://www.example.com/instance/main1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.com/ontology/MainClass>.
<http://www.example.com/instance/main1> <http://www.example.com/ontology/hasDescription> <anotherDesc1>.
<http://www.example.com/instance/main1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.com/ontology/MainClass>.