首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python读取Turtle/N3 RDF文件

使用Python读取Turtle/N3 RDF文件
EN

Stack Overflow用户
提问于 2010-08-24 22:33:08
回答 1查看 8.7K关注 0票数 8

我正在尝试将一些植物数据编码为Turtle格式,并使用RDFLib从Python中读取这些数据。然而,我遇到了麻烦,我不确定是因为我的乌龟畸形还是我是misusing RDFLib。

我的测试数据是:

代码语言:javascript
复制
@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
        ]
    ] .

我的Python是:

代码语言:javascript
复制
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

这给了我错误:

代码语言:javascript
复制
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', []]]

我试着改变parse()参数,但是都给出了一个错误。我几乎找不到关于如何解析Turtle的示例。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-24 22:58:13

我认为第一个问题是大写的PREFIX--如果你将它们小写,它就会超过那个点。不确定是rdflib还是海龟.ttl中的错误,但Turtle Validator在线演示似乎同意这是.ttl的问题( Validation failed: The @PREFIX directive is not supported, line 1 col 0.说,但如果你把它们写得更小,这个问题就会消失)。

一旦你越过了这个障碍,两个解析器都不喜欢p:given_by [周围的部分:"Bad syntax (']‘expected) at ^ in:"...每个rdflib;Turtle Validator说

代码语言:javascript
复制
Validation failed: Expecting a period, semicolon, comma, close-bracket, or close-brace but found '/', line 31 col 33.

所以它特别不喜欢p:source/Philip_Miller部分。

从这两个问题(谁知道还有没有其他的…!)我认为您可以得出结论,这个N3源代码(您发布的.ttl文件)已经损坏,并将您的注意力转移到最初创建这个文件的系统,以及它为什么会以如此多的损坏方式。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3557561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档