Como atribuir um array para tipo personalizado em ROWLEX
Pergunta
Eu tenho algum tipo personalizado:
[RdfSerializable]
public class Item
{
[RdfProperty(true)]
public string Name { get; set; }
}
e algum outro tipo que tem variedade de 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; } }
}
E isso está acontecendo que se eu remover atributo CardinalityRestriction de MyArray ele será exportado por OwlGrinder.exe como único item e não como variedade de itens.
Existe alguma outra maneira de definir matrizes sem restringir-los para alguma variedade de elementos?
Solução
ROWLEX OntologyExtractor se comporta corretamente (OwlGrinder lê ontologias e montagens produzir. OntologyExtractor lê conjuntos e expelir ontologias). De acordo com os OWL especificações , se não há nenhuma restrição de cardinalidade associado ao OWL propriedade, então sua cardinalidade é assumido "zero ou mais". Se você quiser uma propriedade não ser uma "propriedade de matriz", então você precisa aplicar a restrição de cardinalidade. A abreviação de que está fazendo a propriedade OWL um propriedade funcional , onde a cardinalidade é 0 ou 1.
Então tudo que você precisa fazer é remover a decoração [CardinalityRestiction (1100)] e você tem o que você quer.
[EDIT: responder sobre o comentário] I reproduzida seu caso, removido o CardinalityRestriction e OntologyExtractor produz o seguinte ontologia:
<?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>
Esta ontologia permite criar arquivos RDF onde seu objeto recipiente tem zero ou mais itens ligados através MyArray OWL propriedade.