0

我有三倍:Fadi 吃苹果。(主语 = Fadi,谓语 = 吃,宾语 = Apple)。我有 fadi 吃苹果的时间,它是:00:00:13 我有 fadi 吃苹果的时间,它是:00:00:50

我怎样才能为此编写一个带有时间属性的rdf-triples文件?以及如何从 rdf 文件中获取带有 sparql 查询请求的 startTime 和 endTime?

我试着这样写我的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#"
         xml:base="http://www.example.org/"
    xmlns:startTime="http://example.org/startTime#"
    xmlns:endTime="http://example.org/endTime#">

<rdf:Description rdf:about="Fadi">
        <ns:be xmlns:ns="http://example.org/" xmlns:startTime="00:00:13" xmlns:endTime="00:00:16">May</ns:be>
      </rdf:Description>
</rdf:RDF>

但 c# 给了我:无效的 URI:URI 方案无效。

我试过这个:

<?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#"
         xml:base="http://www.example.org/">

<rdf:Description rdf:about="Fadi">
        <ns:be xmlns:ns="http://example.org/" xml:startTime="00:00:13" xml:endTime="00:00:16">May</ns:be>
      </rdf:Description>
</rdf:RDF>

但我无法获得 sparql 的时间。

我怎么写我的rdf?!!

4

1 回答 1

6

您不应该使用它xmlns来尝试定义属性,xmlns它是 XML 中用于定义命名空间的保留前缀。

一旦您定义了自己的命名空间,您就可以将其用于属性,例如

<?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:ns="http://yourdomain.com/namespace#"
         xml:base="http://www.example.org/">

  <rdf:Description rdf:about="Fadi" ns:startTime="00:00:13" ns:endTime="00:00:16">
    <ns:be>May</ns:be>
  </rdf:Description>
</rdf:RDF>

在这里,我在根元素中定义了一个命名空间,如下所示:

xmlns:ns="http://yourdomain.com/namespace#"

显然,您应该将命名空间 URI 更改为适合您的内容。

然后我可以使用新定义的ns前缀来引用该命名空间中的术语,例如

ns:startTime="00:00:13"

建议

但是,我仍然认为这不会为您提供您打算创建的数据。我建议您停止尝试手动编写 RDF/XML,您的问题暗示您正在做的事情。

相反,我建议学习像Turtle这样的人类可读的序列化,因为它更容易理解。此外,它比 RDF/XML 更加以三元组为中心,因此它将帮助您更好地理解您实际表达的 RDF 三元组,从而使您更容易理解如何编写实际返回所需数据的 SPARQL 查询。

于 2013-05-08T20:58:15.747 回答