2021-03-16
Feito das 8:30 até as 9:20,
Documentado das 9:20 até as 9:40,
Revisão da documentaçao das 9:40 até 9:50
- Converter Turtle para RDF:XML;
- Criar um modelo a partir de uma especificação, para popular e processar (por exemplo fazendo consultas) e salvar resultados.
- Procurar a documentação de Jena para ler Turtle e decidir o que fazer.
- Copiar o Tutorial 5, que lê um RDF, executar as is para garantir que o código de partida compila, executa e apresenta o resultado esperado (ié funcionar).
- Procurar um arquivo em Turtle sintaticamente correto (usei um que criei para avaliar a usabilidade de ontology-visualization)
- Ajustar (iterativamente, incrementalmente) o código até funcionar ou dar uma desistência BEM justificada.
https://jena.apache.org/documentation/io/rdf-input.html#model-usage
Início do passo 2 do método.
fabio@fabio-13Z940-G-BK71P1:~$ cd Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel/ fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ ls Tutorial05.java vc-db-1.rdf fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ mv Tutorial05.java LeTTL.java fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ cp ~/Documentos/git/ontology-visualization/exemplo51.ttl . fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ gedit LeTTL.java & [1] 4050 fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ javac -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL.java Note: LeTTL.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ javac -cp -Xlint:deprecation '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL.java error: invalid flag: .:/home/fabio/apache-jena-3.17.0/lib/* Usage: javac <options> <source files> use --help for a list of possible options fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ javac-Xlint:deprecation -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL.java javac-Xlint:deprecation: comando não encontrado fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ javac -Xlint:deprecation -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL.java LeTTL.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/LerTTLEmUmModel$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL <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>
Fim do passo 2 da seção método.
Início do passo 3 do método.
Compilar e executar depois de ajustar para ler o turtle de exemplo51.ttl
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL Exception in thread "main" java.lang.IllegalArgumentException: File: example51.ttl not found at LeTTL.main(LeTTL.java:51) fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ javac -Xlint:deprecation -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL.java LeTTL.java:49: 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/LerTTLEmUmModel$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL 08:58:07.403 [main] ERROR org.apache.jena.riot - [line: 1, col: 1 ] O conteúdo não é permitido no prólogo. Exception in thread "main" org.apache.jena.riot.RiotException: [line: 1, col: 1 ] O conteúdo não é permitido no prólogo. at org.apache.jena.riot.system.ErrorHandlerFactory$ErrorHandlerStd.fatal(ErrorHandlerFactory.java:153) at org.apache.jena.riot.lang.ReaderRIOTRDFXML$ErrorHandlerBridge.fatalError(ReaderRIOTRDFXML.java:313) at org.apache.jena.rdfxml.xmlinput.impl.ARPSaxErrorHandler.fatalError(ARPSaxErrorHandler.java:47) at org.apache.jena.rdfxml.xmlinput.impl.XMLHandler.warning(XMLHandler.java:199) at org.apache.jena.rdfxml.xmlinput.impl.XMLHandler.fatalError(XMLHandler.java:229) at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:181) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1471) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:978) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824) at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635) at org.apache.jena.rdfxml.xmlinput.impl.RDFXMLParser.parse(RDFXMLParser.java:101) at org.apache.jena.rdfxml.xmlinput.ARP.load(ARP.java:118) at org.apache.jena.riot.lang.ReaderRIOTRDFXML.parse(ReaderRIOTRDFXML.java:188) at org.apache.jena.riot.lang.ReaderRIOTRDFXML.read(ReaderRIOTRDFXML.java:86) at org.apache.jena.riot.RDFParser.read(RDFParser.java:353) at org.apache.jena.riot.RDFParser.parseNotUri(RDFParser.java:343) at org.apache.jena.riot.RDFParser.parse(RDFParser.java:292) at org.apache.jena.riot.RDFParserBuilder.parse(RDFParserBuilder.java:540) at org.apache.jena.riot.RDFDataMgr.parseFromInputStream(RDFDataMgr.java:901) at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:299) at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:285) at org.apache.jena.riot.adapters.RDFReaderRIOT.read(RDFReaderRIOT.java:69) at org.apache.jena.rdf.model.impl.ModelCom.read(ModelCom.java:253) at LeTTL.main(LeTTL.java:55) fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$
Pelas mensagens de erro, tenho a impressão que o código está usando métodos para ler RDF:XML. Percebo, por comparação com o snippet em https://jena.apache.org/documentation/io/rdf-input.html#model-usage, que eu não deveria usar o objeto FileManager
, lembro também que é o método dessa classe que levanta o aviso de deprecação. Código-fonte usado .
Vou trocar pelo snippet
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ javac -Xlint:deprecation -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL.java fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$ java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:prov="http://www.w3.org/ns/prov#" xmlns="http://example.com/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#"> <prov:Activity rdf:about="http://example.com/illustrating"> <prov:qualifiedAssociation> <prov:Association> <rdfs:comment xml:lang="en">Steve helped Derek conform with the publisher's style guide.</rdfs:comment> <prov:hadPlan> <prov:Entity rdf:about="http://example.com/style-guide"> <rdf:type rdf:resource="http://www.w3.org/ns/prov#Plan"/> </prov:Entity> </prov:hadPlan> <prov:hadRole> <prov:Role rdf:about="http://example.com/stylist"/> </prov:hadRole> <prov:agent> <prov:Entity rdf:about="http://example.com/steve"> <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> <rdf:type rdf:resource="http://www.w3.org/ns/prov#Person"/> </prov:Entity> </prov:agent> </prov:Association> </prov:qualifiedAssociation> <prov:qualifiedAssociation> <prov:Association> <prov:hadRole rdf:resource="http://example.com/illustrationist"/> <prov:agent> <prov:Entity rdf:about="http://example.com/derek"> <rdf:type rdf:resource="http://www.w3.org/ns/prov#Agent"/> <rdf:type rdf:resource="http://www.w3.org/ns/prov#Person"/> </prov:Entity> </prov:agent> </prov:Association> </prov:qualifiedAssociation> <prov:wasAssociatedWith rdf:resource="http://example.com/steve"/> <prov:wasAssociatedWith rdf:resource="http://example.com/derek"/> </prov:Activity> <prov:Role rdf:about="http://example.com/illustratonist"/> </rdf:RDF> fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/sobreJena/programas/LerTTLEmUmModel$
O código-fonte desenvolvido está no arquivo, uma versão intermediária, para documentação, foi criada e citada na memória de teste.
O código foi compilado e executado. O resultado é o esperado (ié Funcionou).
Comando para compilação:
javac -Xlint:deprecation -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL.java
Comando para execução:
java -cp '.:/home/fabio/apache-jena-3.17.0/lib/*' LeTTL
Preferi comentar o código que substuí, ao invés de removê-lo.
A API de Jena, neste ponto, está mais simples que a apresentada no tutorial (e o tutorial, embora funcione, provavelmente é antigo e poderia ser simplificado).