As instruções indicadas nesse documento são baseadas na wiki da ferramenta Skosmos, então para mais informação acesse-a aqui. Esse tutorial foi baseado em distribuições baseadas em Debian.
Atualize os pacotes:
sudo apt update && sudo apt upgrade
Um dos pré-requisitos para o Fuseki é o Java 11 ou superior, para isso é necessário apenas o Java Runtime Environment (JRE), mas o Java Development Kit (JDK) também pode ser utilizado.
A partir da versão 5.0.0 do Fuseki é necessário instalar a versão 17 do Java devido a incompatibilidades.
sudo apt install default-jre-headless
Caso exista mais de uma versão do Java rodando na máquina pode se listar e definir a versão desejada para tal, uma vez que é necessário estar com a versão 11 ou superior do Java. Pode ser usado os comando para listar as opções disponíveis com a flag --list
ou apenas-l
, logo após usando a flag --set
pode se definir a versão que será utilizada como padrão.
sudo update-java-alternatives -l
sudo update-java-alternatives --set java-1.11.0-openjdk-amd64
Feito o processo de instalação do Java podemos instalar o Fuseki.
Note que é possível encontrar os arquivos de instalação do Fuseki neste link. Escolhido o arquivo da versão que deseja fazer o download, copie o link e utilize o utilitário wget
para fazer o download.
Visite a página de downloads e capture o link dela: https://jena.apache.org/download/
cd ~
wget https://archive.apache.org/dist/jena/binaries/apache-jena-fuseki-<versão>.tar.gz
Como no Debian do servidor não existia o wget utilizou-se o curl
:
curl -o fuseki https://archive.apache.org/dist/jena/binaries/apache-jena-fuseki-4.9.0.tar.gz
tar xvf fuseki
Após isso é necessário realizar a instalação descompactando os arquivos baixados e criando um link simbólico. Isso deve ser feito dentro do diretório /opt
, por esse motivo foi usando o comando change directory cd
.
cd /opt
sudo tar xzf ~/apache-jena-fuseki-<versão>.tar.gz
sudo ln -s apache-jena-fuseki-<versão> fuseki
Verificando se tudo corretamente instalando:
cd /opt/fuseki/
./fuseki-server --help
./fuseki-server --version
Para o correto funcionamento e maior segurança é necessário criar um usuário comum denominado fuseki
sudo adduser --system --home /opt/fuseki --no-create-home fuseki
/opt/fuseki
/var/lib/fuseki
/var/log/fuseki
/etc/fuseki
# diretórios de banco de dados
cd /var/lib
sudo mkdir -p fuseki/{backups,databases,system,system_files}
sudo chown -R fuseki fuseki
# logs
cd /var/log
sudo mkdir fuseki
sudo chown fuseki fuseki
# configs
cd /etc
sudo mkdir fuseki
sudo chown fuseki fuseki
#link simbólico
cd /etc/fuseki
sudo ln -s /var/lib/fuseki/* .
sudo ln -s /var/log/fuseki logs
sudo nano /etc/systemd/system/fuseki.service
Insira nesse arquivo:
[Unit]
Description=Fuseki
[Service]
Environment=FUSEKI_HOME=/opt/fuseki
Environment=FUSEKI_BASE=/etc/fuseki
Environment=JVM_ARGS=-Xmx2G
User=fuseki
ExecStart=/opt/fuseki/fuseki-server
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
O argumento
Environment=JVM_ARGS=-Xmx1G
define o consumo de memória da JVM Após isso:
sudo systemctl start fuseki
sudo systemctl status fuseki
Se ao rodar status
não for iniciado corretamente verifique a situação usando:
cat /var/log/fuseki/stderrout.log
sudo journalctl -xe
Sendo tudo correto:
sudo systemctl enable fuseki
O retorno deve ser similar a esse: `Created symlink /etc/systemd/system/multi-user.target.wants/fuseki.service → /etc/systemd/system/fuseki.service.
Note that if you are running Fuseki within a VirtualBox VM and want to use the browser from the host machine, a port forwarding rule needs to be added to the VirtualBox settings (Network -> Port Forwarding…). The rule is: Name=”fuseki”, Protocol=”TCP”, Host Port=”3030”, Guest Port=”3030”, other fields can be left blank. Confirm with OK. This can be done also while the VM is running. You will also need to tell Fuseki to allow management operations for non-localhost access by commenting out the line /$/** = anon
in the security configuration /etc/fuseki/shiro.ini
and restarting Fuseki. Note that this is potentially dangerous if you open up Fuseki URLs to the world, since anyone will then be able to manage your datasets.
Tudo certo acesse: http://localhost:3030/
No painel do fuseki faça:
curl --data "dbName=skosmos&dbType=tdb2" http://localhost:3030/$/datasets
If you get no error, the operation was successful. To verify, you can check that the directory /var/lib/fuseki/databases/skosmos/
exists.
sudo service fuseki stop
sudo nano /etc/fuseki/configuration/skosmos.ttl
Dentro de skosmos.ttl copie:
@prefix : <http://base/#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix tdb2: <http://jena.apache.org/2016/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .
@prefix text: <http://jena.apache.org/text#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
ja:DatasetTxnMem rdfs:subClassOf ja:RDFDataset .
ja:MemoryDataset rdfs:subClassOf ja:RDFDataset .
ja:RDFDatasetOne rdfs:subClassOf ja:RDFDataset .
ja:RDFDatasetSink rdfs:subClassOf ja:RDFDataset .
ja:RDFDatasetZero rdfs:subClassOf ja:RDFDataset .
tdb2:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb2:DatasetTDB2 rdfs:subClassOf ja:RDFDataset .
tdb2:GraphTDB rdfs:subClassOf ja:Model .
tdb2:GraphTDB2 rdfs:subClassOf ja:Model .
<http://jena.hpl.hp.com/2008/tdb#DatasetTDB>
rdfs:subClassOf ja:RDFDataset .
<http://jena.hpl.hp.com/2008/tdb#GraphTDB>
rdfs:subClassOf ja:Model .
text:TextDataset
rdfs:subClassOf ja:RDFDataset .
:service_tdb_all a fuseki:Service ;
rdfs:label "TDB2+text skosmos" ;
fuseki:dataset :text_dataset ;
fuseki:name "skosmos" ;
fuseki:serviceQuery "query" , "" , "sparql" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadQuads "" ;
fuseki:serviceReadWriteGraphStore "data" ;
fuseki:serviceReadWriteQuads "" ;
fuseki:serviceUpdate "" , "update" ;
fuseki:serviceUpload "upload" .
:text_dataset a text:TextDataset ;
text:dataset :tdb_dataset_readwrite ;
text:index :index_lucene .
:tdb_dataset_readwrite
a tdb2:DatasetTDB2 ;
# tdb2:unionDefaultGraph true ;
tdb2:location "/etc/fuseki/databases/skosmos" .
:index_lucene a text:TextIndexLucene ;
text:directory <file:/etc/fuseki/databases/skosmos/text> ;
text:entityMap :entity_map ;
text:storeValues true .
# Text index configuration for Skosmos
:entity_map a text:EntityMap ;
text:entityField "uri" ;
text:graphField "graph" ;
text:defaultField "pref" ;
text:uidField "uid" ;
text:langField "lang" ;
text:map (
# skos:prefLabel
[ text:field "pref" ;
text:predicate skos:prefLabel ;
text:analyzer [ a text:LowerCaseKeywordAnalyzer ]
]
# skos:altLabel
[ text:field "alt" ;
text:predicate skos:altLabel ;
text:analyzer [ a text:LowerCaseKeywordAnalyzer ]
]
# skos:hiddenLabel
[ text:field "hidden" ;
text:predicate skos:hiddenLabel ;
text:analyzer [ a text:LowerCaseKeywordAnalyzer ]
]
# skos:notation
[ text:field "notation" ;
text:predicate skos:notation ;
text:analyzer [ a text:LowerCaseKeywordAnalyzer ]
]
) .
Então:
sudo service fuseki start
Se tudo correr bem, isso criará um índice de jena-text Lucene em /var/lib/fuseki/databases/skosmos/text
, ou seja, como um subdiretório do banco de dados TDB ao qual ele está vinculado.
É necessário instalar o Apache2, PHP e bibliotecas necessárias:
sudo apt install apache2 php7.4 libapache2-mod-php7.4 php7.4 php7.4-xsl php7.4-intl php7.4-mbstring php7.4-curl
Acesse: http://localhost
Se não estiver funcionando use:
sudo service apache2 start
sudo systemctl enable apache2
Edite as configurações do apache através de:
sudo nano /etc/apache2/sites-enabled/000-default.conf
Dentro de <VirtualHost *:80>
insira:
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Você também deve ativar os módulos Apache requerido pelo SKOSMOS:
sudo a2enmod rewrite
sudo a2enmod expires
sudo service apache2 restart
A sequência de códigos abaixo instala a versão 2.17 do SKOSMOS disponível no repositório oficial dentro da pasta /srv/
, também instala as dependências necessárias com o composer.
Note que se houver mensagem de erro siga as instruções indicadas.
cd /srv sudo mkdir Skosmos sudo chown `whoami` Skosmos sudo apt install git git clone -b v2.17-maintenance https://github.com/NatLibFi/Skosmos.git /srv/Skosmos cd /srv/Skosmos/ curl -sS https://getcomposer.org/installer | php php composer.phar install --no-dev sudo ln -s /srv/Skosmos /var/www/html/Skosmos
No arquivo config.ttl
da pasta /srv/Skosmos
deve passar a conter o arquivo de configuração, para mais detalhes sobre as definições utilizadas leia a documentação de configuração .
nano config.ttl
Caminho base: O caminho base deve ser adequar ao seu sistema, se estiver usando localhost
mantenha-o assim, mas se estiver utilizando em um servidor ele deve ser adequar ao caminho real, indicando o domínio público e se há ou não certificado (https
). Também pode editar o nome do serviço usando conforme sua necessidade.
skosmos:serviceName "Skosmos" ;
skosmos:baseHref "http://localhost/Skosmos/" .
Algumas das personalizações realizadas no sistema Input-LASeD:
:tbcc a skosmos:Vocabulary, void:dataset ;
dc:title "Tesauro Brasileiro de Ciência da Computação"@pt;
skosmos:shortName "TBCC" ;
dc:subject :cat_general ;
dc:type mdrtype:THESAURUS ;
void:uriSpace "http://lod.unicentro.br/sparql" ;
skosmos:language "en", "es", "pt" ;
skosmos:defaultLanguage "pt" ;
skosmos:showTopConcepts true ;
skosmos:fullAlphabeticalIndex true ;
skosmos:groupClass isothes:ConceptGroup ;
void:sparqlEndpoint <http://localhost:3030/skosmos/sparql> ;
skosmos:sparqlGraph <http://lod.unicentro.br/2017/DiretrizesSBC> .
:categories a skos:ConceptScheme;
skos:prefLabel "Skosmos Vocabulary Categories"@en, "Categorias Skosmos"@pt
.
:cat_general a skos:Concept ;
skos:topConceptOf :categories ;
skos:inScheme :categories ;
skos:prefLabel "Ciência da Computação"@pt,
"Computer Sciences"@en
.
No caso de uso do Docker deve ser repassada a seguinte configuração:
:tbcc a skosmos:Vocabulary, void:dataset ;
dc:title "Tesauro Brasileiro de Ciência da Computação"@pt,
"Brazillian Thesaurus of Computer Science"@en;
skosmos:shortName "tbcc" ;
dc:subject :cat_general ;
dc:type mdrtype:THESAURUS ;
void:uriSpace "http://lod.unicentro.br/sparql" ;
skosmos:language "en", "es", "pt" ;
skosmos:defaultLanguage "pt" ;
skosmos:showTopConcepts true ;
skosmos:fullAlphabeticalIndex true ;
skosmos:groupClass isothes:ConceptGroup ;
void:sparqlEndpoint <http://fuseki-cache:80/skosmos/sparql>;
skosmos:sparqlGraph <http://lod.unicentro.br/2017/DiretrizesSBC> .
É necessário adicionar a tag sparqlGraph pois dermos POST na página do fuseki será realizada a procurado esse grafo. È necessário mudar para localhost 3030 se estiver fazendo sem docker compose
curl -I -X POST -H Content-Type:text/turtle -T ~/tesaurobrasileirocc.ttl -G http://localhost:9030/skosmos/data --data-urlencode graph=http://lod.unicentro.br/2017/DiretrizesSBC
Salve e instale o suporte as linguagens definidas:
sudo apt install gettext
sudo locale-gen en_GB.utf8
sudo locale-gen es_ES.utf8
sudo locale-gen pt_BR.utf8
Restarte o Apache
sudo service apache2 restart
Então acesse: http://localhost/Skosmos/
Se deseja realizar mudanças no front-end acesse a pasta view
, dentro dela haverá os arquivos twig referentes as paginas. Além disso você pode editar os textos nos arquivos .inc
que contém templates por padrão.