public function processInterface() { // Make sure there was no conneg error prior to this process call if ($this->ws->conneg->getStatus() == 200) { // Starts the OWLAPI process/bridge require_once $this->ws->owlapiBridgeURI; // Create the OWLAPI session object that could have been persisted on the OWLAPI instance. // Second param "false" => we re-use the pre-created session without destroying the previous one // third param "0" => it nevers timeout. if ($this->ws->OwlApiSession == null) { $this->ws->OwlApiSession = java_session("OWLAPI", false, 0); } $ontology; try { $ontology = new OWLOntology($this->ws->ontologyUri, $this->ws->OwlApiSession, TRUE); $ontology->setLanguage($this->ws->lang); if (strtolower($this->ws->owlapiReasoner) == "pellet") { $ontology->usePelletReasoner(); } elseif (strtolower($this->ws->owlapiReasoner) == "hermit") { $ontology->useHermitReasoner(); } elseif (strtolower($this->ws->owlapiReasoner) == "factpp") { $ontology->useFactppReasoner(); } } catch (Exception $e) { if (strtolower($this->ws->function) != "getserializedclasshierarchy" && strtolower($this->ws->function) != "getserializedpropertyhierarchy" && strtolower($this->ws->function) != "getironxmlschema" && strtolower($this->ws->function) != "getironjsonschema" && strtolower($this->ws->function) != "getloadedontologies") { $this->returnError(400, "Bad Request", "_300"); return; } } if (isset($ontology)) { if ($this->ws->useReasoner) { $ontology->useReasoner(); } else { $ontology->stopUsingReasoner(); } } if (isset($this->ws->parameters["direct"]) && $this->ws->parameters["direct"] != "") { $this->ws->parameters["direct"] = strtolower($this->ws->parameters["direct"]); if ($this->ws->parameters["direct"] == "false" || $this->ws->parameters["direct"] == "0" || $this->ws->parameters["direct"] == "off") { $this->ws->parameters["direct"] = false; } else { $this->ws->parameters["direct"] = true; } } switch (strtolower($this->ws->function)) { case "getserialized": $this->ws->conneg->setStatus(200); $this->ws->conneg->setStatusMsg("OK"); $this->ws->getSerialized = $ontology->getSerialization(); return; break; case "getclass": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } $class = $ontology->_getClass($this->ws->parameters["uri"]); if ($class == null) { $this->returnError(400, "Bad Request", "_205"); } else { $subject = new Subject($this->ws->parameters["uri"]); $subject->setSubject($ontology->_getClassDescription($class)); $this->ws->rset->addSubject($subject); } break; case "getclasses": $limit = -1; $offset = 0; if (isset($this->ws->parameters["limit"])) { $limit = $this->ws->parameters["limit"]; } if (isset($this->ws->parameters["offset"])) { $offset = $this->ws->parameters["offset"]; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": $classes = $ontology->getClassesUri($limit, $offset); foreach ($classes as $class) { $subject = new Subject($class); $subject->setType("owl:Class"); $this->ws->rset->addSubject($subject); } break; case "descriptions": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getClassesDescription($limit, $offset))); break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; case "getnamedindividual": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } $namedIndividual = $ontology->_getNamedIndividual($this->ws->parameters["uri"]); if ($namedIndividual == null) { $this->returnError(400, "Bad Request", "_206"); } else { $subject = new Subject($this->ws->parameters["uri"]); $subject->setSubject($ontology->_getNamedIndividualDescription($namedIndividual)); $this->ws->rset->addSubject($subject); } break; case "getnamedindividuals": $limit = -1; $offset = 0; $direct = true; if (isset($this->ws->parameters["limit"])) { $limit = $this->ws->parameters["limit"]; } if (isset($this->ws->parameters["offset"])) { $offset = $this->ws->parameters["offset"]; } if (isset($this->ws->parameters["direct"])) { switch ($this->ws->parameters["direct"]) { case "0": $direct = false; break; case "1": $direct = true; break; } } $classUri = "all"; if (!isset($this->ws->parameters["classuri"])) { $classUri = $this->ws->parameters["classuri"]; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": $namedindividuals = $ontology->getNamedIndividualsUri($classUri, $direct, $limit, $offset); foreach ($namedindividuals as $ni) { $subject = new Subject($ni); $subject->setType("owl:NamedIndividual"); $this->ws->rset->addSubject($subject); } break; case "descriptions": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getNamedIndividualsDescription($classUri, $direct, $limit, $offset))); break; case "list": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getNamedIndividualsDescription($classUri, $direct, $limit, $offset, TRUE))); break; default: $this->returnError(400, "Bad Request", "_201", "Mode provided: " . $this->ws->parameters["mode"]); return; break; } break; case "getsubclasses": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": $classes = $ontology->getSubClassesUri($this->ws->parameters["uri"], $this->ws->parameters["direct"]); foreach ($classes as $class) { $subject = new Subject($class); $subject->setType("owl:Class"); $this->ws->rset->addSubject($subject); } break; case "descriptions": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getSubClassesDescription($this->ws->parameters["uri"], $this->ws->parameters["direct"]))); break; case "hierarchy": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getSubClassesDescription($this->ws->parameters["uri"], TRUE, TRUE))); break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; case "getsuperclasses": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": $classes = $ontology->getSuperClassesUri($this->ws->parameters["uri"], $this->ws->parameters["direct"]); foreach ($classes as $class) { $subject = new Subject($class); $subject->setType("owl:Class"); $this->ws->rset->addSubject($subject); } break; case "descriptions": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getSuperClassesDescription($this->ws->parameters["uri"], $this->ws->parameters["direct"]))); break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; case "getequivalentclasses": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": $classes = $ontology->getEquivalentClassesUri($this->ws->parameters["uri"]); foreach ($classes as $class) { $subject = new Subject($class); $subject->setType("owl:Class"); $this->ws->rset->addSubject($subject); } break; case "descriptions": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getEquivalentClassesDescription($this->ws->parameters["uri"]))); break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; case "getdisjointclasses": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": $classes = $ontology->getDisjointClassesUri($this->ws->parameters["uri"]); foreach ($classes as $class) { $subject = new Subject($class); $subject->setType("owl:Class"); $this->ws->rset->addSubject($subject); } break; case "descriptions": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getDisjointClassesDescription($this->ws->parameters["uri"]))); break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; case "getontologies": switch (strtolower($this->ws->parameters["mode"])) { case "uris": $ontologies = $ontology->getOntologiesUri(); foreach ($ontologies as $ontology) { $subject = new Subject($ontology); $subject->setType("owl:Ontology"); $this->ws->rset->addSubject($subject); } break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; case "getloadedontologies": switch (strtolower($this->ws->parameters["mode"])) { case "uris": $ontologies = OWLOntology::getLoadedOntologiesUri($this->ws->OwlApiSession); foreach ($ontologies as $ontology) { $subject = new Subject($ontology); $subject->setType("owl:Ontology"); $this->ws->rset->addSubject($subject); } break; case "descriptions": $this->ws->rset->setResultset(array($this->ws->ontologyUri => OWLOntology::getLoadedOntologiesDescription($this->ws->OwlApiSession))); break; default: $this->ws->conneg->setStatus(400); $this->ws->conneg->setStatusMsg("Bad Request"); $this->ws->conneg->setStatusMsgExt($this->ws->errorMessenger->_201->name); $this->ws->conneg->setError($this->ws->errorMessenger->_201->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_201->name, $this->ws->errorMessenger->_201->description, "", $this->ws->errorMessenger->_201->level); return; break; } break; case "getserializedclasshierarchy": $sch = $this->generationSerializedClassHierarchy($this->ws->OwlApiSession); $subject = new Subject($this->ws->ontologyUri); $subject->setType("owl:Ontology"); $subject->setDataAttribute(Namespaces::$wsf . "serializedClassHierarchy", $sch); $this->ws->rset->addSubject($subject); break; case "getserializedpropertyhierarchy": $sch = $this->generationSerializedPropertyHierarchy($this->ws->OwlApiSession); $subject = new Subject($this->ws->ontologyUri); $subject->setType("owl:Ontology"); $subject->setDataAttribute(Namespaces::$wsf . "serializedPropertyHierarchy", $sch); $this->ws->rset->addSubject($subject); break; case "getironxmlschema": $subjectTriples = $ontology->getClassesDescription($limit, $offset); $schema = '<schema><version>0.1</version><typeList>'; $prefixes = array(); foreach ($subjectTriples as $uri => $subject) { $this->manageIronPrefixes($uri, $prefixes); $schema .= "<" . $this->ironPrefixize($uri, $prefixes) . ">"; $schema .= "<description>" . $this->ws->xmlEncode($this->getDescription($subject)) . "</description>"; $schema .= "<prefLabel>" . $this->ws->xmlEncode($this->getLabel($uri, $subject)) . "</prefLabel>"; foreach ($subject as $predicate => $values) { foreach ($values as $value) { switch ($predicate) { case Namespaces::$rdfs . "subClassOf": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<subTypeOf>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</subTypeOf>"; break; case Namespaces::$sco . "displayControl": if (isset($value["uri"])) { $displayControl = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $displayControl = $value["value"]; } $schema .= "<displayControl>" . $this->ws->xmlEncode($displayControl) . "</displayControl>"; break; case Namespaces::$sco . "ignoredBy": if (isset($value["uri"])) { $ignoredBy = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $ignoredBy = $value["value"]; } $schema .= "<ignoredBy>" . $this->ws->xmlEncode($ignoredBy) . "</ignoredBy>"; break; case Namespaces::$sco . "shortLabel": $schema .= "<shortLabel>" . $this->ws->xmlEncode($value["value"]) . "</shortLabel>"; break; case Namespaces::$sco . "mapMarkerImageUrl": $schema .= "<mapMarkerImageUrl>" . $this->ws->xmlEncode($value["value"]) . "</mapMarkerImageUrl>"; break; case Namespaces::$sco . "relationBrowserNodeType": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<relationBrowserNodeType>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</relationBrowserNodeType>"; break; } } } $schema .= "</" . $this->ironPrefixize($uri, $prefixes) . ">"; } $schema .= "</typeList>"; $schema .= "<attributeList>"; $subjectTriples = $ontology->getPropertiesDescription(TRUE); foreach ($subjectTriples as $uri => $subject) { $this->manageIronPrefixes($uri, $prefixes); $schema .= "<" . $this->ironPrefixize($uri, $prefixes) . ">"; $schema .= "<description>" . $this->ws->xmlEncode($this->getDescription($subject)) . "</description>"; $schema .= "<prefLabel>" . $this->ws->xmlEncode($this->getLabel($uri, $subject)) . "</prefLabel>"; $schema .= "<type>" . Namespaces::$owl . "DatatypeProperty</type>"; foreach ($subject as $predicate => $values) { foreach ($values as $value) { switch ($predicate) { case Namespaces::$rdfs . "domain": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<allowedType>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</allowedType>"; break; case Namespaces::$rdfs . "range": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<allowedValue><type>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</type></allowedValue>"; break; case Namespaces::$sco . "displayControl": if (isset($value["uri"])) { $displayControl = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $displayControl = $value["value"]; } $schema .= "<displayControl>" . $this->ws->xmlEncode($displayControl) . "</displayControl>"; break; case Namespaces::$sco . "ignoredBy": if (isset($value["uri"])) { $ignoredBy = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $ignoredBy = $value["value"]; } $schema .= "<ignoredBy>" . $this->ws->xmlEncode($ignoredBy) . "</ignoredBy>"; break; case Namespaces::$sco . "comparableWith": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<comparableWith>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</comparableWith>"; break; case Namespaces::$sco . "unitType": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<unitType>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</unitType>"; break; case Namespaces::$sco . "shortLabel": $schema .= "<shortLabel>" . $this->ws->xmlEncode($value["value"]) . "</shortLabel>"; break; case Namespaces::$sco . "minCardinality": $schema .= "<minCardinality>" . $this->ws->xmlEncode($value["value"]) . "</minCardinality>"; break; case Namespaces::$sco . "maxCardinality": $schema .= "<maxCardinality>" . $this->ws->xmlEncode($value["value"]) . "</maxCardinality>"; break; case Namespaces::$sco . "cardinality": $schema .= "<cardinality>" . $this->ws->xmlEncode($value["value"]) . "</cardinality>"; break; case Namespaces::$sco . "orderingValue": $schema .= "<orderingValue>" . $this->ws->xmlEncode($value["value"]) . "</orderingValue>"; break; case Namespaces::$rdfs . "subPropertyOf": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<subPropertyOf>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</subPropertyOf>"; break; case Namespaces::$iron . "allowedValue": $schema .= "<allowedValue><primitive>" . $this->ws->xmlEncode($value["value"]) . "</primitive></allowedValue>"; break; } } } $schema .= "</" . $this->ironPrefixize($uri, $prefixes) . ">"; } $subjectTriples = $ontology->getPropertiesDescription(FALSE, FALSE, TRUE); foreach ($subjectTriples as $uri => $subject) { $this->manageIronPrefixes($uri, $prefixes); $schema .= "<" . $this->ironPrefixize($uri, $prefixes) . ">"; $schema .= "<description>" . $this->ws->xmlEncode($this->getDescription($subject)) . "</description>"; $schema .= "<prefLabel>" . $this->ws->xmlEncode($this->getLabel($uri, $subject)) . "</prefLabel>"; $schema .= "<type>" . Namespaces::$owl . "AnnotationProperty</type>"; foreach ($subject as $predicate => $values) { foreach ($values as $value) { switch ($predicate) { case Namespaces::$rdfs . "domain": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<allowedType>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</allowedType>"; break; case Namespaces::$rdfs . "range": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<allowedValue><type>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</type></allowedValue>"; break; case Namespaces::$sco . "displayControl": if (isset($value["uri"])) { $displayControl = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $displayControl = $value["value"]; } $schema .= "<displayControl>" . $this->ws->xmlEncode($displayControl) . "</displayControl>"; break; case Namespaces::$sco . "ignoredBy": if (isset($value["uri"])) { $ignoredBy = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $ignoredBy = $value["value"]; } $schema .= "<ignoredBy>" . $this->ws->xmlEncode($ignoredBy) . "</ignoredBy>"; break; case Namespaces::$sco . "comparableWith": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<comparableWith>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</comparableWith>"; break; case Namespaces::$sco . "unitType": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<unitType>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</unitType>"; break; case Namespaces::$sco . "shortLabel": $schema .= "<shortLabel>" . $this->ws->xmlEncode($value["value"]) . "</shortLabel>"; break; case Namespaces::$sco . "minCardinality": $schema .= "<minCardinality>" . $this->ws->xmlEncode($value["value"]) . "</minCardinality>"; break; case Namespaces::$sco . "maxCardinality": $schema .= "<maxCardinality>" . $this->ws->xmlEncode($value["value"]) . "</maxCardinality>"; break; case Namespaces::$sco . "cardinality": $schema .= "<cardinality>" . $this->ws->xmlEncode($value["value"]) . "</cardinality>"; break; case Namespaces::$sco . "orderingValue": $schema .= "<orderingValue>" . $this->ws->xmlEncode($value["value"]) . "</orderingValue>"; break; case Namespaces::$rdfs . "subPropertyOf": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<subPropertyOf>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</subPropertyOf>"; break; case Namespaces::$iron . "allowedValue": $schema .= "<allowedValue><primitive>" . $this->ws->xmlEncode($value["value"]) . "</primitive></allowedValue>"; break; } } } $schema .= "</" . $this->ironPrefixize($uri, $prefixes) . ">"; } $subjectTriples = $ontology->getPropertiesDescription(FALSE, TRUE); foreach ($subjectTriples as $uri => $subject) { $this->manageIronPrefixes($uri, $prefixes); $schema .= "<" . $this->ironPrefixize($uri, $prefixes) . ">"; $schema .= "<description>" . $this->ws->xmlEncode($this->getDescription($subject)) . "</description>"; $schema .= "<prefLabel>" . $this->ws->xmlEncode($this->getLabel($uri, $subject)) . "</prefLabel>"; $schema .= "<type>" . Namespaces::$owl . "ObjectProperty</type>"; foreach ($subject as $predicate => $values) { foreach ($values as $value) { switch ($predicate) { case Namespaces::$rdfs . "domain": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<allowedType>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</allowedType>"; break; case Namespaces::$rdfs . "range": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<allowedValue><type>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</type></allowedValue>"; break; case Namespaces::$sco . "displayControl": if (isset($value["uri"])) { $displayControl = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $displayControl = $value["value"]; } $schema .= "<displayControl>" . $this->ws->xmlEncode($displayControl) . "</displayControl>"; break; case Namespaces::$sco . "ignoredBy": if (isset($value["uri"])) { $ignoredBy = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $ignoredBy = $value["value"]; } $schema .= "<ignoredBy>" . $this->ws->xmlEncode($ignoredBy) . "</ignoredBy>"; break; case Namespaces::$sco . "comparableWith": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<comparableWith>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</comparableWith>"; break; case Namespaces::$sco . "shortLabel": $schema .= "<shortLabel>" . $this->ws->xmlEncode($value["value"]) . "</shortLabel>"; break; case Namespaces::$sco . "minCardinality": $schema .= "<minCardinality>" . $this->ws->xmlEncode($value["value"]) . "</minCardinality>"; break; case Namespaces::$sco . "maxCardinality": $schema .= "<maxCardinality>" . $this->ws->xmlEncode($value["value"]) . "</maxCardinality>"; break; case Namespaces::$sco . "cardinality": $schema .= "<cardinality>" . $this->ws->xmlEncode($value["value"]) . "</cardinality>"; break; case Namespaces::$sco . "unitType": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= "<unitType>" . $this->ws->xmlEncode($this->ironPrefixize($value["uri"], $prefixes)) . "</unitType>"; break; case Namespaces::$sco . "orderingValue": $schema .= "<orderingValue>" . $this->ws->xmlEncode($value["value"]) . "</orderingValue>"; break; case Namespaces::$iron . "allowedValue": $schema .= "<allowedValue><primitive>" . $this->ws->xmlEncode($value["value"]) . "</primitive></allowedValue>"; break; } } } $schema .= "</" . $this->ironPrefixize($uri, $prefixes) . ">"; } $schema .= "</attributeList>"; $schema .= "<prefixList>"; foreach ($prefixes as $prefix => $ns) { $schema .= " <{$prefix}>{$ns}</{$prefix}>"; } $schema .= "</prefixList>"; $schema .= "</schema>"; $subjectTriples = ""; $subject = new Subject($this->ws->ontologyUri); $subject->setType("owl:Ontology"); $subject->setDataAttribute(Namespaces::$wsf . "serializedIronXMLSchema", str_replace('&', '&amp;', str_replace(array("\\", "&", "<", ">"), array("%5C", "&", "<", ">"), $schema))); $this->ws->rset->addSubject($subject); /* <schema> <version>0.1</version> <prefLabel>PEG schema</prefLabel> <prefixList> <sco>http://purl.org/ontology/sco#</sco> </prefixList> <typeList> <peg_Neighborhood> <subTypeOf>pegf_Organization</subTypeOf> <description>Neighborhood community organization</description> <prefLabel>neighborhood</prefLabel> <displayControl>sRelationBrowser</displayControl> </peg_Neighborhood> </typeList> <attributeList> <peg_neighborhoodNumber> <prefLabel>neighborhood number</prefLabel> <description>Neighborhood identification number</description> <allowedType>Neighborhood</allowedType> <allowedType>City</allowedType> <allowedType>Province</allowedType> <allowedType>Country</allowedType> <allowedValue> <primitive>String</primitive> </allowedValue> <maxValues>1</maxValues> </peg_neighborhoodNumber> </attributeList> </schema> */ break; case "getironjsonschema": $subjectTriples = $ontology->getClassesDescription($limit, $offset); $schema = '{ "schema": { "version": "0.1", "typeList": {'; $prefixes = array(); foreach ($subjectTriples as $uri => $subject) { $this->manageIronPrefixes($uri, $prefixes); $schema .= '"' . $this->ironPrefixize($uri, $prefixes) . '": {'; $schema .= '"description": "' . $this->ws->jsonEncode($this->getDescription($subject)) . '",'; $schema .= '"prefLabel": "' . $this->ws->jsonEncode($this->getLabel($uri, $subject)) . '",'; foreach ($subject as $predicate => $values) { switch ($predicate) { case Namespaces::$rdfs . "subClassOf": $schema .= '"subTypeOf": ['; break; case Namespaces::$sco . "displayControl": $schema .= '"displayControl": ['; break; case Namespaces::$sco . "ignoredBy": $schema .= '"ignoredBy": ['; break; case Namespaces::$sco . "shortLabel": $schema .= '"shortLabel": ['; break; case Namespaces::$sco . "color": $schema .= '"color": ['; break; case Namespaces::$sco . "mapMarkerImageUrl": $schema .= '"mapMarkerImageUrl": ['; break; case Namespaces::$sco . "relationBrowserNodeType": $schema .= '"relationBrowserNodeType": ['; break; } foreach ($values as $value) { switch ($predicate) { case Namespaces::$rdfs . "subClassOf": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; case Namespaces::$sco . "displayControl": if (isset($value["uri"])) { $displayControl = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $displayControl = $value["value"]; } $schema .= '"' . $this->ws->jsonEncode($displayControl) . '",'; break; case Namespaces::$sco . "ignoredBy": if (isset($value["uri"])) { $ignoredBy = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $ignoredBy = $value["value"]; } $schema .= '"' . $this->ws->jsonEncode($ignoredBy) . '",'; break; case Namespaces::$sco . "shortLabel": $schema .= '"' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "color": $schema .= '"' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "mapMarkerImageUrl": $schema .= '"' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "relationBrowserNodeType": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; } } switch ($predicate) { case Namespaces::$rdfs . "subClassOf": case Namespaces::$sco . "displayControl": case Namespaces::$sco . "ignoredBy": case Namespaces::$sco . "shortLabel": case Namespaces::$sco . "color": case Namespaces::$sco . "mapMarkerImageUrl": case Namespaces::$sco . "relationBrowserNodeType": $schema = rtrim($schema, ","); $schema .= '],'; break; } } $schema = rtrim($schema, ","); $schema .= "},"; } $schema = rtrim($schema, ","); $schema .= "},"; $schema .= '"attributeList": {'; $subjectTriples = $ontology->getPropertiesDescription(TRUE); foreach ($subjectTriples as $uri => $subject) { $this->manageIronPrefixes($uri, $prefixes); $schema .= '"' . $this->ironPrefixize($uri, $prefixes) . '": {'; $schema .= '"description": "' . $this->ws->jsonEncode($this->getDescription($subject)) . '",'; $schema .= '"prefLabel": "' . $this->ws->jsonEncode($this->getLabel($uri, $subject)) . '",'; $schema .= '"type": "' . Namespaces::$owl . 'DatatypeProperty",'; foreach ($subject as $predicate => $values) { switch ($predicate) { case Namespaces::$iron . "allowedValue": $schema .= '"allowedValue": {"primitive": "' . $this->ws->jsonEncode($value["value"]) . '"},'; break; case Namespaces::$rdfs . "subPropertyOf": $schema .= '"subPropertyOf": ['; break; case Namespaces::$rdfs . "domain": $schema .= '"allowedType": ['; break; case Namespaces::$rdfs . "range": $schema .= '"allowedValue": ['; break; case Namespaces::$sco . "displayControl": $schema .= '"displayControl": ['; break; case Namespaces::$sco . "ignoredBy": $schema .= '"ignoredBy": ['; break; case Namespaces::$sco . "comparableWith": $schema .= '"comparableWith": ['; break; case Namespaces::$sco . "unitType": $schema .= '"unitType": ['; break; case Namespaces::$sco . "shortLabel": $schema .= '"shortLabel": ['; break; case Namespaces::$sco . "orderingValue": $schema .= '"orderingValue": ['; break; case Namespaces::$rdfs . "subPropertyOf": $schema .= '"subPropertyOf": ['; break; } foreach ($values as $value) { switch ($predicate) { case Namespaces::$sco . "minCardinality": $schema .= '"minCardinality": "' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "maxCardinality": $schema .= '"maxCardinality": "' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "cardinality": $schema .= '"cardinality": "' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$rdfs . "domain": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; case Namespaces::$rdfs . "range": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '{ "type": "' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '"},'; break; case Namespaces::$sco . "displayControl": if (isset($value["uri"])) { $displayControl = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $displayControl = $value["value"]; } $schema .= '"' . $this->ws->jsonEncode($displayControl) . '",'; break; case Namespaces::$sco . "ignoredBy": if (isset($value["uri"])) { $ignoredBy = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $ignoredBy = $value["value"]; } $schema .= '"' . $this->ws->jsonEncode($ignoredBy) . '",'; break; case Namespaces::$sco . "comparableWith": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; case Namespaces::$sco . "unitType": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; case Namespaces::$sco . "shortLabel": $schema .= '"' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "orderingValue": $schema .= '"' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$rdfs . "subPropertyOf": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; } } switch ($predicate) { case Namespaces::$rdfs . "domain": case Namespaces::$rdfs . "range": case Namespaces::$sco . "displayControl": case Namespaces::$sco . "ignoredBy": case Namespaces::$sco . "comparableWith": case Namespaces::$sco . "unitType": case Namespaces::$sco . "shortLabel": case Namespaces::$sco . "orderingValue": case Namespaces::$rdfs . "subPropertyOf": $schema = rtrim($schema, ","); $schema .= '],'; break; } } $schema = rtrim($schema, ","); $schema .= "},"; } $subjectTriples = $ontology->getPropertiesDescription(FALSE, FALSE, TRUE); foreach ($subjectTriples as $uri => $subject) { $this->manageIronPrefixes($uri, $prefixes); $schema .= '"' . $this->ironPrefixize($uri, $prefixes) . '": {'; $schema .= '"description": "' . $this->ws->jsonEncode($this->getDescription($subject)) . '",'; $schema .= '"prefLabel": "' . $this->ws->jsonEncode($this->getLabel($uri, $subject)) . '",'; $schema .= '"type": "' . Namespaces::$owl . 'AnnotationProperty",'; foreach ($subject as $predicate => $values) { switch ($predicate) { case Namespaces::$rdfs . "domain": $schema .= '"allowedType": ['; break; case Namespaces::$rdfs . "range": $schema .= '"allowedValue": ['; break; case Namespaces::$iron . "allowedValue": $schema .= '"allowedValue": {"primitive": "' . $this->ws->jsonEncode($value["value"]) . '"},'; break; case Namespaces::$rdfs . "subPropertyOf": $schema .= '"subPropertyOf": ['; break; case Namespaces::$sco . "displayControl": $schema .= '"displayControl": ['; break; case Namespaces::$sco . "ignoredBy": $schema .= '"ignoredBy": ['; break; case Namespaces::$sco . "comparableWith": $schema .= '"comparableWith": ['; break; case Namespaces::$sco . "unitType": $schema .= '"unitType": ['; break; case Namespaces::$sco . "shortLabel": $schema .= '"shortLabel": ['; break; case Namespaces::$sco . "orderingValue": $schema .= '"orderingValue": ['; break; case Namespaces::$rdfs . "subPropertyOf": $schema .= '"subPropertyOf": ['; break; } foreach ($values as $value) { switch ($predicate) { case Namespaces::$rdfs . "domain": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; case Namespaces::$rdfs . "range": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '{ "type": "' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '"},'; break; case Namespaces::$sco . "minCardinality": $schema .= '"minCardinality": "' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "maxCardinality": $schema .= '"maxCardinality": "' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "cardinality": $schema .= '"cardinality": "' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "displayControl": if (isset($value["uri"])) { $displayControl = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $displayControl = $value["value"]; } $schema .= '"' . $this->ws->jsonEncode($displayControl) . '",'; break; case Namespaces::$sco . "ignoredBy": if (isset($value["uri"])) { $ignoredBy = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $ignoredBy = $value["value"]; } $schema .= '"' . $this->ws->jsonEncode($ignoredBy) . '",'; break; case Namespaces::$sco . "comparableWith": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; case Namespaces::$sco . "unitType": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; case Namespaces::$sco . "shortLabel": $schema .= '"' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "orderingValue": $schema .= '"' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$rdfs . "subPropertyOf": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; } } switch ($predicate) { case Namespaces::$rdfs . "domain": case Namespaces::$rdfs . "range": case Namespaces::$sco . "displayControl": case Namespaces::$sco . "ignoredBy": case Namespaces::$sco . "comparableWith": case Namespaces::$sco . "unitType": case Namespaces::$sco . "shortLabel": case Namespaces::$sco . "orderingValue": case Namespaces::$rdfs . "subPropertyOf": $schema = rtrim($schema, ","); $schema .= '],'; break; } } $schema = rtrim($schema, ","); $schema .= "},"; } $subjectTriples = $ontology->getPropertiesDescription(FALSE, TRUE); foreach ($subjectTriples as $uri => $subject) { $this->manageIronPrefixes($uri, $prefixes); $schema .= '"' . $this->ironPrefixize($uri, $prefixes) . '": {'; $schema .= '"description": "' . $this->ws->jsonEncode($this->getDescription($subject)) . '",'; $schema .= '"prefLabel": "' . $this->ws->jsonEncode($this->getLabel($uri, $subject)) . '",'; $schema .= '"type": "' . Namespaces::$owl . 'ObjectProperty",'; foreach ($subject as $predicate => $values) { switch ($predicate) { case Namespaces::$rdfs . "domain": $schema .= '"allowedType": ['; break; case Namespaces::$rdfs . "range": $schema .= '"allowedValue": ['; break; case Namespaces::$sco . "displayControl": $schema .= '"displayControl": ['; break; case Namespaces::$sco . "ignoredBy": $schema .= '"ignoredBy": ['; break; case Namespaces::$sco . "comparableWith": $schema .= '"comparableWith": ['; break; case Namespaces::$sco . "unitType": $schema .= '"unitType": ['; break; case Namespaces::$sco . "shortLabel": $schema .= '"shortLabel": ['; break; case Namespaces::$sco . "orderingValue": $schema .= '"orderingValue": ['; break; case Namespaces::$rdfs . "subPropertyOf": $schema .= '"subPropertyOf": ['; break; } foreach ($values as $value) { switch ($predicate) { case Namespaces::$iron . "allowedValue": $schema .= '{"primitive": "' . $this->ws->jsonEncode($value["value"]) . '"},'; break; case Namespaces::$rdfs . "domain": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; case Namespaces::$rdfs . "range": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '{ "type": "' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '"},'; break; case Namespaces::$sco . "displayControl": if (isset($value["uri"])) { $displayControl = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $displayControl = $value["value"]; } $schema .= '"' . $this->ws->jsonEncode($displayControl) . '",'; break; case Namespaces::$sco . "ignoredBy": if (isset($value["uri"])) { $ignoredBy = substr($value["uri"], strripos($value["uri"], "#") + 1); } else { $ignoredBy = $value["value"]; } $schema .= '"' . $this->ws->jsonEncode($ignoredBy) . '",'; break; case Namespaces::$sco . "comparableWith": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; case Namespaces::$sco . "shortLabel": $schema .= '"' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$sco . "unitType": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; case Namespaces::$sco . "orderingValue": $schema .= '"' . $this->ws->jsonEncode($value["value"]) . '",'; break; case Namespaces::$rdfs . "subPropertyOf": $this->manageIronPrefixes($value["uri"], $prefixes); $schema .= '"' . $this->ws->jsonEncode($this->ironPrefixize($value["uri"], $prefixes)) . '",'; break; } } switch ($predicate) { case Namespaces::$rdfs . "domain": case Namespaces::$rdfs . "range": case Namespaces::$sco . "displayControl": case Namespaces::$sco . "ignoredBy": case Namespaces::$sco . "comparableWith": case Namespaces::$sco . "unitType": case Namespaces::$sco . "shortLabel": case Namespaces::$sco . "orderingValue": case Namespaces::$rdfs . "subPropertyOf": $schema = rtrim($schema, ","); $schema .= '],'; break; } } $schema = rtrim($schema, ","); $schema .= "},"; } $schema = rtrim($schema, ","); $schema .= "},"; $schema .= '"prefixList": {'; foreach ($prefixes as $prefix => $ns) { $schema .= " \"{$prefix}\": \"{$ns}\","; } $schema = rtrim($schema, ","); $schema .= "}"; $schema .= "}"; $schema .= "}"; $subjectTriples = ""; $subject = new Subject($this->ws->ontologyUri); $subject->setType("owl:Ontology"); $subject->setDataAttribute(Namespaces::$wsf . "serializedIronJSONSchema", $schema); $this->ws->rset->addSubject($subject); /* { "schema": { "version": "0.1", "typeList": { "bibo_ThesisDegree": { "description": "The academic degree of a Thesis", "prefLabel": "Thesis degree", "subTypeOf": [ "owl_Thing" ] }, "0_1_Agent": { "description": "No description available", "prefLabel": "Agent", "subTypeOf": [ "owl_Thing" ] }, "bibo_Event": { "description": "No description available", "prefLabel": "Event", "subTypeOf": [ "owl_Thing" ] } }, "attributeList": { "bibo_sici": { "description": "No description available", "prefLabel": "sici", "allowedValue": { "primitive": "String" }, "subPropertyOf": [ "bibo_identifier" ] }, "terms_rights": { "description": "No description available", "prefLabel": "rights", "subPropertyOf": [ "owl_topObjectProperty" ] }, "0_1_based_near": { "description": "No description available", "prefLabel": "based_near", "subPropertyOf": [ "owl_topObjectProperty" ] } }, "prefixList": { "bibo": "http://purl.org/ontology/bibo/", "owl": "http://www.w3.org/2002/07/owl#", "0_1": "http://xmlns.com/foaf/0.1/", "event_owl": "http://purl.org/NET/c4dm/event.owl#", "rdf_schema": "http://www.w3.org/2000/01/rdf-schema#", "22_rdf_syntax_ns": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "terms": "http://purl.org/dc/terms/", "basic": "http://prismstandard.org/namespaces/1.2/basic/", "schema": "http://schemas.talis.com/2005/address/schema#" } } } */ break; case "getproperty": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } $property = $ontology->_getProperty($this->ws->parameters["uri"]); if ($property == NULL) { $this->returnError(400, "Bad Request", "_204"); } else { $subject = new Subject($this->ws->parameters["uri"]); $subject->setSubject($ontology->_getPropertyDescription($property)); $this->ws->rset->addSubject($subject); } break; case "getproperties": $limit = -1; $offset = 0; if (isset($this->ws->parameters["limit"])) { $limit = $this->ws->parameters["limit"]; } if (isset($this->ws->parameters["offset"])) { $offset = $this->ws->parameters["offset"]; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": switch (strtolower($this->ws->parameters["type"])) { case "dataproperty": $properties = $ontology->getPropertiesUri(TRUE, FALSE, FALSE, $limit, $offset); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:DatatypeProperty"); $this->ws->rset->addSubject($subject); } break; case "objectproperty": $properties = $ontology->getPropertiesUri(FALSE, TRUE, FALSE, $limit, $offset); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:ObjectProperty"); $this->ws->rset->addSubject($subject); } break; case "annotationproperty": $properties = $ontology->getPropertiesUri(FALSE, FALSE, TRUE, $limit, $offset); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:AnnotationProperty"); $this->ws->rset->addSubject($subject); } break; default: $this->returnError(400, "Bad Request", "_203"); return; break; } break; case "descriptions": switch (strtolower($this->ws->parameters["type"])) { case "dataproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getPropertiesDescription(TRUE, FALSE, FALSE, $limit, $offset))); break; case "objectproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getPropertiesDescription(FALSE, TRUE, FALSE, $limit, $offset))); break; case "annotationproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getPropertiesDescription(FALSE, FALSE, TRUE, $limit, $offset))); break; case "all": // @TODO: property handle possible punned properties (properties that have the same URI but that are of different property types) $subjectTriples = array(); $subjectTriples = array_merge($subjectTriples, $ontology->getPropertiesDescription(TRUE, FALSE, FALSE, $limit, $offset)); $subjectTriples = array_merge($subjectTriples, $ontology->getPropertiesDescription(FALSE, TRUE, FALSE, $limit, $offset)); // Check if the annotatio properties got punned. If they did, then ignore returning the annotation property. $annotationProperties = $ontology->getPropertiesDescription(FALSE, FALSE, TRUE, $limit, $offset); foreach ($annotationProperties as $uri => $property) { if (!isset($subjectTriples[$uri])) { $subjectTriples[$uri] = $property; } } $this->ws->rset->setResultset(array($this->ws->ontologyUri => $subjectTriples)); break; default: $this->returnError(400, "Bad Request", "_203"); return; break; } break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; case "getsubproperties": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": switch (strtolower($this->ws->parameters["type"])) { case "dataproperty": $properties = $ontology->getSubPropertiesUri((string) $this->ws->parameters["uri"], $this->ws->parameters["direct"], TRUE); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:DatatypeProperty"); $this->ws->rset->addSubject($subject); } break; case "objectproperty": $properties = $ontology->getSubPropertiesUri((string) $this->ws->parameters["uri"], $this->ws->parameters["direct"], FALSE); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:ObjectProperty"); $this->ws->rset->addSubject($subject); } break; default: $this->returnError(400, "Bad Request", "_203"); return; break; } break; case "descriptions": switch (strtolower($this->ws->parameters["type"])) { case "dataproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getSubPropertiesDescription((string) $this->ws->parameters["uri"], $this->ws->parameters["direct"], TRUE))); break; case "objectproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getSubPropertiesDescription((string) $this->ws->parameters["uri"], $this->ws->parameters["direct"], FALSE))); break; default: $this->returnError(400, "Bad Request", "_203"); return; break; } break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; case "getsuperproperties": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": switch (strtolower($this->ws->parameters["type"])) { case "dataproperty": $properties = $ontology->getSuperPropertiesUri((string) $this->ws->parameters["uri"], $this->ws->parameters["direct"], TRUE); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:DatatypeProperty"); $this->ws->rset->addSubject($subject); } break; case "objectproperty": $properties = $ontology->getSuperPropertiesUri((string) $this->ws->parameters["uri"], $this->ws->parameters["direct"], FALSE); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:ObjectProperty"); $this->ws->rset->addSubject($subject); } break; default: $this->returnError(400, "Bad Request", "_203"); return; break; } break; case "descriptions": switch (strtolower($this->ws->parameters["type"])) { case "dataproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getSuperPropertiesDescription((string) $this->ws->parameters["uri"], $this->ws->parameters["direct"], TRUE))); break; case "objectproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getSuperPropertiesDescription((string) $this->ws->parameters["uri"], $this->ws->parameters["direct"], FALSE))); break; default: $this->returnError(400, "Bad Request", "_203"); return; break; } break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; case "getequivalentproperties": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": switch (strtolower($this->ws->parameters["type"])) { case "dataproperty": $properties = $ontology->getEquivalentPropertiesUri((string) $this->ws->parameters["uri"], TRUE); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:DatatypeProperty"); $this->ws->rset->addSubject($subject); } break; case "objectproperty": $properties = $ontology->getEquivalentPropertiesUri((string) $this->ws->parameters["uri"], FALSE); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:ObjectProperty"); $this->ws->rset->addSubject($subject); } break; default: $this->returnError(400, "Bad Request", "_203"); return; break; } break; case "descriptions": switch (strtolower($this->ws->parameters["type"])) { case "dataproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getEquivalentPropertiesDescription((string) $this->ws->parameters["uri"], TRUE))); break; case "objectproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getEquivalentPropertiesDescription((string) $this->ws->parameters["uri"], FALSE))); break; default: $this->returnError(400, "Bad Request", "_203"); return; break; } break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; case "getdisjointproperties": if (!isset($this->ws->parameters["uri"]) || $this->ws->parameters["uri"] == "") { $this->returnError(400, "Bad Request", "_202"); return; } switch (strtolower($this->ws->parameters["mode"])) { case "uris": switch (strtolower($this->ws->parameters["type"])) { case "dataproperty": $properties = $ontology->getDisjointPropertiesUri((string) $this->ws->parameters["uri"], TRUE); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:DatatypeProperty"); $this->ws->rset->addSubject($subject); } break; case "objectproperty": $properties = $ontology->getDisjointPropertiesUri((string) $this->ws->parameters["uri"], FALSE); foreach ($properties as $property) { $subject = new Subject($property); $subject->setType("owl:ObjectProperty"); $this->ws->rset->addSubject($subject); } break; default: $this->returnError(400, "Bad Request", "_203"); return; break; } break; case "descriptions": switch (strtolower($this->ws->parameters["type"])) { case "dataproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getDisjointPropertiesDescription((string) $this->ws->parameters["uri"], TRUE))); break; case "objectproperty": $this->ws->rset->setResultset(array($this->ws->ontologyUri => $ontology->getDisjointPropertiesDescription((string) $this->ws->parameters["uri"], FALSE))); break; default: $this->returnError(400, "Bad Request", "_203"); return; break; } break; default: $this->returnError(400, "Bad Request", "_201"); return; break; } break; default: $this->ws->conneg->setStatus(400); $this->ws->conneg->setStatusMsg("Bad Request"); $this->ws->conneg->setStatusMsgExt($this->ws->errorMessenger->_200->name); $this->ws->conneg->setError($this->ws->errorMessenger->_200->id, $this->ws->errorMessenger->ws, $this->ws->errorMessenger->_200->name, $this->ws->errorMessenger->_200->description, "This function is not defined\n for this endpoint:" . $this->ws->function, $this->ws->errorMessenger->_200->level); return; break; } } }