Как присвоить массиву пользовательский тип в ROWLEX

StackOverflow https://stackoverflow.com/questions/1241534

  •  12-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

РОУЛЕКС OntologyExtractor работает правильно (OwlGrinder читает онтологии и создает сборки.OntologyExtractor читает сборки и выдает онтологии).Согласно Технические характеристики СОВА, если нет ограничения мощности, связанного со свойством OWL, то его мощность предполагается равной нулю или больше.Если вы хотите, чтобы свойство не было «свойством массива», вам необходимо применить ограничение количества элементов.Сокращением этого является превращение свойства OWL в функциональное свойство, где мощность равна 0 или 1.

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

[РЕДАКТИРОВАТЬ:Отвечая на комментарий] Я воспроизвел ваш случай, удалил кардинальность, а онтологию Extractor производит следующую онтологию:

<?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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top