我刚刚导入jena库到eclipse上工作rdf-s,这是我的第一次尝试,但我无法读取海龟(.ttl)文件。
我按照以下方式尝试了它:
import java.io.*;
import java.util.*;
import com.hp.hpl.jena.rdf.model.*;
public class Simpsons {
public static void main(String[] args) throws IOException {
Model model=ModelFactory.createDefaultModel();
model.read(new FileInputStream("simpsons.ttl"),null);
}
}
我得到的错误如下:
Exception in thread "main" org.apache.jena.riot.RiotException: [line: 1, col: 1 ] Content is not allowed in prolog.
at org.apache.jena.riot.system.ErrorHandlerFactory$ErrorHandlerStd.fatal(ErrorHandlerFactory.java:136)
at org.apache.jena.riot.lang.LangRDFXML$ErrorHandlerBridge.fatalError(LangRDFXML.java:252)
at com.hp.hpl.jena.rdf.arp.impl.ARPSaxErrorHandler.fatalError(ARPSaxErrorHandler.java:48)
at com.hp.hpl.jena.rdf.arp.impl.XMLHandler.warning(XMLHandler.java:209)
at com.hp.hpl.jena.rdf.arp.impl.XMLHandler.fatalError(XMLHandler.java:239)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(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.riot.RDFParserRegistry$ReaderRIOTFactoryImpl$1.read(RDFParserRegistry.java:142)
at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:859)
at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:255)
at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:241)
at org.apache.jena.riot.adapters.RDFReaderRIOT_Web.read(RDFReaderRIOT_Web.java:62)
at com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:253)
at assignment2.Simpsons.main(Simpsons.java:11)
请帮助我一些想法,因为我不知道问题是什么,因为这是我第一次尝试使用Jena。我也从某个地方得到了一个提示,我应该做以下事情:
Jena似乎并不擅长发现RDF序列化 用于文件本身,尤其是用URL解决的文件。一个 解决这个问题的方法是制作一个获取文件的方法 通过使用字符串函数和返回来扩展文件名 Jena预定字符串中适当的RDF序列化格式。 然后,您可以使用您的方法来读取输入和写入文件 以正确的序列化格式。
但我真的不明白我该怎么写这个方法。
答案 0 :(得分:15)
The read method you are using假设输入格式为RDF/XML
。
您需要使用其中一个other read methods。
所以它会是:
public static void main(String[] args) throws IOException {
Model model=ModelFactory.createDefaultModel();
model.read(new FileInputStream("simpsons.ttl"),null,"TTL");
}
答案 1 :(得分:1)
以下程序将读取并遍历TTL文件
// Code goes here
$(window).load(function(){
$('#search').keyup(function() {
//Get the type value
var searchField = $('#search').val();
// Load the JSON file
$.getJSON('data.json', function(data) {
var html = '<div>'
for(var i = 0; i < data.choices.length; i++) {
var item = data.choices[i];
//Do the check here if the 'searchField' value is part of whatever you want to check against on 'item'
if(item.location.indexOf(searchField) > -1) {
html += '<input type="checkbox" name="vehicle" value="' + item.location + '"> ' + item.location + ' <br>';
}
}
html += '</div>';
$('#result').html(html);
});
});
});