use of org.semanticweb.skos.SKOSConcept in project opentheso by miledrousset.
the class ImportSkosHelper method addConcepts.
/**
* récupération des concepts
* @return
*/
public boolean addConcepts() {
String uri;
Value value;
boolean isTopConcept = true;
Concept concept = new Concept();
ConceptHelper conceptHelper = new ConceptHelper();
TermHelper termHelper = new TermHelper();
NoteHelper noteHelper = new NoteHelper();
Term term = new Term();
AlignmentHelper alignmentHelper = new AlignmentHelper();
// pour intégrer les coordonnées GPS
NodeGps nodeGps = new NodeGps();
GpsHelper gpsHelper = new GpsHelper();
// ajout des termes et traductions
NodeTerm nodeTerm = new NodeTerm();
ArrayList<NodeTermTraduction> nodeTermTraductionList = new ArrayList<>();
// Enregister les synonymes et traductions
ArrayList<NodeEM> nodeEMList = new ArrayList<>();
// ajout des notes
ArrayList<NodeNote> nodeNotes = new ArrayList<>();
// ajout des alignements
ArrayList<NodeAlignment> nodeAlignments = new ArrayList<>();
// ajout des relations
ArrayList<HierarchicalRelationship> hierarchicalRelationships = new ArrayList<>();
// ajout des relations Groups
ArrayList<String> idGrps = new ArrayList<>();
if (dataSet.getSKOSConcepts().isEmpty())
return false;
conceptsCount = dataSet.getSKOSConcepts().size();
// i can get all the concepts from this scheme
for (SKOSConcept skosConcept : dataSet.getSKOSConcepts()) {
// URI du Concept récupération automatique de l'identifiant
String id = getIdFromUri(skosConcept.getURI().toString());
if (id == null || id.isEmpty()) {
message = message + "identifiant null pour l'URI : " + skosConcept.getURI().toString();
continue;
} else {
concept.setIdConcept(id);
}
concept.setIdThesaurus(thesaurus.getId_thesaurus());
// concept.setIdGroup(idGroup.get(0));
concept.setNotation("");
// skos:notation
/* if(anno.getURI().getFragment().equalsIgnoreCase("notation")) {
value = getValue(anno);
NodeTermTraduction nodeTermTraduction = new NodeTermTraduction();
nodeTermTraduction.setLexicalValue(value.getValue());
nodeTermTraduction.setLang(value.getLang());
nodeTermTraductionList.add(nodeTermTraduction);
}*/
concept.setStatus("");
concept.setIdArk(skosConcept.getURI().toString());
for (SKOSAnnotation anno : skosConcept.getSKOSAnnotations(dataSet)) {
// c'est une valeur
if (anno.isAnnotationByConstant()) {
// balises SKOS
if (anno.getURI().getFragment() != null) {
// get notation
if (anno.getURI().getFragment().equalsIgnoreCase("notation")) {
value = getValue(anno);
concept.setNotation(value.getValue());
}
// get GPS : long and lat
if (anno.getURI().getFragment().equalsIgnoreCase("long")) {
value = getValue(anno);
nodeGps.setLongitude(Double.parseDouble(value.getValue()));
}
if (anno.getURI().getFragment().equalsIgnoreCase("lat")) {
value = getValue(anno);
nodeGps.setLatitude(Double.parseDouble(value.getValue()));
}
// get altLabels
if (anno.getURI().getFragment().equalsIgnoreCase("prefLabel")) {
value = getValue(anno);
NodeTermTraduction nodeTermTraduction = new NodeTermTraduction();
nodeTermTraduction.setLexicalValue(value.getValue());
nodeTermTraduction.setLang(value.getLang());
nodeTermTraductionList.add(nodeTermTraduction);
}
if (anno.getURI().getFragment().equalsIgnoreCase("altLabel")) {
value = getValue(anno);
NodeEM nodeEM = new NodeEM();
nodeEM.setLexical_value(value.getValue());
nodeEM.setLang(value.getLang());
nodeEM.setSource("" + idUser);
nodeEM.setStatus("USE");
nodeEM.setHiden(false);
nodeEMList.add(nodeEM);
}
if (anno.getURI().getFragment().equalsIgnoreCase("hiddenLabel")) {
value = getValue(anno);
NodeEM nodeEM = new NodeEM();
nodeEM.setLexical_value(value.getValue());
nodeEM.setLang(value.getLang());
nodeEM.setSource("" + idUser);
nodeEM.setStatus("Hidden");
nodeEM.setHiden(true);
nodeEMList.add(nodeEM);
}
// get notes
if (anno.getURI().getFragment().equalsIgnoreCase("definition")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("definition");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("note")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("note");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("scopeNote")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("scopeNote");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("editorialNote")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("editorialNote");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("historyNote")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("historyNote");
nodeNotes.add(nodeNote);
}
} else // balises DublinCore dc
{
uri = getIdFromUri(anno.getURI().toString());
if (uri.equalsIgnoreCase("created") || uri.equalsIgnoreCase("date")) {
concept = addDates(concept, formatDate, getValue(anno).getValue(), "created");
}
if (uri.equalsIgnoreCase("modified")) {
concept = addDates(concept, formatDate, getValue(anno).getValue(), "modified");
}
// get the identifier from dcterms ceci peut être aussi l'identifiant ark
if (uri.equalsIgnoreCase("identifier")) {
concept.setIdArk(getValue(anno).getValue());
}
}
} else // c'est une relation
{
// balises SKOS
if (anno.getURI().getFragment() != null) {
// get relations hiérarchiques
if (anno.getURI().getFragment().equalsIgnoreCase("narrower")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
HierarchicalRelationship hierarchicalRelationship = new HierarchicalRelationship();
hierarchicalRelationship.setIdConcept1(concept.getIdConcept());
hierarchicalRelationship.setIdConcept2(uri);
hierarchicalRelationship.setIdThesaurus(thesaurus.getId_thesaurus());
hierarchicalRelationship.setRole("NT");
hierarchicalRelationships.add(hierarchicalRelationship);
}
if (anno.getURI().getFragment().equalsIgnoreCase("broader")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
HierarchicalRelationship hierarchicalRelationship = new HierarchicalRelationship();
hierarchicalRelationship.setIdConcept1(concept.getIdConcept());
hierarchicalRelationship.setIdConcept2(uri);
hierarchicalRelationship.setIdThesaurus(thesaurus.getId_thesaurus());
hierarchicalRelationship.setRole("BT");
hierarchicalRelationships.add(hierarchicalRelationship);
isTopConcept = false;
}
if (anno.getURI().getFragment().equalsIgnoreCase("related")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
HierarchicalRelationship hierarchicalRelationship = new HierarchicalRelationship();
hierarchicalRelationship.setIdConcept1(concept.getIdConcept());
hierarchicalRelationship.setIdConcept2(uri);
hierarchicalRelationship.setIdThesaurus(thesaurus.getId_thesaurus());
hierarchicalRelationship.setRole("RT");
hierarchicalRelationships.add(hierarchicalRelationship);
}
// get scheme
if (anno.getURI().getFragment().equalsIgnoreCase("inScheme")) {
// uri = anno.getAnnotationValue().getURI().toString();
}
// get Groups
if (anno.getURI().getFragment().equalsIgnoreCase("memberOf")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
idGrps.add(uri);
addIdGroupToVector(uri);
}
// get Alignements
if (anno.getURI().getFragment().equalsIgnoreCase("closeMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(2);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("exactMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(1);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("broadMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(3);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("narrowMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(5);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("relatedMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(4);
nodeAlignments.add(nodeAlignment);
}
}
}
}
// ajout des termes et traductions
nodeTerm.setNodeTermTraduction(nodeTermTraductionList);
nodeTerm.setIdTerm(concept.getIdConcept());
nodeTerm.setIdConcept(concept.getIdConcept());
nodeTerm.setIdThesaurus(thesaurus.getId_thesaurus());
nodeTerm.setSource("");
nodeTerm.setStatus("");
nodeTerm.setCreated(concept.getCreated());
nodeTerm.setModified(concept.getModified());
// conctrole si le concept est vide aucun prefLable, on l'ignore
if (!isConceptEmpty(nodeTermTraductionList)) {
if (idGrps.isEmpty()) {
concept.setTopConcept(isTopConcept);
concept.setIdGroup(idGroupDefault);
conceptHelper.insertConceptInTable(ds, concept, idUser);
} else {
for (String idGrp : idGrps) {
concept.setTopConcept(isTopConcept);
concept.setIdGroup(idGrp);
conceptHelper.insertConceptInTable(ds, concept, idUser);
}
}
termHelper.insertTerm(ds, nodeTerm, idUser);
try {
Connection conn = ds.getConnection();
conn.setAutoCommit(false);
for (HierarchicalRelationship hierarchicalRelationship : hierarchicalRelationships) {
conceptHelper.addLinkHierarchicalRelation(conn, hierarchicalRelationship, idUser);
}
conn.commit();
conn.close();
} catch (SQLException ex) {
}
for (NodeNote nodeNoteList1 : nodeNotes) {
if (nodeNoteList1.getNotetypecode().contains("scopeNote")) {
noteHelper.addConceptNote(ds, concept.getIdConcept(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("historyNote")) {
noteHelper.addConceptNote(ds, concept.getIdConcept(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("definition")) {
noteHelper.addTermNote(ds, nodeTerm.getIdTerm(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("editorialNote")) {
noteHelper.addTermNote(ds, nodeTerm.getIdTerm(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("note")) {
noteHelper.addConceptNote(ds, nodeTerm.getIdTerm(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
}
for (NodeAlignment nodeAlignment : nodeAlignments) {
alignmentHelper.addNewAlignment(ds, nodeAlignment);
}
for (NodeEM nodeEMList1 : nodeEMList) {
term.setId_concept(concept.getIdConcept());
term.setId_term(nodeTerm.getIdTerm());
term.setLexical_value(nodeEMList1.getLexical_value());
term.setLang(nodeEMList1.getLang());
term.setId_thesaurus(thesaurus.getId_thesaurus());
term.setSource(nodeEMList1.getSource());
term.setStatus(nodeEMList1.getStatus());
termHelper.addNonPreferredTerm(ds, term, idUser);
}
if (nodeGps.getLatitude() != 0.0) {
if (nodeGps.getLongitude() != 0.0) {
// insertion des données GPS
gpsHelper.insertCoordonees(ds, concept.getIdConcept(), thesaurus.getId_thesaurus(), nodeGps.getLatitude(), nodeGps.getLongitude());
}
}
}
// initialisation des variables
concept = new Concept();
term = new Term();
nodeTerm = new NodeTerm();
nodeTermTraductionList = new ArrayList<>();
nodeEMList = new ArrayList<>();
nodeNotes = new ArrayList<>();
nodeAlignments = new ArrayList<>();
hierarchicalRelationships = new ArrayList<>();
idGrps = new ArrayList<>();
isTopConcept = true;
nodeGps = new NodeGps();
}
for (String idTopConcept1 : idTopConcept) {
if (!conceptHelper.setTopConcept(ds, idTopConcept1, thesaurus.getId_thesaurus())) {
// erreur;
}
}
addGroups();
addLangsToThesaurus(ds, thesaurus.getId_thesaurus());
message = message + "\n nombre de Concepts importés : " + conceptsCount;
return true;
}
use of org.semanticweb.skos.SKOSConcept in project opentheso by miledrousset.
the class ImportSkosHelper method addConcepts_progress.
/**
* récupération des concepts
* @param fileBean
* @return
*/
public boolean addConcepts_progress(FileBean_progress fileBean) {
String uri;
Value value;
boolean isTopConcept = true;
Concept concept = new Concept();
ConceptHelper conceptHelper = new ConceptHelper();
TermHelper termHelper = new TermHelper();
NoteHelper noteHelper = new NoteHelper();
Term term = new Term();
AlignmentHelper alignmentHelper = new AlignmentHelper();
// ajout des termes et traductions
NodeTerm nodeTerm = new NodeTerm();
ArrayList<NodeTermTraduction> nodeTermTraductionList = new ArrayList<>();
// Enregister les synonymes et traductions
ArrayList<NodeEM> nodeEMList = new ArrayList<>();
// ajout des notes
ArrayList<NodeNote> nodeNotes = new ArrayList<>();
// ajout des alignements
ArrayList<NodeAlignment> nodeAlignments = new ArrayList<>();
// ajout des relations
ArrayList<HierarchicalRelationship> hierarchicalRelationships = new ArrayList<>();
// ajout des relations Groups
ArrayList<String> idGrps = new ArrayList<>();
if (dataSet.getSKOSConcepts().isEmpty())
return false;
int i = 0;
// i can get all the concepts from this scheme
for (SKOSConcept conceptsInScheme : dataSet.getSKOSConcepts()) {
// URI du Concept récupération automatique de l'identifiant
String id = getIdFromUri(conceptsInScheme.getURI().toString());
if (id == null || id.isEmpty()) {
message = message + "identifiant null pour l'URI : " + conceptsInScheme.getURI().toString();
continue;
} else {
concept.setIdConcept(id);
}
concept.setIdThesaurus(thesaurus.getId_thesaurus());
// concept.setIdGroup(idGroup.get(0));
concept.setNotation("");
concept.setStatus("");
concept.setIdArk(conceptsInScheme.getURI().toString());
for (SKOSAnnotation anno : conceptsInScheme.getSKOSAnnotations(dataSet)) {
// c'est une valeur
if (anno.isAnnotationByConstant()) {
// balises SKOS
if (anno.getURI().getFragment() != null) {
// get altLabels
if (anno.getURI().getFragment().equalsIgnoreCase("prefLabel")) {
value = getValue(anno);
NodeTermTraduction nodeTermTraduction = new NodeTermTraduction();
nodeTermTraduction.setLexicalValue(value.getValue());
nodeTermTraduction.setLang(value.getLang());
nodeTermTraductionList.add(nodeTermTraduction);
}
if (anno.getURI().getFragment().equalsIgnoreCase("altLabel")) {
value = getValue(anno);
NodeEM nodeEM = new NodeEM();
nodeEM.setLexical_value(value.getValue());
nodeEM.setLang(value.getLang());
nodeEM.setSource("" + idUser);
nodeEM.setStatus("USE");
nodeEM.setHiden(false);
nodeEMList.add(nodeEM);
}
if (anno.getURI().getFragment().equalsIgnoreCase("hiddenLabel")) {
value = getValue(anno);
NodeEM nodeEM = new NodeEM();
nodeEM.setLexical_value(value.getValue());
nodeEM.setLang(value.getLang());
nodeEM.setSource("" + idUser);
nodeEM.setStatus("Hidden");
nodeEM.setHiden(true);
nodeEMList.add(nodeEM);
}
// get notes
if (anno.getURI().getFragment().equalsIgnoreCase("definition")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("definition");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("note")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("note");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("scopeNote")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("scopeNote");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("editorialNote")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("editorialNote");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("historyNote")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("historyNote");
nodeNotes.add(nodeNote);
}
} else // balises DublinCore dc
{
uri = getIdFromUri(anno.getURI().toString());
if (uri.equalsIgnoreCase("created") || uri.equalsIgnoreCase("date")) {
concept = addDates(concept, formatDate, getValue(anno).getValue(), "created");
}
if (uri.equalsIgnoreCase("modified")) {
concept = addDates(concept, formatDate, getValue(anno).getValue(), "modified");
}
// get the identifier from dcterms ceci peut être aussi l'identifiant ark
if (uri.equalsIgnoreCase("identifier")) {
concept.setIdArk(getValue(anno).getValue());
}
}
} else // c'est une relation
{
// balises SKOS
if (anno.getURI().getFragment() != null) {
// get relations hiérarchiques
if (anno.getURI().getFragment().equalsIgnoreCase("narrower")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
HierarchicalRelationship hierarchicalRelationship = new HierarchicalRelationship();
hierarchicalRelationship.setIdConcept1(concept.getIdConcept());
hierarchicalRelationship.setIdConcept2(uri);
hierarchicalRelationship.setIdThesaurus(thesaurus.getId_thesaurus());
hierarchicalRelationship.setRole("NT");
hierarchicalRelationships.add(hierarchicalRelationship);
}
if (anno.getURI().getFragment().equalsIgnoreCase("broader")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
HierarchicalRelationship hierarchicalRelationship = new HierarchicalRelationship();
hierarchicalRelationship.setIdConcept1(concept.getIdConcept());
hierarchicalRelationship.setIdConcept2(uri);
hierarchicalRelationship.setIdThesaurus(thesaurus.getId_thesaurus());
hierarchicalRelationship.setRole("BT");
hierarchicalRelationships.add(hierarchicalRelationship);
isTopConcept = false;
}
if (anno.getURI().getFragment().equalsIgnoreCase("related")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
HierarchicalRelationship hierarchicalRelationship = new HierarchicalRelationship();
hierarchicalRelationship.setIdConcept1(concept.getIdConcept());
hierarchicalRelationship.setIdConcept2(uri);
hierarchicalRelationship.setIdThesaurus(thesaurus.getId_thesaurus());
hierarchicalRelationship.setRole("RT");
hierarchicalRelationships.add(hierarchicalRelationship);
}
// get scheme
if (anno.getURI().getFragment().equalsIgnoreCase("inScheme")) {
// uri = anno.getAnnotationValue().getURI().toString();
}
// get Groups
if (anno.getURI().getFragment().equalsIgnoreCase("memberOf")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
idGrps.add(uri);
addIdGroupToVector(uri);
}
// get Alignements
if (anno.getURI().getFragment().equalsIgnoreCase("closeMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(2);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("exactMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(1);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("broadMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(3);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("narrowMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(5);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("relatedMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(4);
nodeAlignments.add(nodeAlignment);
}
}
}
}
// ajout des termes et traductions
nodeTerm.setNodeTermTraduction(nodeTermTraductionList);
nodeTerm.setIdTerm(concept.getIdConcept());
nodeTerm.setIdConcept(concept.getIdConcept());
nodeTerm.setIdThesaurus(thesaurus.getId_thesaurus());
nodeTerm.setSource("");
nodeTerm.setStatus("");
nodeTerm.setCreated(concept.getCreated());
nodeTerm.setModified(concept.getModified());
// conctrole si le concept est vide aucun prefLable, on l'ignore
if (!isConceptEmpty(nodeTermTraductionList)) {
if (idGrps.isEmpty()) {
concept.setTopConcept(isTopConcept);
concept.setIdGroup(idGroupDefault);
conceptHelper.insertConceptInTable(ds, concept, idUser);
} else {
for (String idGrp : idGrps) {
concept.setTopConcept(isTopConcept);
concept.setIdGroup(idGrp);
conceptHelper.insertConceptInTable(ds, concept, idUser);
}
}
termHelper.insertTerm(ds, nodeTerm, idUser);
try {
Connection conn = ds.getConnection();
conn.setAutoCommit(false);
for (HierarchicalRelationship hierarchicalRelationship : hierarchicalRelationships) {
conceptHelper.addLinkHierarchicalRelation(conn, hierarchicalRelationship, idUser);
}
conn.commit();
conn.close();
} catch (SQLException ex) {
}
for (NodeNote nodeNoteList1 : nodeNotes) {
if (nodeNoteList1.getNotetypecode().contains("scopeNote")) {
noteHelper.addConceptNote(ds, concept.getIdConcept(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("historyNote")) {
noteHelper.addConceptNote(ds, concept.getIdConcept(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("definition")) {
noteHelper.addTermNote(ds, nodeTerm.getIdTerm(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("editorialNote")) {
noteHelper.addTermNote(ds, nodeTerm.getIdTerm(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("note")) {
noteHelper.addConceptNote(ds, nodeTerm.getIdTerm(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
}
for (NodeAlignment nodeAlignment : nodeAlignments) {
alignmentHelper.addNewAlignment(ds, nodeAlignment);
}
for (NodeEM nodeEMList1 : nodeEMList) {
term.setId_concept(concept.getIdConcept());
term.setId_term(nodeTerm.getIdTerm());
term.setLexical_value(nodeEMList1.getLexical_value());
term.setLang(nodeEMList1.getLang());
term.setId_thesaurus(thesaurus.getId_thesaurus());
term.setSource(nodeEMList1.getSource());
term.setStatus(nodeEMList1.getStatus());
termHelper.addNonPreferredTerm(ds, term, idUser);
}
}
// initialisation des variables
concept = new Concept();
term = new Term();
nodeTerm = new NodeTerm();
nodeTermTraductionList = new ArrayList<>();
nodeEMList = new ArrayList<>();
nodeNotes = new ArrayList<>();
nodeAlignments = new ArrayList<>();
hierarchicalRelationships = new ArrayList<>();
idGrps = new ArrayList<>();
isTopConcept = true;
if (conceptsCount < 100) {
fileBean.setProgress(i * (100 / conceptsCount));
} else {
fileBean.setProgress(i / (conceptsCount / 100));
}
try {
Thread.sleep(200);
if (fileBean.getProgress() == null) {
fileBean.setProgress(100);
return false;
}
} catch (InterruptedException e) {
}
i++;
}
for (String idTopConcept1 : idTopConcept) {
if (!conceptHelper.setTopConcept(ds, idTopConcept1, thesaurus.getId_thesaurus())) {
// erreur;
}
}
addGroups();
addLangsToThesaurus(ds, thesaurus.getId_thesaurus());
message = message + "\n nombre de Concepts importés : " + conceptsCount;
fileBean.setProgress(100);
// System.out.println("Finished Function");
return true;
}
use of org.semanticweb.skos.SKOSConcept in project opentheso by miledrousset.
the class ImportSkosHelper method addConcepts_progress.
/**
* récupération des concepts
* @param fileBean
* @return
*/
public boolean addConcepts_progress(FileBean fileBean) {
String uri;
Value value;
boolean isTopConcept = true;
Concept concept = new Concept();
ConceptHelper conceptHelper = new ConceptHelper();
TermHelper termHelper = new TermHelper();
NoteHelper noteHelper = new NoteHelper();
Term term = new Term();
AlignmentHelper alignmentHelper = new AlignmentHelper();
// ajout des termes et traductions
NodeTerm nodeTerm = new NodeTerm();
ArrayList<NodeTermTraduction> nodeTermTraductionList = new ArrayList<>();
// Enregister les synonymes et traductions
ArrayList<NodeEM> nodeEMList = new ArrayList<>();
// ajout des notes
ArrayList<NodeNote> nodeNotes = new ArrayList<>();
// ajout des alignements
ArrayList<NodeAlignment> nodeAlignments = new ArrayList<>();
// ajout des relations
ArrayList<HierarchicalRelationship> hierarchicalRelationships = new ArrayList<>();
// ajout des relations Groups
ArrayList<String> idGrps = new ArrayList<>();
if (dataSet.getSKOSConcepts().isEmpty())
return false;
int i = 0;
// i can get all the concepts from this scheme
for (SKOSConcept conceptsInScheme : dataSet.getSKOSConcepts()) {
// URI du Concept récupération automatique de l'identifiant
String id = getIdFromUri(conceptsInScheme.getURI().toString());
if (id == null || id.isEmpty()) {
message = message + "identifiant null pour l'URI : " + conceptsInScheme.getURI().toString();
continue;
} else {
concept.setIdConcept(id);
}
concept.setIdThesaurus(thesaurus.getId_thesaurus());
// concept.setIdGroup(idGroup.get(0));
concept.setNotation("");
concept.setStatus("");
concept.setIdArk(conceptsInScheme.getURI().toString());
for (SKOSAnnotation anno : conceptsInScheme.getSKOSAnnotations(dataSet)) {
// c'est une valeur
if (anno.isAnnotationByConstant()) {
// balises SKOS
if (anno.getURI().getFragment() != null) {
// get altLabels
if (anno.getURI().getFragment().equalsIgnoreCase("prefLabel")) {
value = getValue(anno);
NodeTermTraduction nodeTermTraduction = new NodeTermTraduction();
nodeTermTraduction.setLexicalValue(value.getValue());
nodeTermTraduction.setLang(value.getLang());
nodeTermTraductionList.add(nodeTermTraduction);
}
if (anno.getURI().getFragment().equalsIgnoreCase("altLabel")) {
value = getValue(anno);
NodeEM nodeEM = new NodeEM();
nodeEM.setLexical_value(value.getValue());
nodeEM.setLang(value.getLang());
nodeEM.setSource("" + idUser);
nodeEM.setStatus("USE");
nodeEM.setHiden(false);
nodeEMList.add(nodeEM);
}
if (anno.getURI().getFragment().equalsIgnoreCase("hiddenLabel")) {
value = getValue(anno);
NodeEM nodeEM = new NodeEM();
nodeEM.setLexical_value(value.getValue());
nodeEM.setLang(value.getLang());
nodeEM.setSource("" + idUser);
nodeEM.setStatus("Hidden");
nodeEM.setHiden(true);
nodeEMList.add(nodeEM);
}
// get notes
if (anno.getURI().getFragment().equalsIgnoreCase("definition")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("definition");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("note")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("note");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("scopeNote")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("scopeNote");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("editorialNote")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("editorialNote");
nodeNotes.add(nodeNote);
}
if (anno.getURI().getFragment().equalsIgnoreCase("historyNote")) {
value = getValue(anno);
NodeNote nodeNote = new NodeNote();
nodeNote.setLang(value.getLang());
nodeNote.setLexicalvalue(value.getValue());
nodeNote.setNotetypecode("historyNote");
nodeNotes.add(nodeNote);
}
} else // balises DublinCore dc
{
uri = getIdFromUri(anno.getURI().toString());
if (uri.equalsIgnoreCase("created") || uri.equalsIgnoreCase("date")) {
concept = addDates(concept, formatDate, getValue(anno).getValue(), "created");
}
if (uri.equalsIgnoreCase("modified")) {
concept = addDates(concept, formatDate, getValue(anno).getValue(), "modified");
}
// get the identifier from dcterms ceci peut être aussi l'identifiant ark
if (uri.equalsIgnoreCase("identifier")) {
concept.setIdArk(getValue(anno).getValue());
}
}
} else // c'est une relation
{
// balises SKOS
if (anno.getURI().getFragment() != null) {
// get relations hiérarchiques
if (anno.getURI().getFragment().equalsIgnoreCase("narrower")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
HierarchicalRelationship hierarchicalRelationship = new HierarchicalRelationship();
hierarchicalRelationship.setIdConcept1(concept.getIdConcept());
hierarchicalRelationship.setIdConcept2(uri);
hierarchicalRelationship.setIdThesaurus(thesaurus.getId_thesaurus());
hierarchicalRelationship.setRole("NT");
hierarchicalRelationships.add(hierarchicalRelationship);
}
if (anno.getURI().getFragment().equalsIgnoreCase("broader")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
HierarchicalRelationship hierarchicalRelationship = new HierarchicalRelationship();
hierarchicalRelationship.setIdConcept1(concept.getIdConcept());
hierarchicalRelationship.setIdConcept2(uri);
hierarchicalRelationship.setIdThesaurus(thesaurus.getId_thesaurus());
hierarchicalRelationship.setRole("BT");
hierarchicalRelationships.add(hierarchicalRelationship);
isTopConcept = false;
}
if (anno.getURI().getFragment().equalsIgnoreCase("related")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
HierarchicalRelationship hierarchicalRelationship = new HierarchicalRelationship();
hierarchicalRelationship.setIdConcept1(concept.getIdConcept());
hierarchicalRelationship.setIdConcept2(uri);
hierarchicalRelationship.setIdThesaurus(thesaurus.getId_thesaurus());
hierarchicalRelationship.setRole("RT");
hierarchicalRelationships.add(hierarchicalRelationship);
}
// get scheme
if (anno.getURI().getFragment().equalsIgnoreCase("inScheme")) {
// uri = anno.getAnnotationValue().getURI().toString();
}
// get Groups
if (anno.getURI().getFragment().equalsIgnoreCase("memberOf")) {
uri = getIdFromUri(anno.getAnnotationValue().getURI().toString());
idGrps.add(uri);
addIdGroupToVector(uri);
}
// get Alignements
if (anno.getURI().getFragment().equalsIgnoreCase("closeMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(2);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("exactMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(1);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("broadMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(3);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("narrowMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(5);
nodeAlignments.add(nodeAlignment);
}
if (anno.getURI().getFragment().equalsIgnoreCase("relatedMatch")) {
uri = anno.getAnnotationValue().getURI().toString();
NodeAlignment nodeAlignment = new NodeAlignment();
nodeAlignment.setId_author(idUser);
nodeAlignment.setConcept_target("");
nodeAlignment.setThesaurus_target("");
nodeAlignment.setUri_target(uri);
nodeAlignment.setInternal_id_concept(concept.getIdConcept());
nodeAlignment.setInternal_id_thesaurus(thesaurus.getId_thesaurus());
nodeAlignment.setAlignement_id_type(4);
nodeAlignments.add(nodeAlignment);
}
}
}
}
// ajout des termes et traductions
nodeTerm.setNodeTermTraduction(nodeTermTraductionList);
nodeTerm.setIdTerm(concept.getIdConcept());
nodeTerm.setIdConcept(concept.getIdConcept());
nodeTerm.setIdThesaurus(thesaurus.getId_thesaurus());
nodeTerm.setSource("");
nodeTerm.setStatus("");
nodeTerm.setCreated(concept.getCreated());
nodeTerm.setModified(concept.getModified());
// conctrole si le concept est vide aucun prefLable, on l'ignore
if (!isConceptEmpty(nodeTermTraductionList)) {
if (idGrps.isEmpty()) {
concept.setTopConcept(isTopConcept);
concept.setIdGroup(idGroupDefault);
conceptHelper.insertConceptInTable(ds, concept, idUser);
} else {
for (String idGrp : idGrps) {
concept.setTopConcept(isTopConcept);
concept.setIdGroup(idGrp);
conceptHelper.insertConceptInTable(ds, concept, idUser);
}
}
termHelper.insertTerm(ds, nodeTerm, idUser);
try {
Connection conn = ds.getConnection();
conn.setAutoCommit(false);
for (HierarchicalRelationship hierarchicalRelationship : hierarchicalRelationships) {
conceptHelper.addLinkHierarchicalRelation(conn, hierarchicalRelationship, idUser);
}
conn.commit();
conn.close();
} catch (SQLException ex) {
}
for (NodeNote nodeNoteList1 : nodeNotes) {
if (nodeNoteList1.getNotetypecode().contains("scopeNote")) {
noteHelper.addConceptNote(ds, concept.getIdConcept(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("historyNote")) {
noteHelper.addConceptNote(ds, concept.getIdConcept(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("definition")) {
noteHelper.addTermNote(ds, nodeTerm.getIdTerm(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("editorialNote")) {
noteHelper.addTermNote(ds, nodeTerm.getIdTerm(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
if (nodeNoteList1.getNotetypecode().contains("note")) {
noteHelper.addConceptNote(ds, nodeTerm.getIdTerm(), nodeNoteList1.getLang(), thesaurus.getId_thesaurus(), nodeNoteList1.getLexicalvalue(), nodeNoteList1.getNotetypecode(), idUser);
}
}
for (NodeAlignment nodeAlignment : nodeAlignments) {
alignmentHelper.addNewAlignment(ds, nodeAlignment);
}
for (NodeEM nodeEMList1 : nodeEMList) {
term.setId_concept(concept.getIdConcept());
term.setId_term(nodeTerm.getIdTerm());
term.setLexical_value(nodeEMList1.getLexical_value());
term.setLang(nodeEMList1.getLang());
term.setId_thesaurus(thesaurus.getId_thesaurus());
term.setSource(nodeEMList1.getSource());
term.setStatus(nodeEMList1.getStatus());
termHelper.addNonPreferredTerm(ds, term, idUser);
}
}
// initialisation des variables
concept = new Concept();
term = new Term();
nodeTerm = new NodeTerm();
nodeTermTraductionList = new ArrayList<>();
nodeEMList = new ArrayList<>();
nodeNotes = new ArrayList<>();
nodeAlignments = new ArrayList<>();
hierarchicalRelationships = new ArrayList<>();
idGrps = new ArrayList<>();
isTopConcept = true;
if (conceptsCount < 100) {
fileBean.setProgress(i * (100 / conceptsCount));
} else {
fileBean.setProgress(i / (conceptsCount / 100));
}
try {
Thread.sleep(200);
if (fileBean.getProgress() == null) {
fileBean.setProgress(100);
return false;
}
} catch (InterruptedException e) {
}
i++;
}
for (String idTopConcept1 : idTopConcept) {
if (!conceptHelper.setTopConcept(ds, idTopConcept1, thesaurus.getId_thesaurus())) {
// erreur;
}
}
addGroups();
addLangsToThesaurus(ds, thesaurus.getId_thesaurus());
message = message + "\n nombre de Concepts importés : " + conceptsCount;
fileBean.setProgress(100);
// System.out.println("Finished Function");
return true;
}
Aggregations