2016-03-30 20 views
2

私は私の料理のレシピオントロジーに2つのクラスがあります。これは、オブジェクトのプロパティであるSPARQL正規表現が実行されているが、何も表示されません

<Class rdf:about="&SouthSulawesiCulinaryRecipes;FoodAndBeveragesRecipes"> 
    <equivalentClass> 
     <Restriction> 
      <onProperty rdf:resource="&SouthSulawesiCulinaryRecipes;NumberOfIngredientsRequired"/> 
      <minQualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">1</minQualifiedCardinality> 
      <onDataRange rdf:resource="&xsd;int"/> 
     </Restriction> 
    </equivalentClass> 
    <equivalentClass> 
     <Restriction> 
      <onProperty rdf:resource="&SouthSulawesiCulinaryRecipes;UsesTools"/> 
      <onClass rdf:resource="&SouthSulawesiCulinaryRecipes;KitchenEquipment"/> 
      <minQualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">1</minQualifiedCardinality> 
     </Restriction> 
    </equivalentClass> 
</Class> 

<Class rdf:about="&SouthSulawesiCulinaryRecipes;Place"/> 

:まず

<!-- http://www.semanticweb.org/hp/ontologies/2014/4/SouthSulawesiCulinaryRecipes#HasIngredients --> 

    <rdfs:range rdf:resource="&SouthSulawesiCulinaryRecipes;FoodAndBeverages"/> 
    <rdfs:domain rdf:resource="&SouthSulawesiCulinaryRecipes;_IngR"/> 
</ObjectProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2014/4/SouthSulawesiCulinaryRecipes#HasRecipe --> 

<ObjectProperty rdf:about="&SouthSulawesiCulinaryRecipes;HasRecipe"> 
    <rdfs:range rdf:resource="&SouthSulawesiCulinaryRecipes;FoodAndBeveragesRecipes"/> 
    <rdfs:domain rdf:resource="&SouthSulawesiCulinaryRecipes;Place"/> 
    <rdfs:subPropertyOf rdf:resource="&owl;topObjectProperty"/> 
</ObjectProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2014/4/SouthSulawesiCulinaryRecipes#IngR --> 

<ObjectProperty rdf:about="&SouthSulawesiCulinaryRecipes;IngR"> 
    <rdfs:domain rdf:resource="&SouthSulawesiCulinaryRecipes;FoodAndBeveragesRecipes"/> 
    <inverseOf rdf:resource="&SouthSulawesiCulinaryRecipes;Relation_Of"/> 
    <rdfs:range rdf:resource="&SouthSulawesiCulinaryRecipes;_IngR"/> 
</ObjectProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2014/4/SouthSulawesiCulinaryRecipes#Ing_Type --> 

<ObjectProperty rdf:about="&SouthSulawesiCulinaryRecipes;Ing_Type"> 
    <rdfs:range rdf:resource="&SouthSulawesiCulinaryRecipes;IngType"/> 
    <rdfs:domain rdf:resource="&SouthSulawesiCulinaryRecipes;_IngR"/> 
</ObjectProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2014/4/SouthSulawesiCulinaryRecipes#IngredientUsedToMake --> 

<ObjectProperty rdf:about="&SouthSulawesiCulinaryRecipes;IngredientUsedToMake"> 
    <rdfs:domain rdf:resource="&SouthSulawesiCulinaryRecipes;FoodAndBeverages"/> 
    <inverseOf rdf:resource="&SouthSulawesiCulinaryRecipes;HasIngredients"/> 
    <rdfs:range rdf:resource="&SouthSulawesiCulinaryRecipes;_IngR"/> 
</ObjectProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2014/4/SouthSulawesiCulinaryRecipes#MeasurementUnit --> 

<ObjectProperty rdf:about="&SouthSulawesiCulinaryRecipes;MeasurementUnit"> 
    <rdfs:range rdf:resource="&SouthSulawesiCulinaryRecipes;CookingMeasurements"/> 
    <rdfs:domain rdf:resource="&SouthSulawesiCulinaryRecipes;_IngR"/> 
</ObjectProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2014/4/SouthSulawesiCulinaryRecipes#RecipeOrigin --> 

<ObjectProperty rdf:about="&SouthSulawesiCulinaryRecipes;RecipeOrigin"> 
    <rdfs:domain rdf:resource="&SouthSulawesiCulinaryRecipes;FoodAndBeveragesRecipes"/> 
    <inverseOf rdf:resource="&SouthSulawesiCulinaryRecipes;HasRecipe"/> 
    <rdfs:range rdf:resource="&SouthSulawesiCulinaryRecipes;Place"/> 
</ObjectProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2014/4/SouthSulawesiCulinaryRecipes#Relation_Of --> 

<ObjectProperty rdf:about="&SouthSulawesiCulinaryRecipes;Relation_Of"> 
    <rdfs:range rdf:resource="&SouthSulawesiCulinaryRecipes;FoodAndBeveragesRecipes"/> 
    <rdfs:domain rdf:resource="&SouthSulawesiCulinaryRecipes;_IngR"/> 
</ObjectProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2014/4/SouthSulawesiCulinaryRecipes#ToolsUsedByRecipe --> 

<ObjectProperty rdf:about="&SouthSulawesiCulinaryRecipes;ToolsUsedByRecipe"> 
    <rdfs:range rdf:resource="&SouthSulawesiCulinaryRecipes;FoodAndBeveragesRecipes"/> 
    <rdfs:domain rdf:resource="&SouthSulawesiCulinaryRecipes;KitchenEquipment"/> 
    <inverseOf rdf:resource="&SouthSulawesiCulinaryRecipes;UsesTools"/> 
</ObjectProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2014/4/SouthSulawesiCulinaryRecipes#UsesTools --> 

<ObjectProperty rdf:about="&SouthSulawesiCulinaryRecipes;UsesTools"> 
    <rdfs:domain rdf:resource="&SouthSulawesiCulinaryRecipes;FoodAndBeveragesRecipes"/> 
    <rdfs:range rdf:resource="&SouthSulawesiCulinaryRecipes;KitchenEquipment"/> 
</ObjectProperty> here 

を、私は取得するには、このクエリを持っています私のオントロジー内のすべてのレシピ

SELECT ?FoodAndBeveragesRecipes 
    WHERE { 
     ?Place :HasRecipe ?FoodAndBeveragesRecipes 
    } 

は、結果は次のとおりです。

CotoMakassar

さらば

EsPisangIjo

PalluMata

DanpoGoreng

DanpoRebus

SambalMangga

今、私はレシピ名が "Danpo"のデータセットをすべて取得するためにこのクエリを実行しようとしています(これよりも簡単なコードが他にあるかどうかは分かりません)

SELECT ?FoodAndBeveragesRecipes 
    WHERE { 
     ?Place :HasRecipe ?FoodAndBeveragesRecipes . 
     FILTER regex (?FoodAndBeveragesRecipes ,"Danpo", "i") 
    } 

クエリは実行されていますが、空です。私のデータは取得できません。何もエラーがないと思います。 なぜ私のフィルタが正しく動作していないのだろうか?正規表現でキーワードの正確なデータセットを取得するにはどうすればよいですか? 誰かが私を助けることができますか?

ありがとうございました。

答えて

2

私はこれがExtract triples containing particular substring using SPARQLの複製であることは間違いないと確信していますが、私はそのようにマークしましたが、ここでももう少し説明してください。 hasRecipeプロパティは、オブジェクトプロパティです。それは、そのオブジェクトが個人でなければならないことを意味します。つまり、それらはIRIになります。 regex関数には、引数として文字列が必要です。あなたはIRIのテキストに対して正規表現に一致する場合は、STR機能を使用する必要があります:あなたはそれが文字列が含まれているかどうかを確認したい場合は、言っ

FILTER regex (str(?FoodAndBeveragesRecipes) ,"Danpo", "i") 

、およびあなたはSPARQL 1.1を使用している場合、あなたはcontainsを使用することができます。

filter contains(str(?FoodAndBeveragesRecipes), "Danpo") 
+0

それが働いて、それは、おかげでたくさん:) 実際に私はIRIのテキストに対して正規表現にマッチしたい、気持ちいいので、私正規表現funcitonを使用します。 – Jeje

+0

@Jejeあなたの例に実際に正規表現がないので(私は文字列にマッチしています)、わかりませんでした。大文字と小文字を区別しない場合は、**が含まれているかどうかを確認できます(lcase(str(?FoodAndBeveragesRecipres))、 "danpo")**。 ** regex **よりも安いかもしれません。 –

+0

よろしくお願いします。すみません、私はsparqlの新しいクエリで、あなたは私に説明してくださいいつ、なぜ私は代わりに正規表現を使うべきでしょうか?あなたのサンプルに正規表現が実際にはありませんか?私はそれが正規表現だと思ったのですか?新しい質問をするべきですか?ありがとう – Jeje

関連する問題