Как приписать массив пользовательскому типу в ROWLEX - PullRequest
0 голосов
/ 07 августа 2009

У меня есть пользовательский тип:

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

и некоторый другой тип, имеющий массив Item:

[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 как отдельный элемент, а НЕ как массив элементов.

Есть ли другой способ определения массивов, не ограничивая их некоторым диапазоном элементов?

1 Ответ

1 голос
/ 09 сентября 2009

ROWLEX OntologyExtractor ведет себя корректно (OwlGrinder читает онтологии и создает сборки. OntologyExtractor считывает сборки и выплевывает онтологии). Согласно спецификациям OWL , если нет ограничения по количеству элементов, связанного со свойством OWL, то его мощность принимается равной «ноль или более». Если вы хотите, чтобы свойство не было «свойством массива», тогда вам нужно применить ограничение количества элементов. Сокращение для этого делает свойство OWL функциональным свойством , где количество элементов равно 0 или 1.

Так что все, что вам нужно сделать, это удалить украшение [CardinalityRestiction (1100)], и вы получите то, что хотите.

[РЕДАКТИРОВАТЬ: отвечая на комментарий] Я воспроизвел ваш случай, удалил 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>

Эта онтология позволяет вам создавать RDF-файлы, в которых ваш контейнерный объект имеет ноль или более элементов, связанных через свойство MyArray OWL.

...