使用Java将JSON文件转换为RDF格式

Kal*_*nka 2 java json rdf

在这里,我想将JSON文件转换为RDF.这是JSON

{
"glossary": {
    "title": "example glossary",
    "GlossDiv": {
        "title": "S",
        "GlossList": {
            "GlossEntry": {
                "ID": "SGML",
                "SortAs": "SGML",
                "GlossTerm": "Standard Generalized Markup Language",
                "Acronym": "SGML",
                "Abbrev": "ISO 8879:1986",
                "GlossDef": {
                    "para": "A meta-markup language, used to create markup languages such as DocBook.",
                    "GlossSeeAlso": ["GML", "XML"]
                },
                "GlossSee": "markup"
            }
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我找不到将其转换为RDF的正确方法.

Ant*_*ann 7

没有标准的方法将JSON解释为RDF.有几种方法可以从JSON文件生成RDF(用Java或其他方式).您可以简单地使用在Java中实现的JSON解析器,然后使用用于RDF的Java库(例如Apache JenaRDF4J(以前称为Sesame))提取相关部分并构建RDF图.但是,还有其他方法可以使任务更容易:

  • 通过向其添加一个JSON文件,将其转换为JSON-LD文件@context.这适用于简单的案例,但不足以涵盖许多相关案例.
  • 使用RML,一种用于表示从各种数据格式(包括JSON)到RDF的映射的语言.它有一个Java参考实现.RML是R2RML的扩展,因此它也可以将关系数据映射到RDF,如果您熟悉R2RML,则理解RML的工作方式相对容易.还有一个图形编辑器,但它似乎无法下载.
  • 使用SPARQL-Generate,一种表示从非RDF数据源(包括JSON)到RDF的映射的语言.它有一个基于Jena的参考实现.它扩展了SPARQL,因此如果您熟悉SPARQL,它应该很容易使用它.它可以在线测试.

免责声明:我为SPARQL-Generate做出了贡献.


bri*_*mat 5

如果您的目的只是简单地获取有效的RDF而无需对结构做出任何决定,则可以简单地添加一个@context对象并将现有的JSON转换为JSON-LD,例如

{
  "@context": {"@vocab": "http://example.org/ontology#"},
  "glossary": {
    "title": "example glossary",
    "GlossDiv": {
        "title": "S",
        "GlossList": {
            "GlossEntry": {
                "ID": "SGML",
                "SortAs": "SGML",
                "GlossTerm": "Standard Generalized Markup Language",
                "Acronym": "SGML",
                "Abbrev": "ISO 8879:1986",
                "GlossDef": {
                    "para": "A meta-markup language, used to create markup languages such as DocBook.",
                    "GlossSeeAlso": ["GML", "XML"]
                },
                "GlossSee": "markup"
            }
        }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后可以使用适当的RDF / JSON-LD库将其解释为RDF,RDF结构为:

@prefix ns0: <http://example.org/ontology#> .

[] ns0:glossary [
    ns0:GlossDiv [
      ns0:GlossList [ ns0:GlossEntry [
          ns0:Abbrev "ISO 8879:1986" ;
          ns0:Acronym "SGML" ;
          ns0:GlossDef [
            ns0:GlossSeeAlso "GML", "XML" ;
            ns0:para "A meta-markup language, used to create markup languages such as DocBook."
          ] ;
          ns0:GlossSee "markup" ;
          ns0:GlossTerm "Standard Generalized Markup Language" ;
          ns0:ID "SGML" ;
          ns0:SortAs "SGML"
        ] ] ;
      ns0:title "S"
    ] ;
    ns0:title "example glossary"
  ] .
Run Code Online (Sandbox Code Playgroud)

这可能是奇怪的RDF,但是可以使用RDF工具进行加载和操作。

您可以在json-ld游乐场玩这个例子