我需要用Time属性编写rdf三元组并使sparql查询得到时间

Has*_*raj 0 attributes rdf sparql triples

我有三倍:Fadi吃苹果.(subject = Fadi,谓词= eat,object = 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>
Run Code Online (Sandbox Code Playgroud)

但是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>
Run Code Online (Sandbox Code Playgroud)

但我无法用sparql获得时间.

我怎么写我的rdf?!!

Rob*_*obV 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>
Run Code Online (Sandbox Code Playgroud)

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

xmlns:ns="http://yourdomain.com/namespace#"
Run Code Online (Sandbox Code Playgroud)

显然,您应该将名称空间URI更改为适合您的名称.

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

ns:startTime="00:00:13"
Run Code Online (Sandbox Code Playgroud)

建议

但是我仍然认为这不会给你想要创建的数据.我建议你不要手动编写RDF/XML,你的问题意味着你在做什么.

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