|
@@ -22,11 +22,16 @@ class TripalVocabService_v0_1 extends TripalWebService {
|
|
|
* @see TripalWebService::handleRequest()
|
|
|
*/
|
|
|
public function handleRequest() {
|
|
|
+ $this->resource->addContextItem('vocab', $this->getServicePath() . '#');
|
|
|
|
|
|
- $this->resource->addContextItem('vocab', $this->getServicePath());
|
|
|
$this->resource->addContextItem('ApiDocumentation', 'hydra:ApiDocumentation');
|
|
|
$this->resource->addContextItem('supportedClass', 'hydra:supportedClass');
|
|
|
$this->resource->setType('ApiDocumentation');
|
|
|
+ $this->resource->setID('vocab/' . $this->getVersion());
|
|
|
+
|
|
|
+ // We need to list the content types as properties of the EntryPoint.
|
|
|
+ $properties = array();
|
|
|
+
|
|
|
|
|
|
// Iterate through all of the web services and get their documentation
|
|
|
$services = tripal_get_web_services();
|
|
@@ -37,15 +42,77 @@ class TripalVocabService_v0_1 extends TripalWebService {
|
|
|
foreach ($supported_classes as $supported) {
|
|
|
$this->resource->addProperty('supportedClass', $supported);
|
|
|
}
|
|
|
+ if ($service_class::$type != 'vocab') {
|
|
|
+ $event_prop = new TripalWebServiceResource($this->getServicePath());
|
|
|
+ $event_prop->addProperty('hydra:title', $service_class::$type);
|
|
|
+ $event_prop->addProperty('hydra:description', $service_class::$description);
|
|
|
+ $event_prop->addContextItem('required', 'hydra:reqiured');
|
|
|
+ $event_prop->addProperty('required', NULL);
|
|
|
+ $event_prop->addContextItem('readonly', 'hydra:readonly');
|
|
|
+ $event_prop->addProperty('readonly', TRUE);
|
|
|
+ $event_prop->addContextItem('writeonly', 'hydra:writeonly');
|
|
|
+ $event_prop->addProperty('writeonly', FALSE);
|
|
|
+ $event_prop->addContextItem('property', array(
|
|
|
+ "@id" => "hydra:property",
|
|
|
+ "@type" => "@id"
|
|
|
+ ));
|
|
|
+ //$event_prop->setID('');
|
|
|
+ //$event_prop->setType('');
|
|
|
+ $prop = new TripalWebServiceResource($this->getServicePath());
|
|
|
+ $prop->setID('vocab:EntryPoint/' . $service_class::$type);
|
|
|
+ $prop->setType('hydra:Link');
|
|
|
+ $prop->addContextItem('label', 'rdfs:label');
|
|
|
+ $prop->addProperty('label', $service_class::$label);
|
|
|
+ $prop->addContextItem('description', 'rdfs:comment');
|
|
|
+ $prop->addProperty('description', $service_class::$description);
|
|
|
+ $prop->addContextItem('domain', array(
|
|
|
+ "@id" => "rdfs:domain",
|
|
|
+ "@type" => "@id"
|
|
|
+ ));
|
|
|
+ $prop->addProperty('domain', 'vocab:EntryPoint');
|
|
|
+ $prop->addContextItem('range', array(
|
|
|
+ "@id" => "rdfs:range",
|
|
|
+ "@type" => "@id"
|
|
|
+ ));
|
|
|
+ $prop->addProperty('range', 'hydra:Collection');
|
|
|
+
|
|
|
+ $prop_ops = array();
|
|
|
+ $prop_op = new TripalWebServiceResource($this->getServicePath());
|
|
|
+ $prop_op->setID('_:event_collectionretrieve');
|
|
|
+ $prop_op->setType('hydra:Operation');
|
|
|
+ $prop_op->addContextItem('method', 'hydra:method');
|
|
|
+ $prop_op->addProperty('method', 'GET');
|
|
|
+ $prop_op->addContextItem('label', 'rdfs:label');
|
|
|
+ $prop_op->addProperty('label', 'Retrieves all ' . $service_class::$label . ' entities.');
|
|
|
+ $prop_op->addContextItem('description', 'rdfs:comment');
|
|
|
+ $prop_op->addProperty('description', NULL);
|
|
|
+ $prop_op->addContextItem('expects', array(
|
|
|
+ "@id" => "hydra:expects",
|
|
|
+ "@type" => "@id"
|
|
|
+ ));
|
|
|
+ $prop_op->addProperty('expects', NULL);
|
|
|
+ $prop_op->addContextItem('returns', array(
|
|
|
+ "@id" => "hydra:returns",
|
|
|
+ "@type" => "@id"
|
|
|
+ ));
|
|
|
+ $prop_op->addProperty('returns', 'hydra:Collection');
|
|
|
+ $prop_op->addContextItem('statusCodes', 'hydra:statusCodes');
|
|
|
+ $prop_op->addProperty('statusCodes', array());
|
|
|
+ $prop_ops[] = $prop_op;
|
|
|
+
|
|
|
+ $prop->addContextItem('supportedOperation', 'hydra:supportedOperation');
|
|
|
+ $prop->addProperty('supportedOperation', $prop_ops);
|
|
|
+ $event_prop->addProperty('property', $prop);
|
|
|
+ $properties[] = $event_prop;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Add in the generic supported classes.
|
|
|
$entry_class = new TripalWebServiceResource($this->base_path);
|
|
|
- $entry_class->addContextItem('vocab', $this->getServicePath());
|
|
|
$entry_class->addContextItem('label', 'rdfs:label');
|
|
|
- $entry_class->setID('vocab:EntryPoint');
|
|
|
+ $entry_class->setID($this->getServicePath() . '#EntryPoint');
|
|
|
$entry_class->setType('hydra:Class');
|
|
|
- $entry_class->addProperty('label', 'Entry Point');
|
|
|
+ $entry_class->addProperty('label', 'EntryPoint');
|
|
|
$entry_class->addContextItem('description', 'rdfs:comment');
|
|
|
$entry_class->addProperty('description', 'The main entry point or homepage of the API');
|
|
|
$entry_class->addContextItem('subClassOf', array(
|
|
@@ -83,8 +150,7 @@ class TripalVocabService_v0_1 extends TripalWebService {
|
|
|
|
|
|
$operations[] = $get_op;
|
|
|
$entry_class->addProperty('supportedOperation', $operations);
|
|
|
-
|
|
|
-
|
|
|
+ $entry_class->addProperty('supportedProperty', $properties);
|
|
|
$this->resource->addProperty('supportedClass', $entry_class);
|
|
|
}
|
|
|
}
|