GraphDB导入RDF图谱报错:Prolog中不允许包含内容
解决GraphDB导入RDF Turtle的解析错误
错误原因分析
你遇到的Content is not allowed in prolog错误,核心问题是代码使用了非标准Turtle语法,同时存在格式错误:
- 用了类似JSON-LD的大括号分组(
:moviesInfo {...}),这不是Turtle支持的语法; - 引号使用HTML转义字符
",Turtle无法识别; - 部分三元组主语延续的语法错误,导致解析器无法识别主语;
- 若文件带UTF-8 BOM(字节顺序标记),也会导致开头出现非法字符触发错误。
修正后的完整Turtle代码
@prefix : <http://buchmann.ro#>. @prefix xsd: <http://www.w3.org/2001/XMLSchema#>. #some movie directors :JamesCameron :directorOf :Avatar, :Terminator; :hasName "James Cameron". :JohnMcT :directorOf :Predator, :DieHard; :hasName "John McTiernan"; :birthInfo [ :birthDate "1951-01-08"^^xsd:date; :birthPlace :USA]. :McG :directorOf _:somemovie; :hasName "Joseph McGinty"; :hasNickname "McG". :TimBurton :directorOf :Batman; :hasName "Tim Burton"; :birthPlace :USA. #some movie actors :SamWorth :hasName "Sam Worthington"; :playedIn _:somemovie; :playedTheRole [:asCharacter :JakeSully; :inMovie :Avatar]. :Arnold :playedIn :Terminator, :Predator; :wasGovernorOf :California; :hasName "Arnold Schwarzenegger"; :birthInfo [:birthDate "1947-07-10"^^xsd:date; :birthPlace :Austria]. :LindaH :hasName "Linda Hamilton"; :playedTheRole [:asCharacter :SarahConnor; :inMovie :Terminator]. :JackNicholson :playedIn :Batman; :hasName "Jack Nicholson". #this guy is both actor and director :ShBlack :playedIn :Predator; :hasName "Shane Black"; :directorOf :KKBB. #some movies :Batman :hasTitle "Batman". :Terminator :hasTitle "Terminator"; :hasBudget 6400000 . :Avatar :hasTitle "Avatar"; :hasBudget 237000000 . :DieHard :hasTitle "Die Hard". :Predator :hasTitle "Predator"; :hasBudget 18000000 . :KKBB :hasTitle "Kiss Kiss Bang Bang"; :hasBudget 15000000 . _:somemovie :hasBudget 200000000 . #some movie characters :JakeSully :hasName "Jake Sully". :SarahConnor :hasName "Sarah Connor". #some countries/states :California :partOf :USA; :hasName "California"@en, "Californie"@fr. :Austria :hasName "Austria"@en, "Autriche"@fr. :USA :hasName "United States of America"@en, "Etats Unis d'Amerique"@fr.
关键修正点说明
- 移除
:moviesInfo和:geoInfo的大括号分组:Turtle通过前缀、空白行组织数据,不需要大括号; - 替换
"为英文双引号":Turtle只识别原生引号,HTML转义字符会被判定为非法内容; - 修正主语延续语法:同一主语的后续谓语需缩进对齐,用分号
;连接,最后用句号.结束三元组; - 检查文件编码:保存时选择UTF-8无BOM格式,避免开头出现隐藏非法字符。
导入验证
将修正后的代码保存为.ttl文件,在GraphDB中选择Turtle格式导入即可正常解析。
内容的提问来源于stack exchange,提问作者Sven Alexander Gal
相关产品推荐
相关产品推荐

