问题标签 [rml-rdf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
372 浏览

json - 用于 json 中数组的 RML 映射器

我正在尝试将此 JSON 文件映射到 RDF,但我可能无法正确迭代以获取度量数组内部的“值”的值。

JSON:

RML:

谢谢你的帮助,基亚拉

0 投票
0 回答
99 浏览

java - 如何在 CARML 中使用 JSONata?

请问是否有人尝试在CARMLhttps://github.com/carml/carml )中使用JSONata4Java

它需要实现getSourceIterator()getExpressionEvaluatorFactory(),它们位于com.taxonic.carml.logical_source_resolver包的LogicalSourceResolver接口中。

有什么想法/方向吗?

0 投票
1 回答
195 浏览

xml - 如何使用 RML 映射 xml 文件的子元素以创建 RDF?

我想使用 RML 映射创建一个 RDF。XML 部分如下所示。我为“属性”和“FB”制作了三重映射。其中一个 FB 有一个子“属性”,但结果是,每个“FB”三元组都有“属性”。是否有任何解决方案可以使子“属性”仅对一个“FB”元素唯一?

映射:

0 投票
2 回答
405 浏览

mapping - RML 中是否有针对输入的一个数据元素(单元格)中的多个复杂实体的解决方案,而无需清理输入数据?

我有一个人名列表,例如,除了(Person是列名):

请注意,多人以不同的方式被提及,并且以不同的方式分隔。

我想使用 RDF 映射语言https://rml.io/创建以下 RDF而无需清理(或更改)输入数据

请注意,输入数据中提到了 Arthur Harris 两次,但只创建了一个 RDF 资源。

我使用函数本体https://fno.io/并创建了一个自定义 java 方法。根据参数mode返回人员属性列表(例如,仅 URI 或仅名字)。

假设该getAllPersons方法正确地从给定字符串中提取人员,如上面的那些。为了从一个单元格中提取多个人,我这样调用该getPersons函数subjectMap

我使用 RMLMapper https://github.com/RMLio/rmlmapper-java,但是,它只允许为每一行返回一个主题,请参阅https://github.com/RMLio/rmlmapper-java/blob/master/src /main/java/be/ugent/rml/Executor.java#L292。这就是为什么我写了一个List<ProvenancedTerm> getSubjects(Term triplesMap, Mapping mapping, Record record, int i)方法并相应地替换了它。这导致以下结果:

我知道此扩展与 RML 规范https://rml.io/specs/rml/不兼容,其中说明了以下内容:

它[三元组映射] 必须只有一个主题映射,它指定如何为逻辑源(相应的数据库/CSV/XML/JSON 数据源)的每一行/记录/元素/对象生成主题。

如果我继续添加名字resp。姓氏,predicateObjectMap可以添加以下内容:

因为predicateObjectMap为每个主题评估 a 并且现在返回多个主题,所以每个 person 资源都将获得每个人的名字。为了更清楚,它看起来像这样:

我的问题是:对于输入的一个数据元素(单元格)中的多个复杂实体(例如具有名字和姓氏的人),RML 中是否有解决方案或变通方法,而无需清理(或更改)输入数据?

也许这个问题与我的问题有关:https ://www.w3.org/community/kg-construct/track/issues/3

如果这样的用例不打算通过像 RML 这样的映射框架来解决,那也很好。如果是这种情况,还有什么替代方案?例如,生成 RDF 的手工提取管道?

0 投票
0 回答
36 浏览

rdf - 如何从源数据生成语言标签

我正在使用RMLMapper并想要映射模式,例如

我有(跳过不相关的代码块)

哪个有效,但适用于英语。如何从 /lom/general/title/string@language 生成语言标签来替换“en”?

我试过了

不高兴“语言标签“node1ef4p39f8x5”不符合 BCP 47 标准”

0 投票
0 回答
156 浏览

xml - 使用 RMLMapper 将 XML 嵌套到 Turtle 映射

我正在尝试在 XML 和 Turtle 之间创建嵌套映射。为此,我正在使用 RMLMapper v4.9.0。

这是我要映射的示例 XML 文件:

这是我想生成的 Turtle 输出:

我怎样才能实现这种类型的嵌套/格式?

通过将地址三元组的主题创建为rr:termType rr:BlankNode.
但是,我希望主题不要重复,并且输出方括号而不是 BlankNodes。

我使用了以下地图:

0 投票
1 回答
157 浏览

xml - 递归遍历节点的 RML 映射,每次都附加父属性

我正在尝试将 XML 源映射到 RDF,并且想知道如何在每次跟踪父属性的同时进行递归遍历。在所示示例中,我希望Person提取所有节点,并将name每个父节点的 附加到当前节点。考虑所有父名称是必要的,因为节点名称可能不是唯一的。(grandChild1在例子中看两次)

请注意,我事先不知道嵌套可以进行多少级,因此为每个级别添加一个 TriplesMap 不是一个可行的选择。

在浏览了文档示例测试用例之后,我不太确定这是否可能。

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

数据 映射 当前RDF 预期的 RDF

感谢您为解决此问题提供的任何帮助。提前致谢!

0 投票
0 回答
202 浏览

xml - 在 RML(RDF 映射语言)中加入多个 (2+) 节点/多跳映射

我正在尝试将 XML 源映射到 RDF,但似乎无法使多跳映射或多连接条件起作用。在浏览了文档示例测试用例之后,我不太确定这是否可能。

感谢您为解决此问题提供的任何帮助。

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

数据 映射 当前RDF 预期的 RDF

简而言之,

  • 如何根据 2 个加入条件加入 3 个节点?
  • 如何跳过或避免创建三元组?
  • 我可以根据 2 个以上的加入条件将其扩展为加入 3 个以上的节点吗?
0 投票
2 回答
177 浏览

json - rml / r2rml 中是否有任何方法可以将值作为 IRI?

我正在使用RMLMapper将 JSON 转换为 RDF。存储在 JSON 中的值之一是 URL。我想以此作为 RDF 语句对象的 IRI 的基础。

输入是

我希望语句主题的 IRI 是http://example.org/345299#item,例如<http://example.org/345299#item> a <http://schema.org/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?

0 投票
1 回答
171 浏览

csv - RML 和 FnO 无法一起运行

我正在尝试在 RML 映射器中使用 FnO 函数(我喜欢在这里string_split做类似的事情)。这是我的文件夹的样子:

在此处输入图像描述

我正在执行java -jar "rmlmapper.jar" -m mapping-cuisines.ttl -o output-cuisines.ttl -s turtle

但是,当我尝试实现 a 时,<#FunctionMap>我收到以下错误消息:

对我来说没有任何意义。根据 git repo,这些函数是从我执行 rmlmapper 的地方动态加载的。

数据集:https ://mega.nz/file/LsJAQRaR#84lfASPXVA08zm0RbuRfNvR7tx-vklS82D1KBGhhdA8

我的代码:

我的functions.ttl: