📄 thesaurusmanagersesame.java
字号:
QueryResultsTable resultsTable = performRequest(query, repositoryTable
.get(thesaurusRepository));
printResultsTable(resultsTable);
Element elDescKeys = resultsTableToXmlKeywords(resultsTable,
thesaurusRepository);
Element elThesaName = new Element("thesaName");
Element elResTitle = new Element("resTitle");
elResTitle.addContent(thesaurusRepository);
elThesaName.addContent(elResTitle);
elDescKeys.addContent(elThesaName);
return elDescKeys;
}
/**
*
* @param thesaurusRepository
* @param word
* @return
* @throws IOException
* @throws MalformedQueryException
* @throws QueryEvaluationException
* @throws AccessDeniedException
*/
public Element getPrefLabelBeginingWith(String thesaurusRepository,
String word) throws IOException, MalformedQueryException,
QueryEvaluationException, AccessDeniedException {
String query = "SELECT prefLab, note "
+ " from {} rdf:type {skos:Concept}; "
+ " skos:prefLabel {prefLab} [skos:scopeNote {note}] "
+ " where lang(prefLab) like \"fr\" and prefLab like \""
+ word
+ "*\" "
+ " USING NAMESPACE skos=<http://www.w3.org/2004/02/skos/core#>";
QueryResultsTable resultsTable = performRequest(query, repositoryTable
.get(thesaurusRepository));
printResultsTable(resultsTable);
Element elDescKeys = resultsTableToXmlKeywords(resultsTable,
thesaurusRepository);
Element elThesaName = new Element("thesaName");
Element elResTitle = new Element("resTitle");
elResTitle.addContent(thesaurusRepository);
elThesaName.addContent(elResTitle);
elDescKeys.addContent(elThesaName);
return elDescKeys;
}
/**
*
* @param thesaurusRepository
* @param word
* @return
* @throws IOException
* @throws MalformedQueryException
* @throws QueryEvaluationException
* @throws AccessDeniedException
*/
public Element getPrefLabelIncluding(String thesaurusRepository, String word)
throws IOException, MalformedQueryException,
QueryEvaluationException, AccessDeniedException {
String query = "SELECT prefLab, note "
+ " from {} rdf:type {skos:Concept}; "
+ " skos:prefLabel {prefLab} [skos:scopeNote {note}] "
+ " where lang(prefLab) like \"fr\" and prefLab like \"*"
+ word
+ "*\" "
+ " USING NAMESPACE skos=<http://www.w3.org/2004/02/skos/core#>";
QueryResultsTable resultsTable = performRequest(query, repositoryTable
.get(thesaurusRepository));
printResultsTable(resultsTable);
Element elDescKeys = resultsTableToXmlKeywords(resultsTable,
thesaurusRepository);
Element elThesaName = new Element("thesaName");
Element elResTitle = new Element("resTitle");
elResTitle.addContent(thesaurusRepository);
elThesaName.addContent(elResTitle);
elDescKeys.addContent(elThesaName);
return elDescKeys;
}
/**
*
* @param thesaurusRepository
* @param word
* @return
* @throws IOException
* @throws MalformedQueryException
* @throws QueryEvaluationException
* @throws AccessDeniedException
*/
public Element getPrefLabel(String thesaurusRepository, String word)
throws IOException, MalformedQueryException,
QueryEvaluationException, AccessDeniedException {
String query = "SELECT prefLab, note "
+ " from {} rdf:type {skos:Concept}; "
+ " skos:prefLabel {prefLab} [skos:scopeNote {note}] "
+ " where lang(prefLab) like \"fr\" and prefLab like \""
+ word
+ "\" "
+ " USING NAMESPACE skos=<http://www.w3.org/2004/02/skos/core#>";
QueryResultsTable resultsTable = performRequest(query, repositoryTable
.get(thesaurusRepository));
printResultsTable(resultsTable);
Element elDescKeys = resultsTableToXmlKeywords(resultsTable,
thesaurusRepository);
Element elThesaName = new Element("thesaName");
Element elResTitle = new Element("resTitle");
elResTitle.addContent(thesaurusRepository);
elThesaName.addContent(elResTitle);
elDescKeys.addContent(elThesaName);
return elDescKeys;
}
/**
*
* @param resultsTable
*/
private void printResultsTable(QueryResultsTable resultsTable) {
int rowCount = resultsTable.getRowCount();
int columnCount = resultsTable.getColumnCount();
for (int row = 0; row < rowCount; row++) {
for (int column = 0; column < columnCount; column++) {
Value value = resultsTable.getValue(row, column);
if (value != null) {
System.out.print(value.toString());
} else {
System.out.print("null");
}
System.out.print("\t");
}
System.out.println();
}
System.out.println("Fin");
}
/**
*
* @param resultsTable
* @param thesaurusRepository
* @return
*/
private Element resultsTableToXmlKeywords(QueryResultsTable resultsTable,
String thesaurusRepository) {
Element elDescKeys = new Element("descKeys");
int rowCount = resultsTable.getRowCount();
for (int row = 0; row < rowCount; row++) {
Element elKeyword = new Element("keyword");
Value value = resultsTable.getValue(row, 0);
String sValue = "";
if (value != null) {
sValue = value.toString();
}
Element elValue = new Element("value");
elValue.addContent(sValue);
Value definition = resultsTable.getValue(row, 1);
String sDefinition = "";
if (definition != null) {
sDefinition = definition.toString();
}
Element elDefiniton = new Element("definiton");
elDefiniton.addContent(sDefinition);
elKeyword.addContent(elValue);
elKeyword.addContent(elDefiniton);
elDescKeys.addContent(elKeyword);
}
Element elNbResultsTot = new Element("nbresultstot");
elNbResultsTot.addContent(Integer.toString(rowCount));
elDescKeys.addContent(elNbResultsTot);
return elDescKeys;
}
/**
* @param name
* @return
*/
public boolean existsThesaurus(String name) {
return (thesauriTable.get(name) != null);
}
/**
* TODO ETAPE 3 VOIR SI UTILE par rapport aux updateElement, addElement,
* deleteElement ?
*
* @param name
* @return
*/
public boolean updateThesaurus(String thesaurusName, Hashtable htChanges) {
return false;
}
/**
* TODO TEST ETAPE 3
*
* @param args
* @throws GraphException
* @throws Exception
*/
public boolean addElement(String thesaurusName, String prefLab,
String altLab, String note) throws GraphException {
LocalRepository lr = repositoryTable.get(thesaurusName);
// Graph myGraph = myLocalRepository.getGraph();
Graph myGraph = new org.openrdf.model.impl.GraphImpl();
ValueFactory myFactory = myGraph.getValueFactory();
// definition des namesspaces
String namespaceSkos = "http://www.w3.org/2004/02/skos/core#";
String namespaceGml = "http://www.opengis.net/gml#";
// String namespace = "http://geonetwork-opensource.org/regions#";
String namespace = "http://geosource.org/keyword#";
// creation du sujet
URI mySubject = myFactory.createURI(namespace, Long
.toString((new Date()).getTime()));
// creation des predicats
URI skosClass = myFactory.createURI(namespaceSkos, "Concept");
URI rdfType = myFactory.createURI(org.openrdf.vocabulary.RDF.TYPE);
URI predicatePrefLabel = myFactory.createURI(namespaceSkos, "prefLabel");
URI predicateScopeNote = myFactory.createURI(namespaceSkos, "scopeNote");
// pour le sous graphe de l'enveloppe gml
URI predicateBoundedBy = myFactory.createURI(namespaceGml, "BoundedBy");
URI predicateEnvelope = myFactory.createURI(namespaceGml, "Envelope");
URI predicateSrsName = myFactory.createURI(namespaceGml, "srsName");
URI srsNameURI = myFactory.createURI("http://www.opengis.net/gml/srs/epsg.xml#epsg:4326");
BNode gmlNode = myFactory.createBNode();
URI predicateLowerCorner = myFactory.createURI(namespaceGml, "lowerCorner");
URI predicateUpperCorner = myFactory.createURI(namespaceGml, "upperCorner");
// creation des objets
Literal myObject1 = myFactory.createLiteral(prefLab, "fr");
Literal myObject2 = myFactory.createLiteral(note);
Literal lowerCorner = myFactory.createLiteral("12.23 12.56");
Literal upperCorner = myFactory.createLiteral("15.12 16.0");
//preparation du graph
mySubject.addProperty(rdfType, skosClass);
myGraph.add(mySubject, predicatePrefLabel, myObject1);
myGraph.add(mySubject, predicateScopeNote, myObject2);
myGraph.add(mySubject, predicateBoundedBy, gmlNode);
//graph gml
gmlNode.addProperty(rdfType, predicateEnvelope);
myGraph.add(gmlNode, predicateLowerCorner, lowerCorner);
myGraph.add(gmlNode, predicateUpperCorner, upperCorner);
myGraph.add(gmlNode, predicateSrsName, srsNameURI);
try {
lr.addGraph(myGraph);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (AccessDeniedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
/**
* TODO ETAPE 3
*
* @param args
* @throws QueryEvaluationException
* @throws MalformedQueryException
* @throws AccessDeniedException
* @throws Exception
*/
public boolean updateElement(String thesaurusName, String prefLab,
String altLab, String note) throws MalformedQueryException,
QueryEvaluationException, AccessDeniedException {
// Recuperation du graph du thesaurus
LocalRepository lr = repositoryTable.get(thesaurusName);
Graph myGraph = lr.getGraph();
ValueFactory myFactory = myGraph.getValueFactory();
String namespaceSkos = "http://www.w3.org/2004/02/skos/core#";
// Recuperation du sujet (URI du mot cl
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -