【问题标题】:Using Jena to parse json-ld file , I am not seeing the rdfs:container information coming through使用 Jena 解析 json-ld 文件,我没有看到 rdfs:container 信息通过
【发布时间】:2020-03-31 10:41:10
【问题描述】:

我有一个使用 Jena 解析的 jsonld 文件。该文件具有@type @id "rdfs:label" 和 "rdfs:comment" 以及范围和域。我有这样的代码

模型 m = ModelFactory.createDefaultModel();

    Reader fileReader = new FileReader(fileName);
    Model model = m.read(fileReader, null, "JSON-LD");
    StmtIterator it = model.listStatements();
    Set<String> set = new HashSet<>();

    System.out.println("Labels");
    while (it.hasNext()) {
        Statement statement = it.next();

.... 它似乎拾取了所有内容,但没有看到带有 rdfs:container 的 @type 语句。如何使用此解析器获取这些语句?

json-ld 的一个片段是 { "@id": "aaa:bbb", “@类型”: [ “rdfs:容器” ], “rdfs:标签”:{ "@language": "en", “@值”:“cccc” }, “rdfs:评论”:{ "@language": "en", “@值”:“dddd。” }, “rdfs:成员”:[ { "@id": "aaaa:eeee" }, { "@id": "aaaa:fffff" } ],

当类型是 rdfs:class - 我得到一个带有谓词“type”的语句,对象是 RDFClass,但是当类型是 rdfs:container - 如上例所示,我没有得到一个语句.我期待一个带有谓词“type”的语句和一个带有 bbb localName 的主题和一个指定容器类的对象。我没有看到这样的说法。如何在解析器中检测到 rdfs:container 的存在?

我注意到 Jena 有 Container 的概念:https://jena.apache.org/documentation/javadoc/jena/org/apache/jena/rdf/model/Container.html

【问题讨论】:

  • 您在json-ld.org/playground 尝试过 JSON-LD 吗?
  • 感谢您的建议。我把它放在那里。类型通过,我可以放 ``` "@type": [ "rdfs:container" ],``` 还有 ``` "@type": [ "rdfs:abc" ], ``` 我想Jena 一定是在寻找它支持的值(比如 rdfs:class 并忽略它不理解的内容)。
  • Jena 使用 jsonld-java 读取三元组。对于任何格式,Jena 都不会自动查找容器。应用程序必须使用“Resource.as()”等来表示“请将此视为更高级别的构造。如果您没有从 jsonld-java 和 JSON 操场上看到不同的三元组,那么最好报告它。我们这里不能判断 JSON-LD 是否是正确的形状。容器(或者更确切地说是 rdf:Bad/rdf:Alt/rdf:Seq)在其中具有类似“rdf:_1”的属性。rdfs:Container 类是一个超类 - 应用程序需要说它是什么。

标签: containers jena json-ld


【解决方案1】:

看起来该对象以字符串或http://www.w3.org/2000/01/rdf-schema#container 的形式出现。所以我可以找到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2015-11-05
    相关资源
    最近更新 更多