Beispiel #1
0
 function fetchTermDown($tema_id)
 {
     $sql = SQLverTerminosE($tema_id);
     while ($array = mysqli_fetch_array($sql[datos])) {
         $result["result"][$array[id_tema]] = array("term_id" => $array[id_tema], "string" => $array[tema], "relation_type_id" => $array[t_relacion], "hasMoreDown" => $array[id_te] ? 1 : 0);
     }
     return $result;
 }
 function fetchTermDown($tema_id)
 {
     $sql = SQLverTerminosE($tema_id);
     while ($array = $sql->FetchRow()) {
         $result["result"][$array[id_tema]] = array("term_id" => $array[id_tema], "string" => $array[tema], "isMetaTerm" => $array[isMetaTerm], "lang" => $array[idioma], "relation_type_id" => $array[t_relacion], "relation_type" => "NT", "relation_code" => $array[rr_code], "relation_label" => $array[rr_value], "hasMoreDown" => $array[id_te] ? 1 : 0);
     }
     return $result;
 }
Beispiel #3
0
function HTMLverTE($tema_id, $i_profundidad, $i = "")
{
    global $CFG;
    $sql = SQLverTerminosE($tema_id);
    $rows = '<ul id="masTE' . $tema_id . '" style="display: none">';
    //Contador de profundidad de TE desde la raíz
    $i_profundidad = ++$i_profundidad;
    //Contador de profundidad de TE desde el TE base
    $i = ++$i;
    while ($array = mysqli_fetch_array($sql[datos])) {
        if ($array[id_te]) {
            if ($i < CFG_MAX_TREE_DEEP) {
                $link_next = ' [<a href="javascript:expand(\'' . $array[id_tema] . '\')" title="' . LABEL_verDetalle . ' ' . $array[tema] . ' (' . TE_termino . ')" ><span id ="expandTE' . $array[id_tema] . '">+</span><span id ="contraeTE' . $array[id_tema] . '" style="display: none">~</span></a>]';
                $link_next .= HTMLverTE($array[id_tema], $i_profundidad, $i);
            } else {
                $link_next = '&nbsp;[<a title="' . LABEL_verDetalle . TE_termino . ' ' . $array[tema] . '" href="index.php?tema=' . $array[id_tema] . '">+</a>]';
            }
        } else {
            $link_next = '';
        }
        $rows .= '<li><acronym title="' . TE_termino . '" lang="' . LANG . '">' . TE_acronimo . $i_profundidad . '</acronym>  ';
        $rows .= ' <a title="' . LABEL_verDetalle . ' ' . $array[tema] . ' (' . TE_termino . ')"  href="index.php?tema=' . $array[id_tema] . '&amp;/' . string2url($array[tema]) . '">' . $array[tema] . '</a>' . $link_next . '</li>';
    }
    $rows .= '</ul>';
    return $rows;
}
function do_jsonld($tema_id)
{
    global $CFG;
    $ARRAYjson_relations = array("skos:narrower" => array(), "skos:broader" => array(), "skos:altLabel" => array(), "skos:hiddenLabel" => array(), "skos:related" => array());
    $_URI_BASE_ID = $CFG["_URI_BASE_ID"] ? $CFG["_URI_BASE_ID"] : $_SESSION["CFGURL"];
    /*
    Tomar URL por default
    *  Para que utilice URLs navegables:
    *  $_URI_SEPARATOR_ID = ($CFG["_URI_SEPARATOR_ID"]) ? $CFG["_URI_SEPARATOR_ID"] : '?tema=';
    * Para que utilice URLs Skos core
    */
    $_URI_SEPARATOR_ID = $CFG["_URI_SEPARATOR_ID"] ? $CFG["_URI_SEPARATOR_ID"] : 'xml.php?skosTema=';
    $datosTermino = ARRAYverDatosTermino($tema_id);
    if (!is_numeric($datosTermino["tema_id"])) {
        return null;
    }
    $SQLTerminosE = SQLverTerminosE($tema_id);
    while ($datosTerminosE = $SQLTerminosE->FetchRow()) {
        array_push($ARRAYjson_relations["skos:narrower"], $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datosTerminosE[id_tema]);
    }
    $SQLterminosRelacionados = SQLverTerminoRelaciones($tema_id);
    while ($datosTerminosRelacionados = $SQLterminosRelacionados->FetchRow()) {
        if ($datosTerminosRelacionados[t_relacion] == '2') {
            // TR
            array_push($ARRAYjson_relations["skos:related"], $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datosTerminosRelacionados[tema_id]);
        }
        if ($datosTerminosRelacionados[t_relacion] == '3') {
            // TG
            array_push($ARRAYjson_relations["skos:broader"], $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datosTerminosRelacionados[tema_id]);
        }
        if ($datosTerminosRelacionados[t_relacion] == '4') {
            // UF
            //HiddenLabel
            if (in_array($datosTerminosRelacionados[rr_code], $CFG["HIDDEN_EQ"])) {
                array_push($ARRAYjson_relations["skos:hiddenLabel"], array("language" => $_SESSION["CFGIdioma"], "value" => $datosTerminosRelacionados[tema]));
            } else {
                array_push($ARRAYjson_relations["skos:altLabel"], array("language" => $_SESSION["CFGIdioma"], "value" => $datosTerminosRelacionados[tema]));
            }
        }
    }
    $SQLtargetTerms = SQLtargetTerms($tema_id);
    $ARRAYjson_map = array();
    while ($datosTargetTerms = $SQLtargetTerms->FetchRow()) {
        $map_label = in_array(strtolower($datosTargetTerms[tvocab_tag]), array('exact', 'close', 'related', 'partial', 'broad', 'narrow')) ? strtolower($datosTargetTerms[tvocab_tag]) : 'exact';
        $skos_tag = 'skos:' . $map_label . 'Match';
        $ARRAYjson_map["{$skos_tag}"][] = array("@id" => $datosTargetTerms[tterm_url], "@type" => "skos:Concept", "skos:prefLabel" => array("@language" => $datosTargetTerms[tvocab_lang], "@value=" => $datosTargetTerms[tterm_string]));
    }
    $SQLURI2term = SQLURIxterm($tema_id);
    $ARRAYjson_URI = array();
    while ($datosURI2term = $SQLURI2term->FetchRow()) {
        if (in_array(strtolower($datosURI2term[uri_code]), array('exactmatch', 'closematch', 'relatedmatch', 'partialmatch', 'broadmatch', 'narrowmatch'))) {
            $ARRAYjson_URI["{$datosURI2term['uri_code']}"][] = array("@id" => $datosURI2term[uri], "@type" => "skos:Concept");
        }
    }
    $ARRAYjson_notes = array();
    for ($iNota = 0; $iNota < count($datosTermino[notas]); ++$iNota) {
        if ($datosTermino[notas][$iNota][id]) {
            switch ($datosTermino[notas][$iNota][tipoNota]) {
                case 'NH':
                    $ARRAYjson_notes["skos:historyNote"][] = array("@lang" => $datosTermino[notas][$iNota][lang_nota], "@value" => html2txt($datosTermino[notas][$iNota][nota]));
                    break;
                case 'NA':
                    $ARRAYjson_notes["skos:scopeNote"][] = array("@lang" => $datosTermino[notas][$iNota][lang_nota], "@value" => html2txt($datosTermino[notas][$iNota][nota]));
                    break;
                case 'DF':
                    $ARRAYjson_notes["skos:definition"][] = array("@lang" => $datosTermino[notas][$iNota][lang_nota], "@value" => html2txt($datosTermino[notas][$iNota][nota]));
                    break;
                case 'ED':
                    $ARRAYjson_notes["skos:editorialNote"][] = array("@lang" => $datosTermino[notas][$iNota][lang_nota], "@value" => html2txt($datosTermino[notas][$iNota][nota]));
                    break;
                case 'EX':
                    $ARRAYjson_notes["skos:example"][] = array("@lang" => $datosTermino[notas][$iNota][lang_nota], "@value" => html2txt($datosTermino[notas][$iNota][nota]));
                    break;
                case 'CH':
                    $ARRAYjson_notes["skos:changeNote"][] = array("@lang" => $datosTermino[notas][$iNota][lang_nota], "@value" => html2txt($datosTermino[notas][$iNota][nota]));
                    break;
                case 'NB':
                    $ARRAYjson_notes["skos:note"][] = array("@lang" => $datosTermino[notas][$iNota][lang_nota], "@value" => html2txt($datosTermino[notas][$iNota][nota]));
                    break;
            }
        }
    }
    $ARRAY_json = array("@context" => array("dc" => "http://purl.org/dc/elements/1.1/", "skos" => "http://www.w3.org/2004/02/skos/core#", "skos:broader" => array("@type" => "@id"), "skos:inScheme" => array("@type" => "@id"), "skos:related" => array("@type" => "@id"), "skos:narrower" => array("@type" => "@id"), "skos:hasTopConcept" => array("@type" => "@id"), "skos:topConceptOf" => array("@type" => "@id")), "@id" => $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datosTermino[idTema], "@type" => "skos:Concept", "skos:prefLabel" => array("@language" => $_SESSION["CFGIdioma"], "@value=" => xmlentities($datosTermino[titTema])), "skos:inScheme" => $_URI_BASE_ID, "dct:created" => $datosTermino[cuando]);
    if ($datosTermino[cuando_final]) {
        $ARRAY_json = array_merge($ARRAY_json, array("dct:modified" => $datosTermino[cuando_final]));
    }
    //Use or not term code / notation tag in Skos
    if ($CFG["_USE_CODE"] == '1' && strlen($datosTermino[code]) > 0) {
        $ARRAY_json = array_merge($ARRAY_json, array("skos:notation" => $datosTermino[code]));
    }
    //Unset empty array
    if (count($ARRAYjson_relations["skos:related"]) == 0) {
        unset($ARRAYjson_relations["skos:related"]);
    }
    if (count($ARRAYjson_relations["skos:broader"]) == 0) {
        unset($ARRAYjson_relations["skos:broader"]);
    }
    if (count($ARRAYjson_relations["skos:narrower"]) == 0) {
        unset($ARRAYjson_relations["skos:narrower"]);
    }
    if (count($ARRAYjson_relations["skos:altLabel"]) == 0) {
        unset($ARRAYjson_relations["skos:altLabel"]);
    }
    if (count($ARRAYjson_relations["skos:hiddenLabel"]) == 0) {
        unset($ARRAYjson_relations["skos:hiddenLabel"]);
    }
    return json_encode(array_merge($ARRAY_json, $ARRAYjson_notes, $ARRAYjson_relations, $ARRAYjson_map, $ARRAYjson_URI));
}
Beispiel #5
0
function TXTverTE($tema_id, $i_profundidad)
{
    global $CFG;
    $i_profundidad = ++$i_profundidad;
    $sql = SQLverTerminosE($tema_id);
    //Contador de profundidad de TE desde la raíz
    while ($array = mysqli_fetch_array($sql[datos])) {
        //calculo de sangría
        $sangria = '';
        for ($i = "1"; $i <= "{$i_profundidad}"; ++$i) {
            $sangria .= ' .' . "\t";
        }
        //si tiene TEs
        if ($array[id_te]) {
            $txt .= $sangria . $array[tema] . "\r\n";
            $txt .= TXTverTE($array[id_tema], $i_profundidad);
        } else {
            $txt .= $sangria . $array[tema] . "\r\n";
        }
    }
    return $txt;
}
Beispiel #6
0
function do_nodo_BS8723($tema_id)
{
    global $CFG;
    $_URI_BASE_ID = $CFG["_URI_BASE_ID"] ? $CFG["_URI_BASE_ID"] : $_SESSION["CFGURL"];
    /*
    Tomar URL por default
    *  Para que utilice URLs navegables:
    *  $_URI_SEPARATOR_ID = ($CFG["_URI_SEPARATOR_ID"]) ? $CFG["_URI_SEPARATOR_ID"] : '?tema=';
    * Para que utilice URLs Skos core
    */
    $_URI_SEPARATOR_ID = $CFG["_URI_SEPARATOR_ID"] ? $CFG["_URI_SEPARATOR_ID"] : 'xml.php?skosTema=';
    //Buscar datos del termino
    $datosTermino = ARRAYverDatosTermino($tema_id);
    //Términos específicos (NT) del término
    $SQLTerminosE = SQLverTerminosE($tema_id);
    //Otras relaciones del término (UF,RT, BT) del término
    $SQLterminosRelacionados = SQLverTerminoRelaciones($tema_id);
    //Nodos de NT
    while ($datosTerminosE = mysqli_fetch_array($SQLTerminosE[datos])) {
        $xmlnodosNT .= '<HasHierRelConcept Role="NT">' . $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datosTerminosE[id_tema] . '</HasHierRelConcept>';
    }
    //Nodos RT, BT y UF
    while ($datosTerminosRelacionados = mysqli_fetch_array($SQLterminosRelacionados[datos])) {
        switch ($datosTerminosRelacionados[t_relacion]) {
            case '2':
                //RT
                $xmlnodosRT .= '<HasRelatedConcept Role="RT">' . $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datosTerminosRelacionados[id] . '</HasRelatedConcept>';
                break;
            case '3':
                //BT
                $xmlnodosBT .= '<HasHierRelConcept Role="BT">' . $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datosTerminosRelacionados[id] . '</HasHierRelConcept>';
                break;
            case '4':
                //UF
                $xmlnodosUF .= '<NonPreferredTerm dc:identifier="' . $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datosTerminosRelacionados[id] . '" xml:lang="' . $_SESSION["CFGIdioma"] . '">';
                $xmlnodosUF .= '	<LexicalValue>' . xmlentities($datosTerminosRelacionados[tema]) . '</LexicalValue>';
                $xmlnodosUF .= '		<dcterms:created>' . $datoTerminosRelacionados[t1_cuando] . '</dcterms:created>';
                $xmlnodosUF .= '		<USE>' . $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datoTerminosRelacionados[tema_id] . '</USE>';
                $xmlnodosUF .= '</NonPreferredTerm>';
                break;
        }
    }
    //Notas
    for ($iNota = 0; $iNota < count($datosTermino[notas]); ++$iNota) {
        if ($datosTermino[notas][$iNota][id]) {
            switch ($datosTermino[notas][$iNota][tipoNota]) {
                case 'NH':
                    //HistoryNote
                    $xmlnodosNotas .= '<HistoryNote xml:lang="' . $datosTermino[notas][$iNota][lang_nota] . '">';
                    $xmlnodosNotas .= '  <LexicalValue>' . xmlentities($datosTermino[notas][$iNota][nota], true) . '</LexicalValue>';
                    $xmlnodosNotas .= '</HistoryNote>';
                    break;
                case 'NA':
                    //ScopeNote
                    $xmlnodosNotas .= '<ScopeNote xml:lang="' . $datosTermino[notas][$iNota][lang_nota] . '">';
                    $xmlnodosNotas .= '  <LexicalValue>' . xmlentities($datosTermino[notas][$iNota][nota], true) . '</LexicalValue>';
                    $xmlnodosNotas .= '</ScopeNote>';
                    break;
            }
        }
    }
    //Nodo del término
    $xmlnodoTermino .= '<PreferredTerm dc:identifier="' . $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datosTermino[idTema] . '" xml:lang="' . $_SESSION["CFGIdioma"] . '">';
    $xmlnodoTermino .= '	<LexicalValue>' . xmlentities($datosTermino[titTema]) . '</LexicalValue>';
    $xmlnodoTermino .= '	<dcterms:created>' . $datosTermino[cuando] . '</dcterms:created>';
    if ($datosTermino[cuando_final]) {
        $xmlnodoTermino .= '	<dcterms:modified>' . $datosTermino[cuando_final] . '</dcterms:modified>';
    }
    $xmlnodoTermino .= '</PreferredTerm>';
    //Armado del nodo del concepto
    $xmlnodo = '<ThesaurusConcept dc:identifier="' . $_URI_BASE_ID . $_URI_SEPARATOR_ID . $datosTermino[idTema] . '">';
    $xmlnodo .= '	<dcterms:created>' . $datosTermino[cuando] . '</dcterms:created>';
    if ($datosTermino[cuando_final]) {
        $xmlnodo .= '	<dcterms:modified>' . $datosTermino[cuando_final] . '</dcterms:modified>';
    }
    $xmlnodo .= $xmlnodoTermino;
    $xmlnodo .= $xmlnodosNotas;
    $xmlnodo .= $xmlnodosUF;
    $xmlnodo .= $xmlnodosBT;
    $xmlnodo .= $xmlnodosNT;
    $xmlnodo .= $xmlnodosRT;
    $xmlnodo .= '</ThesaurusConcept>';
    return $xmlnodo;
}
function getData4jtree($term_id = 0)
{
    global $CFG;
    if (is_numeric($term_id)) {
        # display narrower terms
        $sql = SQLverTerminosE($term_id);
    } elseif ($term_id == 'TT') {
        # display top terms
        $sql = SQLverTopTerm();
    } else {
        return;
    }
    $arrayResponse = array();
    while ($array = $sql->FetchRow()) {
        //there are NT?
        $load_on_demand = $array["id_te"] == 0 ? false : true;
        //is top terms
        $load_on_demand = $term_id == 0 ? true : $load_on_demand;
        if ($_SESSION[$_SESSION["CFGURL"]][ssuser_id] && $CFG["_USE_CODE"] == '1') {
            $pre_link = ' ' . $array["code"] . ' ';
        } elseif ($CFG["_SHOW_CODE"] == '1') {
            $pre_link = ' ' . $array["code"] . ' ';
        } else {
            $pre_link = '	';
        }
        $css_class_MT = $array["isMetaTerm"] == 1 ? ' class="metaTerm" ' : '';
        $link = '<h3 class="TT">' . $pre_link . '<a ' . $css_class_MT . ' title="' . LABEL_verDetalle . $array[tema] . '" href="index.php?tema=' . $array[tema_id] . '">' . $array[tema] . '</a></h3>';
        array_push($arrayResponse, array("label" => "{$link}", "id" => "{$array['tema_id']}", "load_on_demand" => $load_on_demand));
    }
    return json_encode($arrayResponse);
}