Загрузка Virtuoso DBpedia - ошибки разбора

У меня много ошибок, когда я хочу загрузить набор данных DBpedia. Например:

 22007 XM003: XML parser detected an error:     ERROR  : Tag nesting
 error: name 'img' of end tag does not match the name 'p' of start tag
 at line 4 column 432 at line 4 column 438 of source text
 04/02/skos/core#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#"></img></p>
 ----------------------------------------------------------------------^

Хорошо, давайте найдем строку, где произошла ошибка (я поставил разрыв строки, чтобы было легче увидеть):

<http://core-project.kmi.open.ac.uk/data-description> <http://purl.org/rss/1.0/modules/content/encoded> "<h2 xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" xmlns:og=\"http://ogp.me/ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:sioc=\"http://rdfs.org/sioc/ns#\" xmlns:sioct=\"http://rdfs.org/sioc/types#\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\">What data are exposed</h2>\n<p xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" xmlns:og=\"http://ogp.me/ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:sioc=\"http://rdfs.org/sioc/ns#\" xmlns:sioct=\"http://rdfs.org/sioc/types#\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\">The CORE project exposes data about the aggregated content. The following schema shows the kind of metadata CORE holds about each resource. </p>\n<h2 xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" xmlns:og=\"http://ogp.me/ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:sioc=\"http://rdfs.org/sioc/ns#\" xmlns:sioct=\"http://rdfs.org/sioc/types#\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\">Data Schema</h2>\n<p xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" xmlns:og=\"http://ogp.me/ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:sioc=\"http://rdfs.org/sioc/ns#\" xmlns:sioct=\"http://rdfs.org/sioc/types#\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\"></img></p>
    \n<h2 xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" xmlns:og=\"http://ogp.me/ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:sioc=\"http://rdfs.org/sioc/ns#\" xmlns:sioct=\"http://rdfs.org/sioc/types#\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\">Data License</h2>\n<p xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" xmlns:og=\"http://ogp.me/ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:sioc=\"http://rdfs.org/sioc/ns#\" xmlns:sioct=\"http://rdfs.org/sioc/types#\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\">All data from CORE (unless otherwise specified) are available under the a Creative Commons Attribution 3.0 Unported License. </p>\n"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .

Почему, черт возьми, Virtuoso пытается проверить согласованность тегов HTML/XML внутри литералов?! Можно ли его выключить? У меня слишком много ошибок в наборе данных, это пустая трата времени, пытаясь найти все строки с ошибками и удалить их вручную.

1 ответ

Ваш главный вопрос заключается в том, почему Virtuoso пытается проверить, может ли лексическая форма, которую вы нам показали, быть проанализирована как корректный контент XML. Virtuoso делает это потому, что пытается соответствовать спецификации RDF 1.1.

Согласно этой спецификации, если тип данных литерала RDF rdf:XMLLiteralтогда лексическая форма должна быть "хорошо сбалансированным, автономным контентом XML" (согласно XML 1.0).

Другие вопросы по тегам