0

カスタムタイプがあります:

[RdfSerializable]
public class Item
{
    [RdfProperty(true)]
    public string Name { get; set; }
}

およびアイテムの配列を持つ他のタイプ:

[RdfSerializable]
public class Container
{
      // ... some code

      // if this attribute is missing, then this property will not be exported as array
      [CardinalityRestriction(1, 100)]     
      [RdfProperty(false)]
      public Item[] MyArray { get { return mMyArray; } }
}

そして、CardinalityRestriction 属性を MyArray から削除すると、OwlGrinder.exe によってアイテムの配列ではなく単一のアイテムとしてエクスポートされることが起こっています。

配列を特定の範囲の要素に制限せずに定義する他の方法はありますか?

4

1 に答える 1

1

ROWLEX OntologyExtractor は正しく動作します (OwlGrinder はオントロジーを読み取り、アセンブリを生成します。OntologyExtractor はアセンブリを読み取り、オントロジーを吐き出します)。OWL仕様によると、OWLプロパティにカーディナリティ制限が関連付けられていない場合、そのカーディナリティは「0以上」とみなされます。プロパティを「配列プロパティ」にしない場合は、カーディナリティ制限を適用する必要があります。その省略形は、カーディナリティが 0 または 1 の場合に、OWL プロパティを機能プロパティにすることです。

[CardinalityRestiction(1,100)] 装飾を削除するだけで、必要なものが手に入ります。

[編集: コメントへの返信] 私はあなたのケースを再現し、CardinalityRestriction を削除し、OntologyExtractor は次のオントロジーを生成します:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdfschema="http://www.w3.org/2000/01/rdf-schema#">
    <owl:Ontology rdf:about="http://www.test.com/MyOntology" />
    <owl:Class rdf:about="http://www.test.com/MyOntology#Item" />
    <owl:DatatypeProperty rdf:about="http://www.test.com/MyOntology#Name">
        <rdfschema:domain rdf:resource="http://www.test.com/MyOntology#Item" />
        <rdfschema:range rdf:resource="http://www.w3.org/2001/XMLSchema#string" />
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty" />
    </owl:DatatypeProperty>
    <owl:ObjectProperty rdf:about="http://www.test.com/MyOntology#MyArray">
        <rdfschema:domain>
            <owl:Class rdf:about="http://www.test.com/MyOntology#Container" />
        </rdfschema:domain>
        <rdfschema:range rdf:resource="http://www.test.com/MyOntology#Item" />
    </owl:ObjectProperty>
</rdf:RDF>

このオントロジーを使用すると、コンテナ オブジェクトが MyArray OWL プロパティを介してリンクされた 0 個以上の項目を持つ RDF ファイルを作成できます。

于 2009-09-09T14:42:18.083 に答える