简体   繁体   English

如何使用Java将RDF代码上传到fuseki服务器?

[英]How to upload RDF code to fuseki server using Java?

I wrote a function that convert data to RDF and I need to upload this RDF to the fuseki server. 我写了一个将数据转换为RDF的函数,我需要将这个RDF上传到fuseki服务器。

I tried to implement the code from here as follows 我尝试从这里实现代码如下

public class GenerateRDF {
      public void setRDF(String[] personalData ) {
        String serviceURI = "http://localhost:3030/Date";
        DatasetAccessorFactory factory = null;
        DatasetAccessor accessor;
        accessor = factory.createHTTP(serviceURI);

        String name = personalData[0];
        String nationality = personalData[1];
        String date = personalData[2];
        String address = personalData[3];
        String mobile = personalData[4];
        String email = personalData[5];
        String website = personalData[6];
        String profesional = personalData[7];
        String education = personalData[8];
        String communication = personalData[9];
        String digital = personalData[10];
        String professional = personalData[11];
        String management = personalData[12];
        String certifications = personalData[13];

        InputStream in = null;
        Model model = ModelFactory.createDefaultModel();
        Resource node = model.createResource(personURI)
             .addProperty(FOAF.name, name)
             .addProperty(FOAF.member, nationality)
             .addProperty(FOAF.birthday, date)
             .addProperty(FOAF.homepage, address)
             .addProperty(FOAF.phone, mobile)
             .addProperty(FOAF.yahooChatID, email)
             .addProperty(FOAF.weblog, website)
             .addProperty(FOAF.plan, profesional)
             .addProperty(FOAF.knows, education)
             .addProperty(FOAF.depiction, communication)
             .addProperty(FOAF.interest, digital)
             .addProperty(FOAF.publications, professional)
             .addProperty(FOAF.maker, management)
             .addProperty(FOAF.made, certifications);
        String base = "http://test-projects.com/";
        model.read(in, base, "RDF/XML");
        accessor.putModel(model);
        model.write(System.out);
    }
}

Which returns the following Exception: 返回以下异常:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.io.FilterInputStream.read(Unknown Source) at org.apache.xerces.impl.XMLEntityManager$RewindableInputStream.readAndBuffer(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source) at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at com.hp.hpl.jena.rdf.arp.impl.RDFXMLParser.parse(RDFXMLParser.java:151) at com.hp.hpl.jena.rdf.arp.ARP.load(ARP.java:119) at org.apache.jena.riot.lang.LangRDFXML.parse(LangRDFXML.java:142) at org.apache.jena.r 位于org.apache的org.apache.xerces.impl.XMLEntityManager $ RewindableInputStream.readAndBuffer(未知来源)的java.io.FilterInputStream.read(未知来源)中的线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常。位于org.apache.xerces的org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(未知来源)的org.apache.xerces.impl.XMLEntityManager.startEntity(未知来源)中的xerces.impl.XMLEntityManager.setupCurrentEntity(未知来源)。来自org.apache.xerces.parsers的org.apache.xerces.parsers.DTDConfiguration.parse(未知来源)的org.apache.xerces.parsers.DTDConfiguration.parse(未知来源)中的impl.XMLDocumentScannerImpl.setInputSource(未知来源)。来自com的com.hp.hpl.jena.rdf.arp.impl.RDFXMLParser.parse(RDFXMLParser.java:151)的org.apache.xerces.parsers.AbstractSAXParser.parse(未知来源)的XMLParser.parse(未知来源)位于org.apache.jena.r的org.apache.jena.riot.lang.LangRDFXML.parse(LangRDFXML.java:142)的.hp.hpl.jena.rdf.arp.ARP.load(ARP.java:119) iot.RDFParserRegistry$ReaderRIOTFactoryImpl$1.read(RDFParserRegistry.java:142) at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:760) at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:258) at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:244) at org.apache.jena.riot.adapters.RDFReaderRIOT.read(RDFReaderRIOT.java:69) at com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:274) at GenerateRDF.setRDF(GenerateRDF.java:59) at PersonalInfo$2.actionPerformed(PersonalInfo.java:251) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent iot.RDFParserRegistry $ ReaderRIOTFactoryImpl $ 1.read(RDFParserRegistry.java:142)org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:760)org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java) :258)atg.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:244)atg.apache.jena.riot.adapters.RDFReaderRIOT.read(RDFReaderRIOT.java:69)at com.hp.hpl。 Jena.rdf.model.impl.ModelCom.read(ModelCom.java:274)在GenerateRDF.setRDF(GenerateRDF.java:59)的PersonalInfo $ 2.actionPerformed(PersonalInfo.java:251)at javax.swing.AbstractButton.fireActionPerformed(来自javax.swing.AbstractButton $ Handler.actionPerformed(未知来源)javax.swing.DefaultButtonModel.fireActionPerformed(未知来源)javax.swing.DefaultButtonModel.setPressed(未知来源)位于javax.swing.plaf.basic的javax.swing.AbstractButton $ Handler.actionPerformed(未知来源)。 java.awt.Component.processEvent上javax.swing.JComponent.processMouseEvent(未知来源)的java.awt.Component.processMouseEvent(未知来源)中的BasicButtonListener.mouseReleased(未知来源) (Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$JavaSecurityAcce java.awt.Component上的java.awt.Container.ventEvent(未知来源)的java.awt.ContainerEventImpl(未知来源)(java.awt.Component)来自java.awt.LightweightDispatcher.processMouseEvent(未知来源)的java.awt.LightweightDispatcher.processMouseEvent(未知来源)java.awt.LightweightDispatcher.dispatchEvent(未知来源)java.awt.Container.dispatchEventImpl(未知来源)在java.awt.Window.dispatchEventImpl(来源不明)在java.awt.Component.dispatchEvent(来源不明)在java.awt.EventQueue.dispatchEventImpl(来源不明)在java.awt.EventQueue.access $ 500(来源不明)在Java.awt.EventQueue $ 3.run(未知来源)java.awt.EventQueue $ 3.run(未知来源)java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) )在java.security.ProtectionDomain $ JavaSecurityAcce ssImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) ssImpl.doIntersectionPrivilege处java.security.AccessController.doPrivileged(本机方法)在java.security在java.awt.EventQueue中的$ 4.run(来源不明)java.awt.EventQueue中的$ 4.run(来源不明)(来源不明)。 java.awt上java.awt.EventDispatchThread.pumpEventsForFilter(未知来源)的java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源)上的java.awt.EventQueue.dispatchEvent(未知来源)中的ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(未知来源)。 EventDispatchThread.pumpEventsForHierarchy(来源不明)在java.awt.EventDispatchThread.pumpEvents(来源不明)在java.awt.EventDispatchThread.pumpEvents(来源不明)在java.awt.EventDispatchThread.run(来源不明)

Is there a way to fix this error? 有没有办法解决这个错误? I'm open to solutions... 我愿意接受解决方案......

You might want to take a look here : https://hub.docker.com/r/stain/jena-fuseki/ 你可能想看看这里: https//hub.docker.com/r/stain/jena-fuseki/

There is a part on data loading that can guide you. 数据加载有一部分可以指导您。

More specifically, load.sh and tdbloader that can be found here : https://github.com/stain/jena-docker/tree/master/jena-fuseki 更具体地说,可以在这里找到load.sh和tdbloader: https//github.com/stain/jena-docker/tree/master/jena-fuseki

I'm a bit puzzled by your question as you mention "upload a file to fuseki" in the tittle but your code does not refer to any file... 当你提到“将文件上传到fuseki”时,我对你的问题感到有点困惑,但是你的代码并没有引用任何文件......

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM