Skip to content

Latest commit

 

History

History
527 lines (440 loc) · 38.5 KB

ExecucaoTutoriaisJena.md

File metadata and controls

527 lines (440 loc) · 38.5 KB

Execução dos tutoriais de Jena.

estado do documento: concluído, não pretendo fazer atualizações.

Objetivo

Compilar e executar os tutoriais de código: https://jena.apache.org/tutorials/rdf_api.html

nota: as explicações sobre cada tutorial são apresentadas na respectiva página do tutorial.

Método

A fim de não modificar os exemplos recebidos junto com Jena, copiei todos os 11 exemplos para um novo diretório. Para não misturar arquivos relativos a cada exemplo, crio um sub-diretório para cada exemplo, movo o código-fonte, compilo e, se necessário, acrescento os arquivos de dados. Para vários exemplos os arquivos de dados são iguais. Há multiplicação de arquivos de dados idênticos, mas acho que não é grande prejuízo.

nota: Os códigos-fonte contém a linha package jena.examples.rdf ;. Caso ela seja mantida, informa que o código pertence a um pacote (que corresponde a uma hierarquia de diretórios). A compilação precisa ser algo como javac jena/examples/rdf/TutorialX.java e a execução java jena/examples/rdf/TutorialX.

Resultados

Tutorial 1

Pasta com código-fonte

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial1$ javac -cp /home/fabio/apache-jena-3.17.0/lib  Tutorial01.java 
Tutorial01.java:21: error: package org.apache.jena.rdf.model does not exist
import org.apache.jena.rdf.model.*;
^
Tutorial01.java:22: error: package org.apache.jena.vocabulary does not exist
import org.apache.jena.vocabulary.*;
^
Tutorial01.java:34: error: cannot find symbol
        Model model = ModelFactory.createDefaultModel();
        ^
  symbol:   class Model
  location: class Tutorial01
Tutorial01.java:34: error: cannot find symbol
        Model model = ModelFactory.createDefaultModel();
                      ^
  symbol:   variable ModelFactory
  location: class Tutorial01
Tutorial01.java:37: error: cannot find symbol
       Resource johnSmith = model.createResource(personURI);
       ^
  symbol:   class Resource
  location: class Tutorial01
Tutorial01.java:40: error: cannot find symbol
      johnSmith.addProperty(VCARD.FN, fullName);
                            ^
  symbol:   variable VCARD
  location: class Tutorial01
6 errors
fabio@fabio-13Z940-G-BK7

comando para compilação que funcionou: javac -cp '/home/fabio/apache-jena-3.17.0/lib/*' Tutorial01.java mas falha para executar veja os comandos aqui.

Como cheguei a esse comando: Achei esta referência:https://info.sice.indiana.edu/~dingying/Teaching/Z636/Slides/InstallJena.txt

Referências que não resolveram:

http://www.inf.ed.ac.uk/teaching/courses/masws/Coding/build/html/jena.html http://www-inf.it-sudparis.eu/~gaaloulw/KM/courses/6-Course_KM_Jena.pdf

Para (tentar) executar:

Comentei a linha: package jena.examples.rdf ; para não precisar colocar este código dentro de um pacote.

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial1$ javac -cp '/home/fabio/apache-jena-3.17.0/lib/*'  Tutorial01.java 
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial1$ java -cp '/home/fabio/apache-jena-3.17.0/lib/*' Tutorial01
Erro: Não foi possível localizar nem carregar a classe principal Tutorial01
Causada por: java.lang.ClassNotFoundException: Tutorial01
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial1$ java  Tutorial01
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/jena/rdf/model/ModelFactory
	at Tutorial01.main(Tutorial01.java:34)
Caused by: java.lang.ClassNotFoundException: org.apache.jena.rdf.model.ModelFactory
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 1 more
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial1$ java -cp '/home/fabio/apache-jena-3.17.0/lib/*' Tutorial01
Erro: Não foi possível localizar nem carregar a classe principal Tutorial01
Causada por: java.lang.ClassNotFoundException: Tutorial01
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial1$ cat Tutorial01.java 

Para (tentar) executar dentro do pacote:

fabio@fabio-13Z940-G-BK71P1:~/apache-jena-3.17.0/src-examples$ javac -cp '/home/fabio/apache-jena-3.17.0/lib/*'  jena/examples/rdf/Tutorial01.java 
fabio@fabio-13Z940-G-BK71P1:~/apache-jena-3.17.0/src-examples$ ls
arq  data  jena  jena-examples  tdb
fabio@fabio-13Z940-G-BK71P1:~/apache-jena-3.17.0/src-examples$ find . -name *.class
./jena/examples/rdf/Tutorial01.class
fabio@fabio-13Z940-G-BK71P1:~/apache-jena-3.17.0/src-examples$ java -cp '/home/fabio/apache-jena-3.17.0/lib/*'  jena/examples/rdf/Tutorial01
Erro: Não foi possível localizar nem carregar a classe principal jena.examples.rdf.Tutorial01
Causada por: java.lang.ClassNotFoundException: jena.examples.rdf.Tutorial01
fabio@fabio-13Z940-G-BK71P1:~/apache-jena-3.17.0/src-examples$ java  jena/examples/rdf/Tutorial01
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/jena/rdf/model/ModelFactory
	at jena.examples.rdf.Tutorial01.main(Tutorial01.java:34)
Caused by: java.lang.ClassNotFoundException: org.apache.jena.rdf.model.ModelFactory
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 1 more
fabio@fabio-13Z940-G-BK71P1:~/apache-jena-3.17.0/src-examples$ 

Achei um post que reporta um problema parecido: https://stackoverflow.com/questions/49949842/how-do-i-interact-with-apache-jena-locally-macos, mas a solução é incluir um classpath. Acho que fiz algo equivalente com -cp. O link para o exemplo completo dá num blog: https://henrietteharmse.com/2018/04/10/creating-writing-and-reading-jena-tdb2-datasets/

Achei uma apresentação https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjT4-rlhMftAhXBE7kGHSwPBAcQFjAEegQIDRAC&url=https%3A%2F%2Finfo.sice.indiana.edu%2F~dingying%2FTeaching%2FZ636%2FSlides%2FJenaRDFAPI.ppt&usg=AOvVaw1ILc8VfjCZqjsB_w6tV_kK que baixei localmente. Talvez a idéia de colocar asterisco no -cp não seja muito boa...

Consegui resolver.

abio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial1$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial01.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial1$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial01
Minha mensagem.
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial1$  

Comandos para compilar e executar

Minha interpretação: quando uso -cp, informo para procurar as classes em algum diretório. Como informei, sobrescrevo a informação do classpath padrão para a execução. Padrão que acredito que seja buscar no diretório corrente. Caso eu não inclua o diretório corrente no classpath, a máquina virtual não busca no diretório corrente, que é onde está a classe que acabei de compilar. Isto gera um class not found para a classe que está na pasta corrente. Isto se corrige incluindo a pasta corrente no classpath. Acho que eu não preciso fazer isso para compilação quando tenho um arquivo só, mas acho que não causa erro se eu incluir na compilação também. Então os comandos de compilação e execução ficam:

javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial01.java

java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial01

Acho também que esta string (só) funciona em Linux. Em Windows talvez seja "só" trocar o colon (:) por semicolon (;), mas pode ser mais complicado.

Da primeira vez que fiz, como o código não escreve nada na tela, fiquei meio em dúvida se executou algo (hipótese de mundo aberto: pode existir algo que eu não sei e que faz esse comando não executar o programa e não dar mensagem de erro), então inseri um System.out.println.

Tutorial 2

Pasta com código-fonte

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial2$ ls
Tutorial02.class  Tutorial02.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial2$ rm Tutorial02.class
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial2$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial02.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial2$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial02
Erro: Não foi possível localizar nem carregar a classe principal Tutorial02
Causada por: java.lang.NoClassDefFoundError: jena/examples/rdf/Tutorial02 (wrong name: Tutorial02)
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial2$ ls
Tutorial02.class  Tutorial02.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial2$ gedit Tutorial02.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial2$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial02.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial2$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial02
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial2$ cat Tutorial02.java 

Tutorial 3

Pasta com código-fonte

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial3$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial03.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial3$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial03
http://somewhere/JohnSmith http://www.w3.org/2001/vcard-rdf/3.0#N 5190b8a4-c1b5-4b46-bb7d-a6e9b8ff8dc5 .
http://somewhere/JohnSmith http://www.w3.org/2001/vcard-rdf/3.0#FN  "John Smith" .
5190b8a4-c1b5-4b46-bb7d-a6e9b8ff8dc5 http://www.w3.org/2001/vcard-rdf/3.0#Family  "Smith" .
5190b8a4-c1b5-4b46-bb7d-a6e9b8ff8dc5 http://www.w3.org/2001/vcard-rdf/3.0#Given  "John" .
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial3$  

Tutorial 4

Pasta com código-fonte

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mkdir Tutorial4
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mv Tutorial04.java Tutorial4
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ cd Tutorial4
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial4$ ls
Tutorial04.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial4$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial04.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial4$ gedit Tutorial04.java 
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial4$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial04.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial4$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial04
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:vcard="http://www.w3.org/2001/vcard-rdf/3.0#">
  <rdf:Description rdf:about="http://somewhere/JohnSmith">
    <vcard:N rdf:parseType="Resource">
      <vcard:Family>Smith</vcard:Family>
      <vcard:Given>John</vcard:Given>
    </vcard:N>
    <vcard:FN>John Smith</vcard:FN>
  </rdf:Description>
</rdf:RDF>
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial4$  

Tutorial 5

Pasta com código-fonte

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mkdir Tutorial5
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mv Tutorial05.java Tutorial5
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ cd Tutorial5
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial5$ ls
Tutorial05.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial5$ gedit Tutorial05.java 
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial5$ 
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial5$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial05.java
Note: Tutorial05.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial5$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' -Xlint Tutorial05.java
Tutorial05.java:42: warning: [deprecation] get() in FileManager has been deprecated
        InputStream in = FileManager.get().open( inputFileName );
                                    ^
1 warning
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial5$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial05
Exception in thread "main" java.lang.IllegalArgumentException: File: vc-db-1.rdf not found
	at Tutorial05.main(Tutorial05.java:44)
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial5$ cp ../../vc-db-1.rdf .
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial5$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial05
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
  <rdf:Description rdf:about="http://somewhere/SarahJones">
    <vCard:N rdf:parseType="Resource">
      <vCard:Given>Sarah</vCard:Given>
      <vCard:Family>Jones</vCard:Family>
    </vCard:N>
    <vCard:FN>Sarah Jones</vCard:FN>
  </rdf:Description>
  <rdf:Description rdf:about="http://somewhere/JohnSmith">
    <vCard:N rdf:parseType="Resource">
      <vCard:Given>John</vCard:Given>
      <vCard:Family>Smith</vCard:Family>
    </vCard:N>
    <vCard:FN>John Smith</vCard:FN>
  </rdf:Description>
  <rdf:Description rdf:about="http://somewhere/MattJones">
    <vCard:N rdf:parseType="Resource">
      <vCard:Given>Matthew</vCard:Given>
      <vCard:Family>Jones</vCard:Family>
    </vCard:N>
    <vCard:FN>Matt Jones</vCard:FN>
  </rdf:Description>
  <rdf:Description rdf:about="http://somewhere/RebeccaSmith">
    <vCard:N rdf:parseType="Resource">
      <vCard:Given>Rebecca</vCard:Given>
      <vCard:Family>Smith</vCard:Family>
    </vCard:N>
    <vCard:FN>Becky Smith</vCard:FN>
  </rdf:Description>
</rdf:RDF>
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial5$  

Tutorial 6

Pasta com código-fonte

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mkdir Tutorial6
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mv Tutorial06.java Tutorial6
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ cd Tutorial6
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial6$ gedit Tutorial06.java 
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial6$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' -Xlint Tutorial06.java
Tutorial06.java:39: warning: [deprecation] get() in FileManager has been deprecated
        InputStream in = FileManager.get().open(inputFileName);
                                    ^
1 warning
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial6$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial06
Exception in thread "main" java.lang.IllegalArgumentException: File: vc-db-1.rdf not found
	at Tutorial06.main(Tutorial06.java:41)
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial6$ cp ../../vc-db-1.rdf .
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial6$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial06
The nicknames of "John Smith" are:
    Adman
    Smithy
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial6$  

Tutorial 7

Pasta com código-fonte

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mkdir Tutorial7
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mv Tutorial07.java Tutorial7
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ cd Tutorial7
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial7$ gedit Tutorial07.java 
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial7$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' -Xlint Tutorial07.java
Tutorial07.java:38: warning: [deprecation] get() in FileManager has been deprecated
        InputStream in = FileManager.get().open(inputFileName);
                                    ^
1 warning
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial7$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial07
Exception in thread "main" java.lang.IllegalArgumentException: File: vc-db-1.rdf not found
	at Tutorial07.main(Tutorial07.java:40)
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial7$ cp ../../vc-db-1.rdf .
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial7$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial07
The database contains vcards for:
  Sarah Jones
  John Smith
  Matt Jones
  Becky Smith
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial7$  

Tutorial 8

Pasta com código-fonte

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mkdir Tutorial8
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mv Tutorial08.java Tutorial8
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ cd Tutorial8
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial8$ gedit Tutorial08.java 
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial8$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' -Xlint Tutorial08.java
Tutorial08.java:39: warning: [deprecation] get() in FileManager has been deprecated
        InputStream in = FileManager.get().open(inputFileName);
                                    ^
1 warning
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial8$ cp ../../vc-db-1.rdf .
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial8$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial08
The database contains vcards for:
  Becky Smith
  John Smith
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial8$  

Arquivo auxiliar: https://jena.apache.org/tutorials/sparql_data/vc-db-3.rdf

Diretório contendo arquivos auxiliares: https://jena.apache.org/tutorials/sparql_data/

Tutorial 9

Pasta com código-fonte

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mkdir Tutorial9
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mv Tutorial09.java Tutorial9
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ cd Tutorial9
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial9$ gedit Tutorial09.java 
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial9$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' -Xlint Tutorial09.java
Tutorial09.java:39: warning: [deprecation] get() in FileManager has been deprecated
        InputStream in1 = FileManager.get().open(inputFileName1);
                                     ^
Tutorial09.java:43: warning: [deprecation] get() in FileManager has been deprecated
        InputStream in2 = FileManager.get().open(inputFileName2);
                                     ^
2 warnings
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial9$ cp ../../vc-db-1.rdf .
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial9$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial09
Exception in thread "main" java.lang.IllegalArgumentException: File: vc-db-3.rdf not found
	at Tutorial09.main(Tutorial09.java:41)
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial9$ cp ../../vc-db-3.rdf .
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial9$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial09
Exception in thread "main" java.lang.IllegalArgumentException: File: vc-db-4.rdf not found
	at Tutorial09.main(Tutorial09.java:45)
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial9$ cp ../../vc-db-4.rdf .
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial9$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial09
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
  <rdf:Description rdf:about="http://somewhere/JohnSmith">
    <vCard:EMAIL>
      <vCard:internet>
        <rdf:value>[email protected]</rdf:value>
      </vCard:internet>
    </vCard:EMAIL>
    <vCard:FN>John Smith</vCard:FN>
    <vCard:N rdf:parseType="Resource">
      <vCard:Family>Smith</vCard:Family>
      <vCard:Given>John</vCard:Given>
    </vCard:N>
  </rdf:Description>
</rdf:RDF>

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial9$  

### Tutorial 10

[Pasta com código-fonte](Arquivos-ExecucaoTutoriaisJena/Tutorial10)

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mkdir Tutorial10
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mv Tutorial10.java Tutorial10
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ cd Tutorial10
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial10$ ls
Tutorial10.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial10$ gedit Tutorial10.java 
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial10$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' -Xlint Tutorial10.java
Tutorial10.java:40: warning: [deprecation] get() in FileManager has been deprecated
        InputStream in = FileManager.get().open( inputFileName );
                                    ^
1 warning
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial10$ cp ../../vc-db-1.rdf .
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial10$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial10
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
  <rdf:Description rdf:about="http://somewhere/SarahJones">
    <vCard:N rdf:parseType="Resource">
      <vCard:Given>Sarah</vCard:Given>
      <vCard:Family>Jones</vCard:Family>
    </vCard:N>
    <vCard:FN>Sarah Jones</vCard:FN>
  </rdf:Description>
  <rdf:Bag>
    <rdf:li>
      <rdf:Description rdf:about="http://somewhere/RebeccaSmith">
        <vCard:N rdf:parseType="Resource">
          <vCard:Given>Rebecca</vCard:Given>
          <vCard:Family>Smith</vCard:Family>
        </vCard:N>
        <vCard:FN>Becky Smith</vCard:FN>
      </rdf:Description>
    </rdf:li>
    <rdf:li>
      <rdf:Description rdf:about="http://somewhere/JohnSmith">
        <vCard:N rdf:parseType="Resource">
          <vCard:Given>John</vCard:Given>
          <vCard:Family>Smith</vCard:Family>
        </vCard:N>
        <vCard:FN>John Smith</vCard:FN>
      </rdf:Description>
    </rdf:li>
  </rdf:Bag>
  <rdf:Description rdf:about="http://somewhere/MattJones">
    <vCard:N rdf:parseType="Resource">
      <vCard:Given>Matthew</vCard:Given>
      <vCard:Family>Jones</vCard:Family>
    </vCard:N>
    <vCard:FN>Matt Jones</vCard:FN>
  </rdf:Description>
</rdf:RDF>

The bag contains:
  Becky Smith
  John Smith
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial10$ 

Tutorial 11

Pasta com código-fonte

abio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mkdir Tutorial11
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ mv Tutorial11.java Tutorial11
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas$ cd Tutorial11
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial11$ gedit Tutorial11.java 
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial11$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' -Xlint Tutorial11.java
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial11$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' Tutorial11
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <rdf:Description>
    <rdfs:label rdf:parseType="Literal"><em>chat</em></rdfs:label>
    <rdfs:label xml:lang="fr">chat</rdfs:label>
    <rdfs:label xml:lang="en">chat</rdfs:label>
  </rdf:Description>
</rdf:RDF>

_:Bb1a830e6X2D28b0X2D4d92X2D89c2X2D97f082ba1a83 <http://www.w3.org/2000/01/rdf-schema#label> "11"^^<http://www.w3.org/2001/XMLSchema#long> .
_:Bb1a830e6X2D28b0X2D4d92X2D89c2X2D97f082ba1a83 <http://www.w3.org/2000/01/rdf-schema#label> "11" .
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/Tutorial11$ 

Sumário de resultados

  1. O tutorial 1 mostra como Criar instâncias. Inicia Inicia com um nó contendo o IRI 'da pessoa';
  2. O tutorial 2 mostra como associar o nó a outros recursos (se a terminologia for RDF), ou indivíduos (se a terminologia for OWL). O conjunto representa uma pessoa. Inicia com um nó contendo o IRI 'da pessoa', conecta este nó, através de predicados (se a terminologia for RDF), ou propriedades de dados (dataProperty, dataPropertyAssertion, se a terminologia for OWL): vcard:FN, vcard:N, vcard:Family, vcard:Given aos nós que contém as instâncias: 'John Smith', 'John', 'Smith'. Resta saber:
    1. Resta saber se conectar a outras representações de pessoas (se possível), é diferente;
    2. Resta saber como armazenar permanentemente o resultado.
    3. Nota: o conceito de indivíduo em OWL relaciona-se com com o conceito de instância em RDF e OOP.
    4. Nota: referência para terminologia de OWL: https://www.w3.org/TR/2012/REC-owl2-primer-20121211/
  3. O tutorial 3 mostra como listar instâncias no console. Não é uma consulta, é um dump de tudo que estiver armazenado.
  4. O tutorial 4 mostra como armazenar instâncias em um arquivo (codificado em RDF/XML). Isto responde 2.2;
  5. O tutorial 5 mostra como ler instâncias armazenadas em um arquivo;
  6. O tutorial 6 mostra como Recuperar instâncias;
    1. Já tem alguma conexão com consultas, mas a explicação é mais próxima de Prolog que de SPARQL.
    2. Tem uma questão sobre o predicado/propriedade ser ou não único. Se for único, getProperty. Senão, listProperties, mas como saber se o predicado é único ou não? Neste momento ainda não há informação sobre cardinalidade, que faz parte da especificação OWL.
  7. O tutorial 7 mostra um formato de consulta Sujeito-Predicado-Objeto (SPO), similar ao que é possível fazer com rdf/3 de SWI-Prolog. Isto é bastante poderoso, se puder ser encadeado, como em SWI-Prolog pois permite navegar no grafo de conhecimento e apresentar resultados conforme padrões iguais ao subgrafo são encontrados.
  8. O tutorial 8 mostra como filtrar por conteúdo recuperado. Tem a ver com o processamento de expressões regulares que é possível dentro da cláusula WHERE em uma query SPARQL.
  9. O tutorial 9 mostra como fundir conjuntos de dados.
  10. O tutorial 10 mostra como usar as coleções definidas em RDF: Bag, Alt, Seq.
  11. O tutorial 11 apresenta como Jena codifica tipos de dados e idiomas. Tem relação com XML Schema, elementos como ^^Integer e @en, embora não apresente isto explicitamente.

Conclusão e Discussão

Tutoriais executados.

Eu tinha esperança que os tutoriais apresentassem uma resposta direta ao que eu considero CRUD. Expectativa frustrada. Eles trazem elementos, uns até 'mais avançados', na minha concepção.

Convém considerar a criação de um tutorial apresentando o que considero CRUD usando Jena. Ainda não atingi o objetivo principal.

Elementos de texto que usei em algum momento mas não se encaixam na versão corrente

graph LR
  G[Alguma ontologia de teste] -->|éInsumoDe| A[CRUD com Jena em linha de comando]
  J[versão de SO e Java] -->|éPréCondiçãoDe| A[CRUD com Jena em linha de comando]
  L[esta página] -->|éResultadoDe| A[CRUD com Jena em linha de comando]
  B[Instalar Jena] -->|éSubPlanoDe| A[CRUD com Jena em linha de comando]
  C[Testar Jena] -->|éSubPlanoDe| A
  D[Examinar o que é atingível usando Jena] -->|éSubPlanoDe| A
  E[Definir tarefas para atingir o objetivo principal] -->|éSubPlanoDe| A
  F[atingir o objetivo principal] -->|éSubPlanoDe| A
  F-->|dependeDe|E
  E-->|dependeDe|D
  D-->|dependeDe|C
  C-->|dependeDe|B
Loading
gantt
    title A Gantt Diagram
    dateFormat  YYYY-MM-DD
    todayMarker off
    section CRUD com Jena em linha de comando
    Instalar Jena           : a1, 2020-12-10, 1d
    Testar Jena     : a2, after a1  , 1d
    Examinar o que é atingível      : a3, after a2  , 1d
    Definir tarefas para atingir o objetivo principal      : a4, after a3, 1d
    Atingir o objetivo principal : a5, after a4
Loading

alt text

alt text