⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thesaurusmanagersesame.java

📁 联合国农粮署牵头开发的geonetwork源代码最新版
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

		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 + -