GeoPubby  Version 0.1.0.0
ValuesDataURLServlet Class Reference

A servlet for serving an RDF document describing resources related to a given resource via a given property. More...

Inheritance diagram for ValuesDataURLServlet:
Collaboration diagram for ValuesDataURLServlet:

Public Member Functions

boolean doGet (HypermediaControls controller, Property predicate, boolean isInverse, HttpServletRequest request, HttpServletResponse response, Configuration config) throws IOException
 
String getDocumentTitle (String resourceLabel, String propertyLabel, boolean isInverse)
 
boolean doGet (String relativeURI, HttpServletRequest request, HttpServletResponse response, Configuration config) throws IOException, ServletException
 
void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
 
void init () throws ServletException
 

Protected Member Functions

void addDocumentMetadata (Model model, HypermediaControls controller, String documentURL, String title)
 
void addPageMetadata (Context context, HypermediaControls controller, PrefixMapping prefixes)
 
void send404 (HttpServletResponse response, String resourceURI) throws IOException
 
void sendInitialization500 (HttpServletResponse response, String message) throws IOException
 
String addQueryString (String dataURL, HttpServletRequest request)
 

Private Attributes

Configuration config
 
String initError
 

Static Private Attributes

static final long serialVersionUID = -7927775670218866340L
 
static Pattern prefixedNamePattern = Pattern.compile("(-?)([^!:/]*):([^:/]*)/(.*)")
 
static Pattern fullIRIPattern = Pattern.compile("(-?)!(.*?)///(.*)")
 

Detailed Description

A servlet for serving an RDF document describing resources related to a given resource via a given property.

The property can be a forward or backward arc.

Member Function Documentation

◆ addDocumentMetadata()

void addDocumentMetadata ( Model  model,
HypermediaControls  controller,
String  documentURL,
String  title 
)
protectedinherited
54  {
55  ModelUtil.addNSIfUndefined(model, "foaf", FOAF.getURI());
56  ModelUtil.addNSIfUndefined(model, "rdfs", RDFS.getURI());
57 
58  // Add document metadata
59  Resource topic = model.getResource(controller.getAbsoluteIRI());
60  Resource document = model.getResource(documentURL);
61  document.addProperty(FOAF.primaryTopic, topic);
62  document.addProperty(RDFS.label, title);
63 
64  // Add custom metadata
65  for (Dataset dataset: config.getDatasets()) {
66  MetadataConfiguration metadata = dataset.getMetadataConfiguration();
67  metadata.addCustomMetadata(model, document);
68  metadata.addMetadataFromTemplate(model, controller);
69  }
70  }
List< Dataset > getDatasets()
The conf:dataset blocks.
Definition: Configuration.java:199
Configuration config
Definition: BaseServlet.java:38

References MetadataConfiguration.addCustomMetadata(), MetadataConfiguration.addMetadataFromTemplate(), ModelUtil.addNSIfUndefined(), BaseServlet.config, HypermediaControls.getAbsoluteIRI(), and Configuration.getDatasets().

Referenced by ValuesDataURLServlet.doGet(), and DataURLServlet.doGet().

◆ addPageMetadata()

void addPageMetadata ( Context  context,
HypermediaControls  controller,
PrefixMapping  prefixes 
)
protectedinherited
75  {
76  try {
77  Model metadataModel = ModelFactory.createDefaultModel();
78  for (Dataset dataset: config.getDatasets()) {
79  MetadataConfiguration metadata = dataset.getMetadataConfiguration();
80  Resource document = metadata.addMetadataFromTemplate(metadataModel, controller);
81  // Replaced the commented line by the following one because the
82  // RDF graph we want to talk about is a specific representation
83  // of the data identified by the getDataURL() URI.
84  // Olaf, May 28, 2010
85  // context.put("metadata", metadata.getResource(resource.getDataURL()));
86  context.put("metadata", document);
87  }
88 
89  Map<String,String> nsSet = metadataModel.getNsPrefixMap();
90  nsSet.putAll(prefixes.getNsPrefixMap());
91  context.put("prefixes", nsSet.entrySet());
92  context.put("blankNodesMap", new HashMap<Resource,String>());
93  }
94  catch (Exception e) {
95  context.put("metadata", Boolean.FALSE);
96  }
97  }

References MetadataConfiguration.addMetadataFromTemplate(), BaseServlet.config, and Configuration.getDatasets().

Referenced by ValuesURLServlet.doGet(), and PageURLServlet.doGet().

◆ addQueryString()

String addQueryString ( String  dataURL,
HttpServletRequest  request 
)
protectedinherited
161  {
162  if (request.getParameter("output") == null) {
163  return dataURL;
164  }
165  return dataURL + "?output=" + request.getParameter("output");
166  }

Referenced by ValuesDataURLServlet.doGet(), and DataURLServlet.doGet().

◆ doGet() [1/3]

void doGet ( HttpServletRequest  request,
HttpServletResponse  response 
) throws IOException, ServletException
inherited
106  {
107  if (initError != null) {
108  if(config==null) {
109  System.out.println("Calling initConfiguration from BaseServlet!");
110  Boolean res=ServletContextInitializer.initConfiguration(getServletContext());
111  if(res)
112  initError=null;
113  else {
114  initError=getServletContext().getAttribute(ServletContextInitializer.ERROR_MESSAGE).toString();
115  }
116  System.out.println("Successful result? "+res.toString());
117  }
118  config = (Configuration) getServletContext().getAttribute(
119  ServletContextInitializer.SERVER_CONFIGURATION);
120  }
121  if(initError!=null) {
122  sendInitialization500(response, initError);
123  return;
124  }
125  String relativeURI = request.getRequestURI().substring(
126  request.getContextPath().length() + request.getServletPath().length());
127  // Some servlet containers keep the leading slash, some don't
128  if (!"".equals(relativeURI) && "/".equals(relativeURI.substring(0, 1))) {
129  relativeURI = relativeURI.substring(1);
130  }
131  if (!doGet(relativeURI, request, response, config)) {
132  send404(response, null);
133  }
134 
135 
136  }
String initError
Definition: BaseServlet.java:39
void send404(HttpServletResponse response, String resourceURI)
Definition: BaseServlet.java:138
void sendInitialization500(HttpServletResponse response, String message)
Definition: BaseServlet.java:152
abstract boolean doGet(String relativeURI, HttpServletRequest request, HttpServletResponse response, Configuration config)

References BaseServlet.config, BaseServlet.doGet(), ServletContextInitializer.ERROR_MESSAGE, ServletContextInitializer.initConfiguration(), BaseServlet.initError, BaseServlet.send404(), BaseServlet.sendInitialization500(), and ServletContextInitializer.SERVER_CONFIGURATION.

◆ doGet() [2/3]

boolean doGet ( HypermediaControls  controller,
Property  predicate,
boolean  isInverse,
HttpServletRequest  request,
HttpServletResponse  response,
Configuration  config 
) throws IOException

Reimplemented from ValuesBaseServlet.

27  {
28  // TODO: If no data ("return false"), respond with plain text like the PageURLServlet, not with HTML
29 
30  // TODO: Good bit of duplication with ValuesURLServlet here
31  ResourceDescription resource = controller.getResourceDescription();
32  if (resource == null) return false;
33 
34  Model descriptions = config.getDataSource().listPropertyValues(
35  controller.getAbsoluteIRI(), predicate, isInverse);
36  if (descriptions.isEmpty()) return false;
37  ResourceProperty property = new ResourceDescription(
38  controller, descriptions, config).getProperty(predicate, isInverse);
39  if (property == null) return false; // Can happen if prefix is declared in URI space of a data source rather than in web space
40 
41  addDocumentMetadata(descriptions, controller,
43  isInverse
44  ? controller.getInverseValuesDataURL(predicate)
45  : controller.getValuesDataURL(predicate),
46  request),
48  resource.getTitle(), property.getCompleteLabel(), isInverse));
49 
50  new ModelResponse(descriptions, request, response).serve();
51  return true;
52  }
DataSource getDataSource()
A composite DataSource representing the merge of all datasets.
Definition: Configuration.java:192
String addQueryString(String dataURL, HttpServletRequest request)
Definition: BaseServlet.java:161
void addDocumentMetadata(Model model, HypermediaControls controller, String documentURL, String title)
Definition: BaseServlet.java:53
String getDocumentTitle(String resourceLabel, String propertyLabel, boolean isInverse)
Definition: ValuesDataURLServlet.java:54
Model listPropertyValues(String resourceIRI, Property property, boolean isInverse)
Returns a subgraph of the data source.

References BaseServlet.addDocumentMetadata(), BaseServlet.addQueryString(), BaseServlet.config, Configuration.getDataSource(), ValuesDataURLServlet.getDocumentTitle(), ResourceDescription.getProperty(), ResourceDescription.getTitle(), DataSource.listPropertyValues(), and ModelResponse.serve().

◆ doGet() [3/3]

boolean doGet ( String  relativeURI,
HttpServletRequest  request,
HttpServletResponse  response,
Configuration  config 
) throws IOException, ServletException
inherited

Reimplemented from BaseServlet.

38  {
39  boolean isInverse;
40  Property property;
41  Matcher matcher = prefixedNamePattern.matcher(relativeURI);
42  if (matcher.matches()) {
43  String prefix = matcher.group(2);
44  if (config.getPrefixes().getNsPrefixURI(prefix) == null) {
45  return false;
46  }
47  String localName = matcher.group(3);
48  relativeURI = matcher.group(4); // Keep just last part
49  property = ResourceFactory.createProperty(
50  config.getPrefixes().getNsPrefixURI(prefix), localName);
51  } else {
52  matcher = fullIRIPattern.matcher(relativeURI);
53  if (!matcher.matches()) {
54  return false;
55  }
56  String propertyIRI = IRIEncoder.toIRI(
57  PubbyIRIEscaper.unescapeSpecialCharacters(matcher.group(2)));
58  relativeURI = matcher.group(3); // Keep just last part
59  property = ResourceFactory.createProperty(propertyIRI);
60  }
61  isInverse = "-".equals(matcher.group(1));
62 
63  HypermediaControls controller = config.getControls(relativeURI, false);
64  if (controller == null) {
65  return false;
66  }
67  return doGet(controller, property, isInverse, request, response, config);
68  }
HypermediaControls getControls(String relativeRequestURI, boolean isRelativeToPubbyRoot)
Definition: Configuration.java:210
PrefixMapping getPrefixes()
Definition: Configuration.java:221
abstract boolean doGet(HypermediaControls controller, Property property, boolean isInverse, HttpServletRequest request, HttpServletResponse response, Configuration config)
static Pattern fullIRIPattern
Definition: ValuesBaseServlet.java:27
static Pattern prefixedNamePattern
Definition: ValuesBaseServlet.java:26

References BaseServlet.config, ValuesBaseServlet.doGet(), ValuesBaseServlet.fullIRIPattern, Configuration.getControls(), Configuration.getPrefixes(), ValuesBaseServlet.prefixedNamePattern, IRIEncoder.toIRI(), and PubbyIRIEscaper.unescapeSpecialCharacters().

◆ getDocumentTitle()

String getDocumentTitle ( String  resourceLabel,
String  propertyLabel,
boolean  isInverse 
)
55  {
56  if (isInverse) {
57  return "RDF description of all resources whose " + propertyLabel + " is " + resourceLabel;
58  } else {
59  return "RDF description of all values that are " + propertyLabel + " of " + resourceLabel;
60  }
61  }

Referenced by ValuesDataURLServlet.doGet().

◆ init()

void init ( ) throws ServletException
inherited
41  {
42  config = (Configuration) getServletContext().getAttribute(
43  ServletContextInitializer.SERVER_CONFIGURATION);
44  if(config==null){
45  initError = (String) getServletContext().getAttribute(
46  ServletContextInitializer.ERROR_MESSAGE);
47  }else {
48  initError=null;
49  }
50  }

References BaseServlet.config, ServletContextInitializer.ERROR_MESSAGE, BaseServlet.initError, and ServletContextInitializer.SERVER_CONFIGURATION.

◆ send404()

void send404 ( HttpServletResponse  response,
String  resourceURI 
) throws IOException
protectedinherited
138  {
139  response.setStatus(404);
140  VelocityHelper template = new VelocityHelper(getServletContext(), response);
141  Context context = template.getVelocityContext();
142  context.put("project_name", config.getProjectName());
143  context.put("project_link", config.getProjectLink());
144  context.put("server_base", config.getWebApplicationBaseURI());
145  context.put("title", "404 Not Found");
146  if (resourceURI != null) {
147  context.put("uri", resourceURI);
148  }
149  template.renderXHTML("404.vm");
150  }
String getProjectName()
Definition: Configuration.java:265
String getProjectLink()
Definition: Configuration.java:261
String getWebApplicationBaseURI()
Definition: Configuration.java:269

References BaseServlet.config, Configuration.getProjectLink(), Configuration.getProjectName(), and Configuration.getWebApplicationBaseURI().

Referenced by BaseServlet.doGet().

◆ sendInitialization500()

void sendInitialization500 ( HttpServletResponse  response,
String  message 
) throws IOException
protectedinherited
152  {
153  response.setStatus(500);
154  VelocityHelper template = new VelocityHelper(getServletContext(), response);
155  Context context = template.getVelocityContext();
156  context.put("message", message);
157  context.put("title", "Configuration error");
158  template.renderXHTML("500init.vm");
159  }

Referenced by BaseServlet.doGet().

Member Data Documentation

◆ config

◆ fullIRIPattern

Pattern fullIRIPattern = Pattern.compile("(-?)!(.*?)///(.*)")
staticprivateinherited

Referenced by ValuesBaseServlet.doGet().

◆ initError

String initError
privateinherited

◆ prefixedNamePattern

Pattern prefixedNamePattern = Pattern.compile("(-?)([^!:/]*):([^:/]*)/(.*)")
staticprivateinherited

Referenced by ValuesBaseServlet.doGet().

◆ serialVersionUID

final long serialVersionUID = -7927775670218866340L
staticprivate