0

私はトリプルを持っています:ファディはリンゴを食べます。(主語 = Fadi、述語 = 食べる、目的語 = Apple)。ファディがリンゴを食べた時間は 00:00:13 で、ファディがリンゴを食べた時間は 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

名前空間を定義するために使用される XML の予約済みプレフィックスxmlnsです。xmlns

独自の名前空間を定義したら、それを属性に使用できます。

<?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 に答える