1

turtle/n3 ファイルでフィルタリングを実行し、同じ種類の別のファイルを返す必要があります。私が取り組んでいる基本的なデータ要素 (場所) は次のとおりです。

:pt0001
     vcard:category "Poste e Telegrafi"
    ; vcard:fn "Ufficio Bologna 1"
    ; vcard:extended-address "Via Cairoli 9, Bologna BO, Italy"
    ; vcard:latitude "44.504192"
    ; vcard:longitude "11.338661"
    ; vcard:tel "051 243425"
    ; vcard:fax "051 244459"
    ; cs:opening "Mon, Tue, Wed, Thu, Fri: 0800-1330. Sat: 0800-1230."
    ; cs:closing "01-01, 01-06, P, LA, 04-25, 05-01, 06-02, 08-15, 11-01, 12-08, 12-25, 12-26: .".

たとえば、特定の名前または緯度またはカテゴリを持つ要素 (ptxxxx) を検索したい。rdf からトリプルを取得するクエリでコンストラクトを使用するように既にアドバイスされているので、作成中の新しいグラフ/rdf にそれらを追加できます。実際のところ、正規表現フィルター関数を使用して (大文字と小文字を区別しない) 名前で検索するためにトリプルをフィルター処理すると、この場合、探していた名前を定義するトリプルが 1 つしか得られません。例えば、「Ufficio Bologna 1」(目的語)という名前(述語)の主語(ptxxxx)を検索することはできますか?

4

2 に答える 2

4

その名前を正確に持つサブジェクトのトリプルを取得したい場合は、簡単な説明を行うことができます。

describe ?s where { ?s vcard:fn "Ufficio Bologna 1". }

それ以外の場合、正規表現を使用する場合は、クエリを少し変更できます

describe ?s where { ?s vcard:fn ? name. filter (regex(?name, "regex goes here")). }

注意が必要ですが、大規模なデータセットに対する正規表現はコストがかかる可能性があります。多くのシステムでは、SPARQL の拡張機能が提供されています。これにより、リテラル値にフルテキスト インデックスが作成され、より通常の検索構文を使用して検索できるようになります。

于 2012-04-20T12:33:21.483 に答える
3

私はこのように解決しました:

CONSTRUCT {?s ?p ?o}
        WHERE {
                ?s ?p ?o;
                vcard:fn ?name.
                FILTER regex (?name ,"^ufficio bologna 1$", "i")
                }
于 2012-04-21T13:20:46.663 に答える