У меня есть файл jsonld, который я анализирую с помощью Jena. В файле есть @type @id "rdfs: label" и "rdfs: comment", а также диапазоны и домены. У меня есть код, подобный этому
Model 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();
.... Кажется, что получает весь контент, но не видит операторов @type с RDFS: контейнер. Как мне получить эти операторы, используя этот синтаксический анализатор?
Фрагмент json -ld является {"@id": "aaa: bbb", "@type": ["rdfs: container" ], "rdfs: label": {"@language": "en", "@value": "cccc"}, "rdfs: comment": {"@language": "en", "@value" : "d ddd." }, "rdfs: member": [{"@id": "aaaa: eeee"}, {"@id": "aaaa: fffff"}],
Когда типом является rdfs: class - Я получаю оператор с предикатом "тип" и объектом в качестве RDFClass, но когда типом является rdfs: container - как в приведенном выше примере, я не получаю оператор. Я ожидал, что оператор получит предикат типа и субъект с localName bbb и объект, определяющий класс контейнера. Я не вижу такого заявления. Как мне определить в синтаксическом анализаторе наличие rdfs: container?
Я заметил, что у Джены есть концепция Контейнера: https://jena.apache.org/documentation/javadoc/jena/org/apache/jena/rdf/model/Container.html.