0

私は単純な n3 オントロジーを持っています

 @prefix my: <http://www.codeproject.com/KB/recipes/n3_notation#>.
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .



        my:spec a rdfs:Class.
        my:security a rdfs:Class; rdfs:subClassOf my:spec .

        my:bluetooth a my:security;
        my:preferedby my:BusinessPerson;
        my:name "bluetooth".

クラス仕様を定義し、セキュリティクラスを仕様のサブクラスとして定義しようとしています。

これは、dotNetRdf ライブラリの助けを借りて使用している私の sparql クエリです

PREFIX my: <http://www.codeproject.com/KB/recipes/n3_notation#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?name WHERE {
    [ a rdfs:subClassOf*/my:spec;
        my:preferedby my:BusinessPerson;
        my:name ?name].
}

dotnetrdf ライブラリを使用してオントロジーをクエリし、

Graph g2 = new Graph();
        g2.LoadFromFile(@"C:\\Users\Ravindu Kottahachchi\Desktop\ontology.n3");
        ISparqlDataset ds = new InMemoryDataset(g2);
        LeviathanQueryProcessor processor = new LeviathanQueryProcessor(ds);
        SparqlResultSet resul = processor.ProcessQuery(query1)  as SparqlResultSet;

パスのカーディナリティを示すためにトークンを使用せずにクエリを実行すると、このセットアップは正常に機能します

しかし、上記のクエリを実行するとエラーが発生しますVDS.RDF.Parsing.Tokens.MultiplyToken' Token which is valid only after a Predicate to indicate Path Cardinality

使用している dotnetrdf セットアップに何か問題がありますか?

私はこれを使いました

    TripleStore store = new TripleStore();
            Graph g = new Graph();
            Notation3Parser parser = new Notation3Parser();
            parser.Load(g, @"C:\\Users\Ravindu Kottahachchi\Desktop\ontology.n3");
            store.Add(g);

            SparqlQueryParser sparqlparser = new SparqlQueryParser();
SparqlResultSet results = store.ExecuteQuery(query) as SparqlResultSet;

同じsparqlクエリでトリプルストアを使用しますが、同じエラーも発生しました

誰かが私が間違いを犯した場所で私を助けてもらえますか 事前に感謝します

4

0 に答える 0