2013-04-29 2 views
1

Я использую библиотеку .Net RDF для создания некоторого sparql-запроса в файлах RDF. , но когда я попытался загрузить файл RDF в C# .Net RDFlibrary.Невозможно проанализировать этот RDF/XML, так как System.Xml не смог проанализировать документ

Ошибка:

Невозможно разобрать этот RDF/XML, поскольку System.Xml не смог разобрать документа см Внутренний Exception для деталей

Мой RDF файл:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE rdf:RDF [<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'> 
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'> 
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>]> 
<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:dnr="http://www.dotnetrdf.org/configuration#" 
     xmlns:rdf="http://www.w3.org/XML/1998/namespace#" 
     xml:base="http://www.example.org/"> 

    <rdf:Description rdf:about="Fadi"> 
    <ns0:eat xmlns:ns0="http://example.org/">Apple</ns0:eat> 
    <xml:startTime>00:01:38</xml:startTime> 
    <xml:endTime>00:01:39</xml:endTime> 
    </rdf:Description> 
</rdf:RDF> 

и инструкция для загрузки:

Graph myGraph = new Graph(); 
FileLoader.Load(myGraph, "C:\\Users\\hasoOn\\Desktop\\tt.rdf"); 

Может ли кто-нибудь сказать мне, что не так? - и почему я получаю эту ошибку?

ответ

1

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

В вашем случае ваша проблема случается, что вы определили rdf пространство имен дважды на одном элементе т.е. у вас есть два xmlns:rdf атрибуты на корневой rdf:RDF элемент, который делает ваш XML незаконным.

Если удалить, что тогда это будет действительным XML, однако он все равно будет не разобрать в dotNetRDF, потому что вы использовали свойство xml:startTime и xml:endTime без определения xml имен. Я думаю, что dotNetRDF, вероятно, допустил бы это, потому что неявно определен в XML, но использование пространства имен xml для чего угодно, кроме самого синтаксиса XML, как правило, является очень плохой идеей и симптомом плохого моделирования данных.

+0

ОК, что мне делать? как я могу улучшить свой rdf-файл? –

+0

URI пространства имен для данного префикса «xml» не известен в пространстве имен NamespaceMapper. Вы забыли определить пространство имен для этого префикса? как я могу решить проблему? –

+0

Вы не должны использовать пространство имен 'xml' для свойств в вашем RDF (* NB *, это также указывает на ошибку, которую dotNetRDF должен разрешить, поскольку' xml' должен быть неявно определен для RDF/XML). Как я уже сказал в конце своего ответа, неверно использовать пространство имен 'xml' для моделирования данных. Пространство имен 'xml' должно использоваться только для конкретных XML-данных, то есть для установки базового URI, а не для ваших фактических данных. – RobV

Смежные вопросы