OpenRefine + RDF:处理重复出现

OpenRefine + RDF: handling repeated occurrences

使用带有 RDF 扩展名的 OpenRefine 将 XML 转换为 RDF。这是 OR 中的示例记录。

我一直在寻找一种方法来处理重复出现的情况,在本例中是 animals - narrower 中的两次。这就是我要做的:

@prefix ex: <http://example.com/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .

ex:mammals a skos:Concept;
skos:narrower "ex:cats, ex:cows" .

在 RDF 节点窗格中,我将窄字符映射到文本,并使用下面的 GREL 将所有出现在带有 ex: 前缀的一行上。

forEach(row.record.cells['animals - narrower'].value,v,'ex:'+v).join(', ')

几乎是我想要的。理想情况下,不应有引号:

ex:mammals a skos:Concept;
skos:narrower ex:cats, ex:cows .

换句话说,我想映射到一个 URI 类型,但为了更好的易读性,我想保留 ex: 前缀,而不是完整的 URI。我还想将它们作为一个重复的对象保留在一个“skos:narrower”谓词中,而不是每次出现时都带有谓词+对象的一行。

我知道如何使用编辑器去除引号。我只是希望有比我找到的更好的方法。

此外,我知道如何在各个新列上重复出现并映射每个新列,但在现实生活中我必须将 100 多个列映射到少数目标 skos 字段。这不是自动化的目的。

同时,RDF-Transform出现了。它有这个问题的答案。它的工作方式略有不同,例如此屏幕截图中突出显示的哺乳动物。

一个 警告 :我看到 this issue 运行 在 Windows 10 中使用 JRE 扩展。我发现的解决方法是 运行 OpenRefine with RDF-Transform 来自 WSL 的插件。