2014-01-22 2 views
4

Jena를 사용하여 freebase 덤프 파일 freebase-rdf-2014-01-12-00-00.gz (25GB)를 구문 분석하려고합니다. Jena에서 불량 데이터와 관련하여 많은 문제가보고되었습니다. 예 - 150.0이 유효하지 않음, true 및 false 값이 올바르지 않음 이러한 문제는 괄호 파일의 10 진수 및 true/false 주위에 큰 따옴표를 추가하여 해결했습니다. 그러나 문제는 여전히 존재합니다. reported by Jena.(current - org.apache.jena.riot.RiotException: [line: 161083, col: 110] Illegal object: [MINUS])freebase RDF 덤프에 대한 Jena 구문 분석 문제 (1214 년 1 월)

이 데이터를 사전 처리하여 각 문제를 하나씩 수정하지 않아도됩니다. 내 Java 코드 :

// Open TDB dataset 
    String directory = "D:/test_dump"; 
    Dataset dataset = TDBFactory.createDataset(directory); 

    // Assume we want the default model, or we could get a named model here 
    Model tdb = dataset.getDefaultModel(); 

    // Read the input file - only needs to be done once 
    String source = "D:/test_dump/fixed-freebase-second-rdf.gz"; 
    FileManager.get().readModel(tdb, source, "N-TRIPLES"); 
+1

answers.semanticweb.com에 대한 최근 질문 [Freebase RDF 덤프가 w3 n-triples 사양을 준수합니까?] (http://answers.semanticweb.com/questions/26084/does- the-free-base-rdf-dump-conform-to-the-w3-n-triples-spec)을 사용합니다. 데이터는 N-Triples이 아닌 거북이에 있습니다. –

답변

4

데이터는 N-Triples이 아닌 Turtle 형식입니다. 그들은 다양한 터틀 약어 (의 경우 true 또는 "-27"^^xsd:integer의 경우 -27)를 사용합니다.

덤프에 잘못된 구문이 포함되어있어 오류가 계속 발생할 수 있습니다. 예 : RDF의 변경 일 주위에 추가 \

필요한 따옴표없이 접두어 이름에 $의 사용.

2

참고 : answers.semanticweb.com 질문 (Does the Freebase RDF dump conform to the w3 n-triples spec?)의 답변입니다. 간단히 말해서 데이터는 N-Triples가 아니라 Turtle serialization에 있습니다. 거북이는 다양한 축약어를 지원합니다 (예 : 의 경우 true). 심지어 Data Dumps에 예제 데이터

가 잘못 N-트리플있다 :

<http://rdf.freebase.com/ns/g.11vjz1ynm> <http://rdf.freebase.com/ns/measurement_unit.dated_percentage.rate> 4.5 . 

그것은 데이터가 N-트리플 이상의 표기법 3 (N3) 또는 거북 형식으로 더 같습니다. 사실 8 월 2013 년 29 숀 시미 스터에서 this post on the freebase-discuss는 (강조 추가) 말한다 : 나는 하는 Freebase RDF의 새 버전에서 일한지

이 가 된 문제의 의지 주소 많은 덤프 처음으로 RDF로 데이터를 게시하기 시작한 이후로 발견되었습니다. ... 이 덤프 중 가장 큰 변화는 이며 형식은 N-Triples from Turtle로 전환되었습니다. 실제로 이후 N-Triples은 거북이의 서브 세트이므로 이 우리가 지금 가지고있는 동일한 1-triple-per-line 형식을 따릅니다. later post (2013년 10월 31일)

는 부울 문제에 접촉 :

흠, 그래이이 버그가 나타납니다. 거북은 true와 false를 true로 지원합니다 ^^ xsd : boolean 및 "false"^^ xsd : boolean하지만 N-Triples은 터틀의 하위 집합입니다 은 단순화 된 부울을 지원하지 않습니다 구문 .

그 스레드를 더 읽을 가치가 있습니다. 사람들이 "사실"을 사용할 수 있기 때문에 "true이든 "true"이든 분명하지 않습니다. 사람들 중 일부는 실제로 유효한 RDF에 대해별로 신경 쓰지 않고, 형식이없는 일반 리터럴 "true"과 으로 축약 될 수있는 부울 유형의 리터럴 "true"^^xsd:boolean 사이의 차이점을 생각해 봅니다. 어쨌든 짧은 답변은 "거북이 또는 N3 파서 사용"과 같습니다.