function getSubClassAndProperty($ontology_uri, &$results, $tmp_iri) { global $ns_rdf, $ns_rdfs, $ns_owl, $num_queries, $processed_iris, $included_iris, $parent_included_iris, $strOutput; $querystring = "\r\nPREFIX rdf: <{$ns_rdf}>\r\nPREFIX rdfs: <{$ns_rdfs}>\r\nPREFIX owl: <{$ns_owl}>\r\n\r\nSELECT DISTINCT *\r\n\r\nFROM <{$ontology_uri}>\r\n\t\r\nWHERE { \r\n\t{\r\n\t\t?s rdfs:subClassOf <{$tmp_iri}> .\r\n\t\t?s rdfs:label ?o\r\n\t}\r\n\tUNION\r\n\t{\r\n\t\t?s owl:equivalentClass ?s1 .\r\n\t\t?s1 owl:intersectionOf ?s2 .\r\n\t\t?s2 rdf:first <{$tmp_iri}> .\r\n\t\t?s rdfs:label ?o\r\n\t}\r\n}"; $tmp_results = json_query($querystring); $num_queries++; if (!empty($tmp_results)) { foreach ($tmp_results as $tmp_result) { $tmp_iri0 = $tmp_result['s']; if (!isset($processed_iris[$tmp_iri0]) && !isset($included_iris[$tmp_iri0]) && !iriImported($tmp_iri0)) { $strOutput .= "\r\n<rdf:Description rdf:about=\"{$tmp_iri0}\">\r\n\t\t\t<rdfs:subClassOf rdf:resource=\"{$tmp_iri}\"/>\r\n\t\t </rdf:Description>\r\n"; $results[$tmp_iri0] = $tmp_result['o']; getSubClassAndProperty($ontology_uri, $results, $tmp_iri0); } } } $querystring = "\r\nPREFIX rdf: <{$ns_rdf}>\r\nPREFIX rdfs: <{$ns_rdfs}>\r\nPREFIX owl: <{$ns_owl}>\r\n\r\nSELECT DISTINCT *\r\n\r\nFROM <{$ontology_uri}>\r\n\t\r\nWHERE { \r\n\t{\r\n\t\t?s rdfs:subPropertyOf <{$tmp_iri}> .\r\n\t\t?s rdfs:label ?o\r\n\t}\r\n\tUNION\r\n\t{\r\n\t\t?s owl:equivalentProperty ?s1 .\r\n\t\t?s1 owl:intersectionOf ?s2 .\r\n\t\t?s2 rdf:first <{$tmp_iri}> .\r\n\t\t?s rdfs:label ?o\r\n\t}\r\n}"; $tmp_results = json_query($querystring); $num_queries++; if (!empty($tmp_results)) { foreach ($tmp_results as $tmp_result) { $tmp_iri0 = $tmp_result['s']; if (!isset($processed_iris[$tmp_iri0]) && !isset($included_iris[$tmp_iri0]) && !iriImported($tmp_iri0)) { $strOutput .= "\r\n<rdf:Description rdf:about=\"{$tmp_iri0}\">\r\n\t\t\t<rdfs:subPropertyOf rdf:resource=\"{$tmp_iri}\"/>\r\n\t\t </rdf:Description>\r\n"; $results[$tmp_iri0] = $tmp_result['o']; getSubClassAndProperty($ontology_uri, $results, $tmp_iri0); } } } }
} } } } $imported_ontologies = array(); $settings['remote_store_endpoint'] = $server_import; $num_queries = 0; $unprocessed_iris = array(); $processed_iris = array(); //print_r($parent_included_iris); if ($extractBranch) { foreach ($parent_included_iris as $import_term => $tmpLabel) { $terms_to_keep[$import_term] = 1; if (!isset($processed_iris[$import_term]) && !isset($included_iris[$import_term])) { $results = array($import_term => 'NA'); getSubClassAndProperty($ontology_uri, $results, $import_term); foreach ($results as $term_iri => $term_label) { if (!isset($processed_iris[$term_iri])) { $unprocessed_iris[$term_iri] = $term_label; } } } } } else { //process term URIs to be imported and get super classes/properties. $lines = preg_split('/[\\r\\n]+/', trim($term_iris)); foreach ($lines as $line) { if (strpos($line, '#') === 0) { //ignore comments } else { if (strpos($line, ' #') !== false) {