在Apache Jena中将Json-Ld对象的数组读入模型中。如何从模型中检索单个对象?

时间:2016-12-21 08:09:02

标签: java jena semantic-web json-ld apache-jena

这是Json对象数组(学生数据)。我在耶拿模型中加载了Json-Ld数据

[
    { 
       "@context" : {
                       "myvocab" : "http://mywebsite.com/vocab/",
                       "name"  : "myvocab:name",
                       "firstname" : "myvocab:firstname",
                       "lastname"  : "myvocab:lastname",
                       "rollNumber" : "myvocab:rollNumber"
                    },
       "name" : { 
                   "firstname" : "Dhannan",
                   "lastname"  : "Chaudhary"
                },
       "rollNumber" : "26"
    },
    { 
       "@context" : {
                       "myvocab" : "http://mywebsite.com/vocab/",
                       "name"  : "myvocab:name",
                       "firstname" : "myvocab:firstname",
                       "lastname"  : "myvocab:lastname",
                       "rollNumber" : "myvocab:rollNumber"
                    },
       "name" : { 
                   "firstname" : "Maakin",
                   "lastname"  : "Dhayaal"
                },
       "rollNumber" : "69"
    }
]

这是我上面示例的模型输出(通过使用SPARQL)

-------------------------------------------------------------------
| Subject | Predicate                               | Object      |
===================================================================
| _:b0    | <http://mywebsite.com/vocab/lastname>   | "Chaudhary" |
| _:b0    | <http://mywebsite.com/vocab/firstname>  | "Dhannan"   |
| _:b1    | <http://mywebsite.com/vocab/lastname>   | "Dhayaal"   |
| _:b1    | <http://mywebsite.com/vocab/firstname>  | "Maakin"    |
| _:b2    | <http://mywebsite.com/vocab/rollNumber> | "62"        |
| _:b2    | <http://mywebsite.com/vocab/name>       | _:b1        |
| _:b3    | <http://mywebsite.com/vocab/rollNumber> | "61"        |
| _:b3    | <http://mywebsite.com/vocab/name>       | _:b0        |
-------------------------------------------------------------------

从这个模型中我只想要每个学生的主题(耶拿的资源)(_:b2,_:b3)。 但是通过使用model.listSubjects(),它为所有主题提供迭代器(_:b0,_:b1,_:b2,_:b3)

我的主要目标是能够为学生1和学生2获得单独的模型。
我怎样才能做到这一点?
欢迎提出每一条建议。

1 个答案:

答案 0 :(得分:0)

首先,您可以使用RDF Type字面值来定义Student类以及StudentName类(不确定为什么需要将它们分解)。

然后,您可以检查主题是否具有您要查找的属性。您可以在Eclipse Lyo Jena provider中看到我们如何执行此操作。

最后,您可以model your domain with Lyo modelling tools为您的域生成POJOs,可以在单个方法调用中从/向Jena模型转换。