Данные DBPedia (de) с JENA: ошибки кодировки символов (не юникод)

Я пытаюсь получить доступ к данным DBpedia (de) на своем локальном компьютере. Скачав и разархивировав несколько ttl-файлов, я попытался протестировать очень простой запрос SPARQL.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX rdfs:  <http://www.w3.org/2000/01/rdf-schema#>

SELECT DISTINCT ?s 
WHERE
{
 ?s rdf:type skos:Concept .
 ?s rdfs:label ?label .
}
LIMIT 100

используя эту команду ARQ (в Windows):

arq --data dewiki-20140813-article-categories.ttl --query dbpedia_cat.rq

Я действительно ожидал, что ничего не может пойти не так, но вместо этого я получил кучу ошибок, подобных этим:

19:29:02 WARN  riot                 :: [line: 2860693, col: 1 ] Bad IRI: <http:/
/de.dbpedia.org/resource/à_Baby_One_More_Time> Code: 47/NOT_NFKC in PATH: The IR
I is not in Unicode Normal Form KC.
19:29:02 WARN  riot                 :: [line: 2860693, col: 1 ] Bad IRI: <http:/
/de.dbpedia.org/resource/à_Baby_One_More_Time> Code: 56/COMPATIBILITY_CHARACTER
in PATH: TODO
19:29:02 WARN  riot                 :: [line: 2860694, col: 1 ] Bad IRI: <http:/
/de.dbpedia.org/resource/à_Baby_One_More_Time> Code: 47/NOT_NFKC in PATH: The IR
I is not in Unicode Normal Form KC.
19:29:02 WARN  riot                 :: [line: 2860694, col: 1 ] Bad IRI: <http:/
/de.dbpedia.org/resource/à_Baby_One_More_Time> Code: 56/COMPATIBILITY_CHARACTER
in PATH: TODO

После этих ошибок ARQ добавил следующее:

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceede
d
        at org.apache.jena.riot.tokens.TokenizerText.parseToken(TokenizerText.ja
va:170)
        at org.apache.jena.riot.tokens.TokenizerText.hasNext(TokenizerText.java:
86)
        at org.apache.jena.atlas.iterator.PeekIterator.fill(PeekIterator.java:50
)
        at org.apache.jena.atlas.iterator.PeekIterator.next(PeekIterator.java:92
)
        at org.apache.jena.riot.lang.LangEngine.nextToken(LangEngine.java:99)
        at org.apache.jena.riot.lang.LangTurtleBase.predicateObjectItem(LangTurt
leBase.java:287)
        at org.apache.jena.riot.lang.LangTurtleBase.predicateObjectList(LangTurt
leBase.java:269)
        at org.apache.jena.riot.lang.LangTurtleBase.triples(LangTurtleBase.java:
250)
        at org.apache.jena.riot.lang.LangTurtleBase.triplesSameSubject(LangTurtl
eBase.java:191)
        at org.apache.jena.riot.lang.LangTurtle.oneTopLevelElement(LangTurtle.ja
va:44)
        at org.apache.jena.riot.lang.LangTurtleBase.runParser(LangTurtleBase.jav
a:90)
        at org.apache.jena.riot.lang.LangBase.parse(LangBase.java:42)
        at org.apache.jena.riot.RDFParserRegistry$ReaderRIOTLang.read(RDFParserR
egistry.java:182)
        at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:906)
        at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:687)
        at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:534)
        at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:501)
        at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:454)
        at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:432)
        at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:422)
        at arq.cmdline.ModDatasetGeneral.addGraphs(ModDatasetGeneral.java:101)
        at arq.cmdline.ModDatasetGeneral.createDataset(ModDatasetGeneral.java:90
)
        at arq.cmdline.ModDatasetGeneralAssembler.createDataset(ModDatasetGenera
lAssembler.java:35)
        at arq.cmdline.ModDataset.getDataset(ModDataset.java:34)
        at arq.query.getDataset(query.java:176)
        at arq.query.queryExec(query.java:198)
        at arq.query.exec(query.java:159)
        at arq.cmdline.CmdMain.mainMethod(CmdMain.java:102)
        at arq.cmdline.CmdMain.mainRun(CmdMain.java:63)
        at arq.cmdline.CmdMain.mainRun(CmdMain.java:50)
        at arq.arq.main(arq.java:28)

Протестировав две утилиты для распаковки (Ark для Linux и Winrar для Windows), я совершенно уверен, что проблема здесь не в распаковке.

Также я просмотрел ttl-файлы с помощью Notepad++, и все символы кажутся мне правильными, даже проблемные, такие как Ä, Ö, Ü и т. д.

Итак, я понятия не имею, как справиться с этими ошибками, и буду признателен за любую помощь!

(Извиняюсь за вопрос, который не на 100% связан с программированием. Но я не знаю, является ли здесь проблемой JENA или DBPedia и, следовательно, какой список рассылки будет подходящим. Тем не менее, это вопрос новичка в любом случае. Итак, я надеюсь, здесь кто-нибудь поможет.)


person cis    schedule 23.03.2015    source источник
comment
Что вы ищете? Вы извлекаете IRI и вам нужно сохранить строку?   -  person Artemis    schedule 24.03.2015
comment
Что ж, с примерами данных из Learning SPARQL (от Bob DuCharme) ARQ не сообщает об ошибках, поэтому я предполагаю, что что-то не так с моим подходом или самими данными. Я просто хочу понять, что происходит, или (что еще лучше) избавиться от этих ошибок, прежде чем переходить к какому-либо серьезному запросу.   -  person cis    schedule 24.03.2015
comment
Ты не ответил мне. Что вы хотите хранить? Вы сейчас сохраняете IRI, но системе они не нравятся. Так что же вам нужно?   -  person Artemis    schedule 24.03.2015
comment
(Извините, просто хотел сказать, что пример запроса — это просто макет.) В конце я хочу получить список людей, соответствующих определенным критериям, с их URI, их меткой, их категориями и их датой смерти. Кстати: если я попытаюсь загрузить данные в TDB через tdbloader, я получаю те же ошибки. Так что я не думаю, что вопрос здесь.   -  person cis    schedule 24.03.2015
comment
правильно, запрос правильный, но ошибка предполагает, что ему не нравится результат, выходящий из запроса. Я предполагаю, что вам нужно заменить ?s на ?label.   -  person Artemis    schedule 24.03.2015
comment
Спасибо за это предложение. Однако результат тот же.   -  person cis    schedule 24.03.2015


Ответы (1)


WARN - это просто предупреждения, а не ошибки. Данные кодируются в UTF-8 таким образом, который не соответствует стандартам W3C.

Этот

--data dewiki-20140813-article-categories.ttl

загружает все данные в память, поэтому вам не хватает места. Либо загрузите в базу данных, такую ​​​​как TDB, либо, если файл выглядит так, как будто он может разместиться в памяти на вашем компьютере, увеличьте размер кучи.

person AndyS    schedule 24.03.2015