Мне немного непонятно, какова ваша точная конечная цель, А.Р., но я вижу две возможности:
- вам нужна серия файлов на диске с разными именами файлов, каждый из которых содержит фрагмент RDF из формы одного пользователя
- вам нужен один файл на диске, но который содержит несколько тем RDF, каждый из которых представляет детали формы другого пользователя
В первом случае вам нужно будет каждый раз менять выходной файл. В настоящее время у вас есть:
File file = new File("d:/teste20.rdf");
поэтому имя файла установлено на «teste20.rdf». Вам придется изменить это, чтобы каждый раз использовать другое имя файла. Есть несколько способов добиться этого: один из них - это поле private static int
в вашем классе, которое вы увеличиваете каждый раз:
File file = new File("d:/teste_" + fileCounter++ + ".rdf");
Есть и другие способы, которые вы можете увидеть из этого вопроса .
Если, однако, вам нужен второй случай: несколько ресурсов RDF в одном файле, то диагностировать проблему немного сложнее, не видя больше кода. Однако, если модель в:
Resource p1 = f.model.createResource(...)
это не одна и та же модель каждый раз (я не могу сказать из вашего кода, как создается эта модель), каждый раз, когда запускается слушатель, вы создаете модель, содержащую только новые данные из формы пользователя, а затем запишите это на месте. В этом случае у вас есть два варианта: либо не продолжать создавать новую модель каждый раз (но это означает, что модель со временем станет достаточно большой, а также будет сбрасываться при каждом перезапуске приложения), либо прочитать существующее содержимое d:/teste20.rdf
до выписываете содержимое модели (не проверено, но должно работать):
File file = new File("d:/teste20.rdf");
f.model.read( new FileReader( file ) );
f.model.write( new FileWriter( file ), "RDF/XML-ABBREV" );
Если вы не создаете новую модель каждый раз, предполагая, что выражение f.uriBase+tabTF[0].getText()
дает вам уникальную строку URI для каждого пользователя (в противном случае проблема заключается в неуникальном URI субъекта, как предложил Ричард), тогда мы понадобится увидеть больше кода, чтобы добраться до первопричины.