You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2010/05/05 14:40:29 UTC
svn commit: r941267 [1/3] - in
/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts:
org.apache.clerezza.platform.concepts.core/
org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform...
Author: reto
Date: Wed May 5 12:40:28 2010
New Revision: 941267
URL: http://svn.apache.org/viewvc?rev=941267&view=rev
Log:
CLEREZZA-180: applied pach André, do not suggest creation of existing concepts
Added:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/concept-find-create.js
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/concept-provider-manipulation.js
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/jquery.rdfquery.core-1.0.js
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/selected-concepts.js
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/style/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/style/form.css
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.ontologies/src/main/resources/org/apache/clerezza/platform/concepts/ontologies/queryresult.rdf
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/pom.xml
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/ConceptManipulator.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/ConceptsFinder.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/GenericResourcePage.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/concept-find-create.js
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/concept-provider-manipulation.js
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/selected-concepts.js
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/style/form.css
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/concept-find-create.ssp
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/manage-concept-providers-page.ssp
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/selected-concepts.ssp
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/test/java/org/apache/clerezza/platform/concepts/core/ConceptsFinderTest.java
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/pom.xml?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/pom.xml (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/pom.xml Wed May 5 12:40:28 2010
@@ -67,5 +67,12 @@
<artifactId>org.apache.clerezza.triaxrs</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.clerezza</groupId>
+ <artifactId>org.apache.clerezza.web.fileserver</artifactId>
+ <version>0.9-incubating-SNAPSHOT</version>
+ <type>bundle</type>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
</project>
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/ConceptManipulator.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/ConceptManipulator.java?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/ConceptManipulator.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/ConceptManipulator.java Wed May 5 12:40:28 2010
@@ -96,11 +96,11 @@ public class ConceptManipulator {
.entity("A concept with the same label and language already exists!")
.build();
}
- String baseUri = platformConfig.getDefaultBaseUri().getUnicodeString();
- UriRef concept = new UriRef(baseUri + "concept/" +
- UriRefUtil.stripNonUriRefChars(prefLabel));
+
+ UriRef concept = getConceptUriRef(platformConfig, prefLabel);
contentGraph.add(new TripleImpl(concept, RDF.type,
SKOS.Concept));
+ String baseUri = platformConfig.getDefaultBaseUri().getUnicodeString();
contentGraph.add(new TripleImpl(concept, SKOS.inScheme,
new UriRef(baseUri + FREE_CONCEPT_SCHEME)));
contentGraph.add(new TripleImpl(concept, SKOS.prefLabel, preferredLabel));
@@ -111,6 +111,12 @@ public class ConceptManipulator {
return Response.status(Status.CREATED).entity(concept.getUnicodeString())
.build();
}
+
+ static UriRef getConceptUriRef(PlatformConfig platformConfig, String prefLabel) {
+ String baseUri = platformConfig.getDefaultBaseUri().getUnicodeString();
+ return new UriRef(baseUri + "concept/" +
+ UriRefUtil.stripNonUriRefChars(prefLabel));
+ }
}
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/ConceptsFinder.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/ConceptsFinder.java?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/ConceptsFinder.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/ConceptsFinder.java Wed May 5 12:40:28 2010
@@ -22,21 +22,21 @@ import java.net.URISyntaxException;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
+
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
+
+import org.apache.clerezza.platform.concepts.ontologies.QUERYRESULT;
import org.apache.clerezza.platform.config.PlatformConfig;
import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
import org.apache.clerezza.platform.typerendering.RenderletManager;
import org.apache.clerezza.platform.typerendering.scalaserverpages.ScalaServerPagesRenderlet;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
import org.apache.clerezza.rdf.core.BNode;
import org.apache.clerezza.rdf.core.Graph;
import org.apache.clerezza.rdf.core.Literal;
+import org.apache.clerezza.rdf.core.LiteralFactory;
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.NonLiteral;
import org.apache.clerezza.rdf.core.Resource;
@@ -50,6 +50,10 @@ import org.apache.clerezza.rdf.ontologie
import org.apache.clerezza.rdf.ontologies.RDFS;
import org.apache.clerezza.rdf.ontologies.SKOS;
import org.apache.clerezza.rdf.utils.GraphNode;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
import org.osgi.service.component.ComponentContext;
/**
@@ -63,9 +67,9 @@ import org.osgi.service.component.Compon
* relation with this concept, but from a provider of lower priority.
* Implicitly created {@link LocalConceptProvider} for free concepts has the
* lowest priority.
- *
+ *
* The URI path of this service is /concepts/find.
- *
+ *
* @author hasan
*/
@Component
@@ -84,7 +88,7 @@ public class ConceptsFinder {
private TcManager tcManager;
@Reference
- protected ContentGraphProvider cgProvider;
+ private ContentGraphProvider cgProvider;
@Reference
private PlatformConfig platformConfig;
@@ -114,9 +118,9 @@ public class ConceptsFinder {
* However, concepts from providers of lower priority are only considered if
* they are not staying in an OWL:sameAs relation with concepts from
* providers of higher priority.
- *
+ *
* @param searchTerm
- * The search term in form of a String.
+ * The search term in form of a String.
* @return
* A GraphNode containing the search results.
*/
@@ -149,28 +153,65 @@ public class ConceptsFinder {
if (!freeConceptProviderFound && freeConceptProvider != null) {
retrieveConcepts(freeConceptProvider, first, resultNode, searchTerm);
}
- resultNode.addProperty(RDF.type, SKOS.Collection);
+ addCreationOfNewFreeConceptSuggested(resultNode, searchTerm);
+ resultNode.addProperty(RDF.type, QUERYRESULT.QueryResult);
return resultNode;
}
- private void retrieveConcepts(ConceptProvider conceptProvider, boolean first,
- GraphNode resultNode, String searchTerm) {
+ /**
+ * Adds a boolean value that answers whether the UI shall suggest to create
+ * a new free concept. A new free concept may not be added if the has the
+ * same base uri and search term. Therefore the consumer shall be suggested
+ * not to propose creation.
+ *
+ * @param resultNode
+ * the result node to add the property to
+ * @param searchTerm
+ * the search term the data was searched for
+ */
+ private void addCreationOfNewFreeConceptSuggested(GraphNode resultNode,
+ String searchTerm) {
+ UriRef conceptUriRef = ConceptManipulator.getConceptUriRef(
+ platformConfig, searchTerm);
+ resultNode.addProperty(QUERYRESULT.creationOfNewFreeConceptSuggested,
+ LiteralFactory.getInstance().createTypedLiteral(
+ !cgProvider.getContentGraph().contains(
+ new TripleImpl(conceptUriRef, RDF.type,
+ SKOS.Concept))));
+ }
+
+ /**
+ * Retrieve concepts for the given search term.
+ *
+ * @param conceptProvider
+ * the provider delivers concepts
+ * @param first
+ * is this the first execution
+ * @param resultNode
+ * the node to attach the concepts to
+ * @param searchTerm
+ * the search term that the concepts have to match against
+ */
+ private void retrieveConcepts(ConceptProvider conceptProvider,
+ boolean first, GraphNode resultNode, String searchTerm) {
MGraph resultMGraph = (MGraph) resultNode.getGraph();
Graph graph = conceptProvider.retrieveConcepts(searchTerm);
Iterator<Triple> concepts = graph.filter(null, RDF.type, SKOS.Concept);
if (first) {
while (concepts.hasNext()) {
- resultNode.addProperty(SKOS.member, concepts.next().getSubject());
+ resultNode.addProperty(QUERYRESULT.concept, concepts.next()
+ .getSubject());
}
resultMGraph.addAll(graph);
} else {
while (concepts.hasNext()) {
NonLiteral concept = concepts.next().getSubject();
GraphNode conceptGraphNode = new GraphNode(concept, graph);
- Iterator<Resource> sameAsConcepts =
- conceptGraphNode.getObjects(OWL.sameAs);
- if (!(hasSameAs(resultMGraph, concept) || hasAnyConcept(resultMGraph, sameAsConcepts))) {
- resultNode.addProperty(SKOS.member, concept);
+ Iterator<Resource> sameAsConcepts = conceptGraphNode
+ .getObjects(OWL.sameAs);
+ if (!(hasSameAs(resultMGraph, concept) || hasAnyConcept(
+ resultMGraph, sameAsConcepts))) {
+ resultNode.addProperty(QUERYRESULT.concept, concept);
addConceptToResultMGraph(resultMGraph, conceptGraphNode);
}
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/GenericResourcePage.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/GenericResourcePage.java?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/GenericResourcePage.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/GenericResourcePage.java Wed May 5 12:40:28 2010
@@ -20,6 +20,7 @@ package org.apache.clerezza.platform.con
import java.net.URISyntaxException;
import java.net.URL;
+
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
@@ -27,16 +28,13 @@ import javax.ws.rs.WebApplicationExcepti
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriInfo;
-import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
-import org.apache.clerezza.platform.typerendering.scalaserverpages.ScalaServerPagesRenderlet;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
+import javax.ws.rs.core.Response.Status;
+
import org.apache.clerezza.platform.concepts.ontologies.CONCEPTS;
+import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
import org.apache.clerezza.platform.typerendering.RenderletManager;
+import org.apache.clerezza.platform.typerendering.scalaserverpages.ScalaServerPagesRenderlet;
import org.apache.clerezza.rdf.core.BNode;
import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
@@ -44,19 +42,25 @@ import org.apache.clerezza.rdf.ontologie
import org.apache.clerezza.rdf.ontologies.RDF;
import org.apache.clerezza.rdf.utils.GraphNode;
import org.apache.clerezza.rdf.utils.UnionMGraph;
+import org.apache.clerezza.utils.UriException;
+import org.apache.clerezza.web.fileserver.FileServer;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
import org.osgi.service.component.ComponentContext;
/**
* This JAX-RS resource can be used to show selected concepts of a resource.
* The URI path of this service is /concepts/generic-resource.
- *
+ *
* @author tio
*/
@Component
@Service(Object.class)
@Property(name = "javax.ws.rs", boolValue = true)
@Path("/concepts/generic-resource")
-public class GenericResourcePage {
+public class GenericResourcePage extends FileServer {
@Reference
protected ContentGraphProvider cgProvider;
@@ -67,7 +71,9 @@ public class GenericResourcePage {
protected void activate(ComponentContext context)
throws URISyntaxException {
-
+
+ configure(context.getBundleContext());
+
URL template = getClass().getResource("generic-resource-page.ssp");
renderletManager.registerRenderlet(ScalaServerPagesRenderlet.class.getName(),
new UriRef(template.toURI().toString()),
@@ -80,9 +86,9 @@ public class GenericResourcePage {
/**
* Retrieves a resource and its associated concepts to be rendered with a template
* registered for CONCEPTS.GenericResourcePage.
- *
+ *
* @param uri specifies the uri of a resource
- *
+ *
* @return GraphNode
*/
@GET
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/concept-find-create.js
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/concept-find-create.js?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/concept-find-create.js (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/concept-find-create.js Wed May 5 12:40:28 2010
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-function ConceptFinder(){};
-
-ConceptFinder.callback;
-
-ConceptFinder.setAddConceptCallback = function (callback) {
- this.callback = callback;
-}
-
-ConceptFinder.search = function () {
- $("#system-found-concepts").empty();
- var searchTerm = $(":text[name=\"search-term\"]").val();
- if (searchTerm.length > 0) {
- var options = new AjaxOptions("find-concepts", "finding concepts", function(data) {
- var concepts = data.concepts;
- ConceptFinder.addFoundConcepts(concepts);
- $("#add-button-label")
- .html("<div>Add '"+searchTerm
- +"' as new Free Concept</div>");
- $("#system-found-concepts-area").show();
- $("#user-defined-concept-area").show();
- });
- options.url = "/concepts/find";
- options.data = "searchTerm=" + encodeURIComponent(searchTerm);
- options.dataType = "json";
- $.ajax(options);
- }
- return false;
-}
-
-ConceptFinder.addFoundConcepts = function (concepts) {
- var selectedConceptsExists = false;
- if (typeof(SelectedConcepts) != "undefined") {
- selectedConceptsExists = true;
- }
- var added = false;
- for (var i = 0; i < concepts.length; i++) {
- if (!selectedConceptsExists || !SelectedConcepts.exists(concepts[i].uri)) {
- added = true;
- var div = $("<div/>").appendTo("#system-found-concepts");
- $("<div/>").text(concepts[i].prefLabel)
- .appendTo(div);
- $("<div/>").text(concepts[i].uri)
- .appendTo(div);
- $("<a/>").addClass("tx-icon tx-icon-plus")
- .attr({
- href: "#"
- })
- .text("Add")
- .click(function () {
- var searchTerm = $(this).prev().prev().text();
- var uri = $(this).prev().text();
- if (typeof(SelectedConcepts) != "undefined") {
- SelectedConcepts.addConcept(searchTerm, uri);
- }
- if (typeof(ConceptFinder.callback) == "function") {
- ConceptFinder.callback(searchTerm, uri);
- }
- $(this).parent().remove();
- })
- .appendTo(div);
- $("<br/>").appendTo(div);
- $("<br/>").appendTo(div);
- }
- }
- if (added) {
- $("#label-for-search-results").text("Concepts found:");
- } else {
- $("#label-for-search-results").text("No additional concepts found.");
- }
-}
-
-function ConceptManipulator(){};
-
-ConceptManipulator.callback;
-
-ConceptManipulator.setAddConceptCallback = function (callback) {
- this.callback = callback;
-}
-
-ConceptManipulator.addConcept = function () {
- var searchTerm = $(":text[name='search-term']").val();
- if (searchTerm.length > 0) {
- var options = new AjaxOptions("add-concepts", "adding concepts", function(uri) {
- $("#concept-description").val("");
- if (typeof(SelectedConcepts) != "undefined") {
- SelectedConcepts.addConcept(searchTerm, uri);
- }
- if (typeof(this.callback) == "function") {
- this.callback(searchTerm, uri);
- }
- });
- options.type = "POST";
- options.url = "/concepts/manipulator/add-concept";
- options.data = {"pref-label":searchTerm,
- lang:$(":input[name='lang']").val(),
- comment:$(":textarea[name='comment']").val()}
-
- $.ajax(options);
- }
- return false;
-}
-
-$(document).ready(function () {
- $("#go-button").click(function() {
- ConceptFinder.search();
- });
- $("#add-user-defined-concept").click(function() {
- ConceptManipulator.addConcept();
- });
- $("#system-found-concepts-area").hide();
- $("#user-defined-concept-area").hide();
-});
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/concept-provider-manipulation.js
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/concept-provider-manipulation.js?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/concept-provider-manipulation.js (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/concept-provider-manipulation.js Wed May 5 12:40:28 2010
@@ -1,213 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-function ConceptProviderGui(){};
-
-ConceptProviderGui.isModified = false;
-
-ConceptProviderGui.query = "PREFIX owl: <http://www.w3.org/2002/07/owl#> \n" +
- "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \n" +
- "PREFIX skos08: <http://www.w3.org/2008/05/skos#> \n" +
- "PREFIX skos04: <http://www.w3.org/2004/02/skos/core#> \n" +
- "CONSTRUCT { ?concept a skos08:Concept; skos08:prefLabel ?prefLabel; " +
- "rdfs:comment ?comment; owl:sameAs ?sameConcept . } \n" +
- "WHERE { ?concept a skos04:Concept; skos04:prefLabel ?prefLabel . \n" +
- "OPTIONAL { ?concept rdfs:comment ?comment . } \n" +
- "OPTIONAL { ?concept owl:sameAs ?sameConcept . } \n" +
- "FILTER (REGEX(STR(?prefLabel), '${searchTerm}', 'i'))}";
-
-ConceptProviderGui.initButtons = function() {
-
- ConceptProviderGui.updateButtonState();
-
- $("#deleteButton").click(function(event) {
- $("input:checked").each(function() {
- $(this).parent().parent().remove();
- });
- $(this).addClass("tx-inactive");
- ConceptProviderGui.isModified = true;
- });
-
- $("#addProvider").click(function(event) {
- ConceptProviderGui.addProvider($("#type").val(),
- $("#conceptScheme").val(),
- $("#sparqlEndPoint").val(),
- $("#defaultGraph").val(),
- $("#query").val());
- $("#conceptScheme").val("");
- $("#sparqlEndPoint").val("");
- $("#defaultGraph").val("");
- $("#query").val("");
- });
-
- $("#addButton").click(function(event) {
- if($(this).text() == "Save") {
- var options = new AjaxOptions("update-providers", "updating providers", function(obj) {
- });
- $("textarea[id!=query]").each(function() {
- $(this).removeAttr("disabled");
- });
- options.type = "POST";
- options.url = "update-concept-provider-list";
- options.data = $("#providers").serialize();
- $.ajax(options);
- }
- });
-}
-
-ConceptProviderGui.addProvider = function(rdfType, conceptScheme, sparqlEndPoint, defaultGraph, query) {
- var tr = $("<tr/>").attr("id", "");
- var td1 = $("<td/>");
- var div = $("<div/>").text("Provider:");
- var td2 = $("<td/>");
-
- var selection = $("<select/>").attr("name","types");
-
- $("#type > option:not(:selected)").each(function() {
- selection.append($(this).clone());
- });
- $("#type > option:selected").each(function() {
- var option = $(this).clone();
- option.attr("selected", "selected");
- selection.append(option);
- });
-
- td2.append(div);
- td2.append(selection);
-
- var inputText = $("<input/>").attr({
- "type":"text",
- "name":"conceptSchemes",
- "value": conceptScheme
- });
-
- div = $("<div/>").text("Concept Scheme:");
- td2.append(div);
- td2.append(inputText);
-
- inputText = $("<input/>").attr({
- "type":"text",
- "name":"sparqlEndPoints",
- "value": sparqlEndPoint
- });
-
- div = $("<div/>").text("SPARQL End Point");
- td2.append(div);
- td2.append(inputText);
-
- inputText = $("<input/>").attr({
- "type":"text",
- "name":"defaultGraphs",
- "value": defaultGraph
- });
-
- div = $("<div/>").text("Default Graph:");
- td2.append(div);
- td2.append(inputText)
- var inputCheckbox = $("<input/>").attr({
- "type":"checkbox",
- "value": rdfType
- });
-
- inputCheckbox.appendTo(td1);
-
- td1.appendTo(tr);
-
- var textArea = $("<textarea/>").attr({
- "rows":"8",
- "name":"queryTemplates"
- }).val(query);
- div = $("<div/>").text("Query Template:");
- td2.append(div);
- td2.append(textArea);
- td2.append($("<br/>"));
- td2.append($("<br/>"));
- td2.appendTo(tr);
- tr.insertBefore("#last");
- ConceptProviderGui.isModified = true;
-
- $("select[name=types] > option:selected").each(function() {
- ConceptProviderGui.updateDropDown($(this), "conceptSchemes");
- });
-}
-
-ConceptProviderGui.updateDropDown = function (obj, name) {
- if(obj.val().indexOf("Local") != -1) {
- obj.parent().parent().find("input[name!=" + name + "]").each(function() {
- $(this).prev().hide();
- $(this).hide();
- });
- obj.parent().parent().find("input[name=" + name + "]").each(function() {
- $(this).prev().show();
- $(this).show();
- });
- obj.parent().parent().find("textarea").each(function() {
- $(this).prev().hide();
- $(this).hide();
- });
- } else {
- obj.parent().parent().find("input[name!=" + name + "]").each(function() {
- $(this).prev().show();
- $(this).show();
- });
- obj.parent().parent().find("input[name=" + name + "]").each(function() {
- $(this).prev().hide();
- $(this).hide();
- });
- obj.parent().parent().find("textarea").each(function() {
- $(this).prev().show();
- $(this).show();
- });
- }
-}
-
-ConceptProviderGui.updateButtonState = function() {
- var counter = $("input:checked").length;
- if(counter == 0) {
- $("#deleteButton").addClass("tx-inactive");
- } else {
- $("#deleteButton").removeClass("tx-inactive");
- }
-}
-
-$(document).ready(function () {
-
- $("select[name=types]").live("change", function() {
- $("select[name=types] > option:selected").each(function(){
- ConceptProviderGui.updateDropDown($(this), "conceptSchemes");
- });
- });
- $("select[name=types] > option:selected").each(function() {
- ConceptProviderGui.updateDropDown($(this), "conceptSchemes");
- });
- $("#type").live("change", function() {
- $("#type > option:selected").each(function(){
- ConceptProviderGui.updateDropDown($(this), "conceptScheme");
- $("#query").val(ConceptProviderGui.query);
- });
- });
- $("#type > option:selected").each(function() {
- ConceptProviderGui.updateDropDown($(this), "conceptScheme");
- $("#query").val(ConceptProviderGui.query);
- });
- $("input:checkbox").live("change",function() {
- ConceptProviderGui.updateButtonState();
- });
-
- ConceptProviderGui.initButtons();
-});
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/selected-concepts.js
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/selected-concepts.js?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/selected-concepts.js (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/scripts/selected-concepts.js Wed May 5 12:40:28 2010
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-function SelectedConcepts(){};
-
-SelectedConcepts.exists = function (concept) {
- var exists = false;
- $("input[name='concepts']").each( function () {
- if ($(this).val() == concept) {
- exists = true;
- }
- });
- return exists;
-}
-
-SelectedConcepts.addConcept = function (prefLabel, uri) {
- var div = $("<div/>");
- $("<div/>").text("PrefLabel: " + prefLabel).appendTo(div);
- $("<div/>").text("Uri: " + uri).appendTo(div);
- $("<input/>").attr({
- "type": "hidden",
- "name": "concepts"
- }).val(uri).appendTo(div);
- $("<a/>").attr("href", "#").addClass("tx-icon tx-icon-delete").text("Add")
- .appendTo(div);
- $("<br />").appendTo(div);
- $("<br />").appendTo(div);
- $("#selected-concepts").append(div);
-}
-
-$(document).ready(function () {
- $(".tx-icon-delete").click(function() {
- $(this).parent().remove();
- });
-});
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/style/form.css
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/style/form.css?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/style/form.css (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/META-INF/static-web/concepts/style/form.css Wed May 5 12:40:28 2010
@@ -1,3 +0,0 @@
-input, select, textarea {
- width: 32em;
-}
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/concept-find-create.ssp
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/concept-find-create.ssp?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/concept-find-create.ssp (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/concept-find-create.ssp Wed May 5 12:40:28 2010
@@ -1,5 +1,14 @@
resultDocModifier.addScriptReference("/scripts/ajax-options.js");
-resultDocModifier.addScriptReference("/static/concepts/scripts/concept-find-create.js");
+
+resultDocModifier.addScriptReference("/concepts/generic-resource/scripts/concept-find-create.js");
+resultDocModifier.addScriptReference("/concepts/generic-resource/scripts/jquery.rdfquery.core-1.0.js");
+
+resultDocModifier.addScriptReference("/scripts/alert-message.js");
+resultDocModifier.addScriptReference("/yui/2/yahoo-dom-event/yahoo-dom-event.js");
+resultDocModifier.addScriptReference("/yui/2/element/element-min.js");
+resultDocModifier.addScriptReference("/yui/2/container/container-min.js");
+resultDocModifier.addStyleSheet("/yui/2/container/assets/container-core.css");
+
<div>Add Concepts</div>
<form onsubmit="return ConceptFinder.search()" id="search-form">
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/manage-concept-providers-page.ssp
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/manage-concept-providers-page.ssp?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/manage-concept-providers-page.ssp (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/manage-concept-providers-page.ssp Wed May 5 12:40:28 2010
@@ -43,7 +43,7 @@ resultDocModifier.addScriptReference("/j
resultDocModifier.addScriptReference("/jquery/jquery.ajaxQueue.js");
resultDocModifier.addScriptReference("/jquery/jquery.autocomplete.min.js");
resultDocModifier.addScriptReference("/scripts/ajax-options.js");
-resultDocModifier.addScriptReference("/static/concepts/scripts/concept-provider-manipulation.js");
+resultDocModifier.addScriptReference("/concepts/generic-resource/scripts/e/scripts/concept-provider-manipulation.js");
resultDocModifier.setTitle("Resource Tagging");
resultDocModifier.addNodes2Elem("tx-module", <h1>Resource Tagging</h1>);
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/selected-concepts.ssp
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/selected-concepts.ssp?rev=941267&r1=941266&r2=941267&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/selected-concepts.ssp (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/selected-concepts.ssp Wed May 5 12:40:28 2010
@@ -1,7 +1,7 @@
def skos(s: Any) = new UriRef("http://www.w3.org/2008/05/skos#"+s)
def dct(s: Any) = new UriRef("http://purl.org/dc/terms/"+s)
-resultDocModifier.addScriptReference("/static/concepts/scripts/selected-concepts.js");
+resultDocModifier.addScriptReference("/concepts/generic-resource/scripts/selected-concepts.js");
<div>
<div id="selected-concepts">
@@ -10,7 +10,7 @@ resultDocModifier.addScriptReference("/s
<div>PrefLabel: {concept/skos("prefLabel")*}</div>
<div>Uri: {concept*}</div>
<input type="hidden" name="concepts" value={concept*}></input>
- <a href="#" class="tx-icon tx-icon-delete" >Add</a>
+ <a href="#" class="tx-icon tx-icon-delete" >Remove</a>
<br />
<br />
</div>
Added: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/concept-find-create.js
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/concept-find-create.js?rev=941267&view=auto
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/concept-find-create.js (added)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/concept-find-create.js Wed May 5 12:40:28 2010
@@ -0,0 +1,217 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @author hasan, andre
+ */
+function ConceptFinder(){
+};
+
+ConceptFinder.callback;
+
+ConceptFinder.setAddConceptCallback = function(callback){
+ this.callback = callback;
+}
+
+/**
+ * Request the server concepts that match the search term in the input field "search-term"
+ */
+ConceptFinder.search = function(){
+ $("#system-found-concepts").empty();
+ var queryResult = null;
+ var searchTerm = $(":text[name=\"search-term\"]").val();
+ if (searchTerm.length > 0) {
+ var options = new AjaxOptions("find-concepts", "finding concepts", function(data){
+ var databank = $.rdf.databank();
+ var store = databank.load(data, {});
+ var query = $.rdf({
+ databank: store
+ });
+ query.prefix('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+ query.prefix('concepts', 'http://clerezza.org/2010/01/concepts#');
+ query.prefix('rdfs', 'http://www.w3.org/2000/01/rdf-schema#');
+ query.prefix('qr', 'http://clerezza.org/2010/04/queryresult#');
+ var resultSet = query.where('?subject rdf:type qr:QueryResult');
+ if (resultSet.size() != 1) {
+ AlertMessage.show(function(){
+ }, "The query results did not match what's expected: exactly 1 result");
+ }
+ var queryResult = query.node(resultSet.get(0).subject);
+ var conceptProperty = $.rdf.resource("<http://clerezza.org/2010/04/queryresult#concept>");
+ var conceptProperties = queryResult.get(conceptProperty);
+ if (conceptProperties) {
+ ConceptFinder.addFoundConcepts(conceptProperties);
+ }
+ $("#add-button-label").html("<div>Add '" + searchTerm + "' as new Free Concept</div>");
+ $("#system-found-concepts-area").show();
+ var newFreeConceptProperty = $.rdf.resource("<http://clerezza.org/2010/04/queryresult#creationOfNewFreeConceptSuggested>");
+ var creationOfNewFreeConceptSuggested = queryResult.get(newFreeConceptProperty)[0].value.toString() == "true";
+ if (creationOfNewFreeConceptSuggested) {
+ $("#user-defined-concept-area").show();
+ } else {
+ $("#user-defined-concept-area").hide();
+ }
+ });
+ options.url = "/concepts/find";
+ options.data = "searchTerm=" + encodeURIComponent(searchTerm) + "&xPropObj=http://clerezza.org/2010/04/queryresult%23concept";
+ options.dataType = "json";
+ options.beforeSend = function(req){
+ req.setRequestHeader("Accept", "application/rdf+json");
+ };
+
+ $.ajax(options);
+ }
+ return false;
+}
+
+/**
+ * Adds the given (array of) concepts to the UI (that's currently being displayed). Displays them by a
+ * +-button and labels (for each of them)
+ *
+ * @param Json array of concepts
+ */
+ConceptFinder.addFoundConcepts = function(concepts){
+ var selectedConceptsExists = false;
+ if (typeof(SelectedConcepts) != "undefined") {
+ selectedConceptsExists = true;
+ }
+ var added = false;
+ for (var i = 0; i < concepts.length; i++) {
+ var concept = concepts[i];
+ if (!selectedConceptsExists || !SelectedConcepts.exists(concept.value)) {
+ added = true;
+ var prefLabelProperty = $.rdf.resource("<http://www.w3.org/2008/05/skos#prefLabel>");
+ var prefLabel = concept.get(prefLabelProperty).value;
+ var uri = concept.value;
+ ConceptFinder.createSystemFoundConcept(prefLabel, uri);
+ }
+ }
+ if (added) {
+ $("#label-for-search-results").text("Concepts found:");
+ }
+ else {
+ $("#label-for-search-results").text("No additional concepts found.");
+ }
+}
+
+/**
+ * Creates the widget that show the user a concept that was found on the backend. Shows prefLabel,
+ * uri and a button to add the concept to the backend
+ *
+ * @param {Object} prefLabel
+ * @param {Object} uri
+ */
+ConceptFinder.createSystemFoundConcept = function(prefLabel, uri) {
+ var div = $("<div/>");
+ ConceptFinder.createConceptWidgets(prefLabel, uri).appendTo(div)
+ $("<a/>").addClass("tx-icon tx-icon-plus").attr({
+ href: "#"
+ }).text("Add").click(ConceptFinder.onAddClicked(prefLabel, uri)).appendTo(div);
+ $("<br/>").appendTo(div);
+ $("<br/>").appendTo(div);
+ div.appendTo("#system-found-concepts")
+}
+
+ConceptFinder.onAddClicked = function(prefLabel, uri){
+ return function(){
+ if (typeof(SelectedConcepts) != "undefined") {
+ SelectedConcepts.addConcept(prefLabel, uri);
+ }
+ if (typeof(ConceptFinder.callback) == "function") {
+ ConceptFinder.callback(prefLabel, uri);
+ }
+ $(this).parent().remove();
+ };
+}
+
+/**
+ * Creates html elements that show the given pref label and uri. Appends them to the given div.
+ *
+ * @param {Object} prefLabel
+ * @param {Object} uri
+ * @param {Object} div
+ */
+ConceptFinder.createConceptWidgets = function(prefLabel, uri) {
+ var div = $("<div/>");
+ if (prefLabel.substr(0,1) == "\"") {
+ prefLabel = prefLabel.substring(1, prefLabel.length - 1);
+ }
+ $("<div/>").text("PrefLabel: " + prefLabel).appendTo(div);
+ $("<div/>").text("Uri: " + uri).appendTo(div);
+ $("<input/>").attr({
+ "type": "hidden",
+ "name": "concepts"
+ }).val(uri).appendTo(div);
+ return div;
+}
+
+/**
+ * Checks if a concept with the given uri already exists
+ * @param {Object} uri
+ */
+ConceptFinder.exists = function(uri){
+
+};
+
+function ConceptManipulator(){
+};
+
+ConceptManipulator.callback;
+
+ConceptManipulator.setAddConceptCallback = function(callback){
+ this.callback = callback;
+}
+
+/**
+ * sends a new concept to the backend for addition. Uses the search term entered by the user (in the same form).
+ */
+ConceptManipulator.addConcept = function(){
+ var searchTerm = $(":text[name='search-term']").val();
+ if (searchTerm.length > 0) {
+ var options = new AjaxOptions("add-concepts", "adding concepts", function(uri){
+ $("#concept-description").val("");
+ if (typeof(SelectedConcepts) != "undefined") {
+ SelectedConcepts.addConcept(searchTerm, uri);
+ }
+ if (typeof(this.callback) == "function") {
+ this.callback(searchTerm, uri);
+ }
+ });
+ options.type = "POST";
+ options.url = "/concepts/manipulator/add-concept";
+ options.data = {
+ "pref-label": searchTerm,
+ lang: $(":input[name='lang']").val(),
+ comment: $(":textarea[name='comment']").val()
+ }
+
+ $.ajax(options);
+ }
+ return false;
+}
+
+$(document).ready(function(){
+ $("#go-button").click(function(){
+ ConceptFinder.search();
+ });
+ $("#add-user-defined-concept").click(function(){
+ ConceptManipulator.addConcept();
+ $("#user-defined-concept-area").hide();
+ });
+ $("#system-found-concepts-area").hide();
+ $("#user-defined-concept-area").hide();
+});
Added: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/concept-provider-manipulation.js
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/concept-provider-manipulation.js?rev=941267&view=auto
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/concept-provider-manipulation.js (added)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/resources/org/apache/clerezza/platform/concepts/core/staticweb/scripts/concept-provider-manipulation.js Wed May 5 12:40:28 2010
@@ -0,0 +1,213 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+function ConceptProviderGui(){};
+
+ConceptProviderGui.isModified = false;
+
+ConceptProviderGui.query = "PREFIX owl: <http://www.w3.org/2002/07/owl#> \n" +
+ "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \n" +
+ "PREFIX skos08: <http://www.w3.org/2008/05/skos#> \n" +
+ "PREFIX skos04: <http://www.w3.org/2004/02/skos/core#> \n" +
+ "CONSTRUCT { ?concept a skos08:Concept; skos08:prefLabel ?prefLabel; " +
+ "rdfs:comment ?comment; owl:sameAs ?sameConcept . } \n" +
+ "WHERE { ?concept a skos04:Concept; skos04:prefLabel ?prefLabel . \n" +
+ "OPTIONAL { ?concept rdfs:comment ?comment . } \n" +
+ "OPTIONAL { ?concept owl:sameAs ?sameConcept . } \n" +
+ "FILTER (REGEX(STR(?prefLabel), '${searchTerm}', 'i'))}";
+
+ConceptProviderGui.initButtons = function() {
+
+ ConceptProviderGui.updateButtonState();
+
+ $("#deleteButton").click(function(event) {
+ $("input:checked").each(function() {
+ $(this).parent().parent().remove();
+ });
+ $(this).addClass("tx-inactive");
+ ConceptProviderGui.isModified = true;
+ });
+
+ $("#addProvider").click(function(event) {
+ ConceptProviderGui.addProvider($("#type").val(),
+ $("#conceptScheme").val(),
+ $("#sparqlEndPoint").val(),
+ $("#defaultGraph").val(),
+ $("#query").val());
+ $("#conceptScheme").val("");
+ $("#sparqlEndPoint").val("");
+ $("#defaultGraph").val("");
+ $("#query").val("");
+ });
+
+ $("#addButton").click(function(event) {
+ if($(this).text() == "Save") {
+ var options = new AjaxOptions("update-providers", "updating providers", function(obj) {
+ });
+ $("textarea[id!=query]").each(function() {
+ $(this).removeAttr("disabled");
+ });
+ options.type = "POST";
+ options.url = "update-concept-provider-list";
+ options.data = $("#providers").serialize();
+ $.ajax(options);
+ }
+ });
+}
+
+ConceptProviderGui.addProvider = function(rdfType, conceptScheme, sparqlEndPoint, defaultGraph, query) {
+ var tr = $("<tr/>").attr("id", "");
+ var td1 = $("<td/>");
+ var div = $("<div/>").text("Provider:");
+ var td2 = $("<td/>");
+
+ var selection = $("<select/>").attr("name","types");
+
+ $("#type > option:not(:selected)").each(function() {
+ selection.append($(this).clone());
+ });
+ $("#type > option:selected").each(function() {
+ var option = $(this).clone();
+ option.attr("selected", "selected");
+ selection.append(option);
+ });
+
+ td2.append(div);
+ td2.append(selection);
+
+ var inputText = $("<input/>").attr({
+ "type":"text",
+ "name":"conceptSchemes",
+ "value": conceptScheme
+ });
+
+ div = $("<div/>").text("Concept Scheme:");
+ td2.append(div);
+ td2.append(inputText);
+
+ inputText = $("<input/>").attr({
+ "type":"text",
+ "name":"sparqlEndPoints",
+ "value": sparqlEndPoint
+ });
+
+ div = $("<div/>").text("SPARQL End Point");
+ td2.append(div);
+ td2.append(inputText);
+
+ inputText = $("<input/>").attr({
+ "type":"text",
+ "name":"defaultGraphs",
+ "value": defaultGraph
+ });
+
+ div = $("<div/>").text("Default Graph:");
+ td2.append(div);
+ td2.append(inputText)
+ var inputCheckbox = $("<input/>").attr({
+ "type":"checkbox",
+ "value": rdfType
+ });
+
+ inputCheckbox.appendTo(td1);
+
+ td1.appendTo(tr);
+
+ var textArea = $("<textarea/>").attr({
+ "rows":"8",
+ "name":"queryTemplates"
+ }).val(query);
+ div = $("<div/>").text("Query Template:");
+ td2.append(div);
+ td2.append(textArea);
+ td2.append($("<br/>"));
+ td2.append($("<br/>"));
+ td2.appendTo(tr);
+ tr.insertBefore("#last");
+ ConceptProviderGui.isModified = true;
+
+ $("select[name=types] > option:selected").each(function() {
+ ConceptProviderGui.updateDropDown($(this), "conceptSchemes");
+ });
+}
+
+ConceptProviderGui.updateDropDown = function (obj, name) {
+ if(obj.val().indexOf("Local") != -1) {
+ obj.parent().parent().find("input[name!=" + name + "]").each(function() {
+ $(this).prev().hide();
+ $(this).hide();
+ });
+ obj.parent().parent().find("input[name=" + name + "]").each(function() {
+ $(this).prev().show();
+ $(this).show();
+ });
+ obj.parent().parent().find("textarea").each(function() {
+ $(this).prev().hide();
+ $(this).hide();
+ });
+ } else {
+ obj.parent().parent().find("input[name!=" + name + "]").each(function() {
+ $(this).prev().show();
+ $(this).show();
+ });
+ obj.parent().parent().find("input[name=" + name + "]").each(function() {
+ $(this).prev().hide();
+ $(this).hide();
+ });
+ obj.parent().parent().find("textarea").each(function() {
+ $(this).prev().show();
+ $(this).show();
+ });
+ }
+}
+
+ConceptProviderGui.updateButtonState = function() {
+ var counter = $("input:checked").length;
+ if(counter == 0) {
+ $("#deleteButton").addClass("tx-inactive");
+ } else {
+ $("#deleteButton").removeClass("tx-inactive");
+ }
+}
+
+$(document).ready(function () {
+
+ $("select[name=types]").live("change", function() {
+ $("select[name=types] > option:selected").each(function(){
+ ConceptProviderGui.updateDropDown($(this), "conceptSchemes");
+ });
+ });
+ $("select[name=types] > option:selected").each(function() {
+ ConceptProviderGui.updateDropDown($(this), "conceptSchemes");
+ });
+ $("#type").live("change", function() {
+ $("#type > option:selected").each(function(){
+ ConceptProviderGui.updateDropDown($(this), "conceptScheme");
+ $("#query").val(ConceptProviderGui.query);
+ });
+ });
+ $("#type > option:selected").each(function() {
+ ConceptProviderGui.updateDropDown($(this), "conceptScheme");
+ $("#query").val(ConceptProviderGui.query);
+ });
+ $("input:checkbox").live("change",function() {
+ ConceptProviderGui.updateButtonState();
+ });
+
+ ConceptProviderGui.initButtons();
+});