Cer*_*rin 8 python debugging semantic-web rdflib turtle-rdf
我正在尝试用Turtle格式编码一些植物数据,并使用RDFLib从Python读取这些数据.但是,我遇到了麻烦,我不确定是不是因为我的海龟畸形或者我在滥用 RDFLib.
我的测试数据是:
@PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@PREFIX p: <http://www.myplantdomain.com/plant/description> .
p:description a rdfs:Property .
p:name a rdfs:Property .
p:language a rdfs:Property .
p:value a rdfs:Property .
p:gender a rdfs:Property .
p:inforescence a rdfs:Property .
p:color a rdfs:Property .
p:sense a rdfs:Property .
p:type a rdfs:Property .
p:fruit a rdfs:Property .
p:flower a rdfs:Property .
p:dataSource a rdfs:Property .
p:degree a rdfs:Property .
p:date a rdfs:Property .
p:person a rdfs:Property .
p:c2a7b9a3-c54a-41f5-a3b2-155351b3590f
p:description [
p:name [
p:kingdom "Plantae" ;
p:division "Pinophyta" ;
p:class "Pinopsida" ;
p:order "Pinales" ;
p:family "Pinaceae" ;
p:genus "Abies" ;
p:species "A. alba" ;
p:language "latin" ;
p:given_by [
p:person p:source/Philip_Miller ;
p:start_date "1923-1-2"^^<http://www.w3.org/2001/XMLSchema#date>
]
] ;
p:name [
p:language "english" ;
p:value "silver fir"
] ;
p:flower [
p:gender "male"@en ;
p:inflorescence "catkin"@en ;
p:color "brown"@en ;
p:color "yellow"@en ;
p:sense "straight"@en
] ;
p:flower [
p:gender "female"@en ;
p:inflorescence "catkin"@en ;
p:color "pink"@en ;
p:color "yellow"@en ;
p:sense "straight"@en
] ;
p:fruit [
p:type "cone"@en ;
p:color "brown"@en
]
] .
Run Code Online (Sandbox Code Playgroud)
我的Python是:
import rdflib
g = rdflib.Graph()
#result = g.parse('trees.ttl')
#result = g.parse('trees.ttl', format='ttl')
result = g.parse('trees.ttl', format='n3')
print len(g)
for stmt in g:
print stmt
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
ValueError: Found @PREFIX when expecting a http://www.w3.org/2000/10/swap/grammar/n3#document . todoStack=[['http://www.w3.org/2000/10/swap/grammar/n3#document', []]]
Run Code Online (Sandbox Code Playgroud)
我试过改变parse()参数,但是一切都给了我一个错误.我发现很少甚至没有关于如何解析Turtle的例子.我究竟做错了什么?
Ale*_*lli 10
我认为第一个问题是w/大写 PREFIX - 如果你低于那些它超过那一点.不确定它是否是rdflib或Turtle中的错误.ttl,但是Turtle Validator在线演示似乎同意它是一个问题.ttl(说Validation failed: The @PREFIX directive is not supported, line 1 col 0.但如果你小写它们就会消失).
一旦你超越了这个障碍,解析器p:given_by [就不喜欢这个部分:"错误的语法(']'预期的)在^ in:"... per rdflib; Turtle Validator说
Validation failed: Expecting a period, semicolon, comma, close-bracket, or close-brace but found '/', line 31 col 33.
Run Code Online (Sandbox Code Playgroud)
所以它特别不喜欢这个p:source/Philip_Miller部分.
从这两个问题(谁知道是否有其他人......!)我想你可以得出结论,这个N3源(.ttl你发布的文件)被破坏了,并把你的注意力转移到最初制作这个文件的系统上,为什么它以如此多次破碎的方式制造它.
| 归档时间: |
|
| 查看次数: |
6335 次 |
| 最近记录: |