Comment attribuer un tableau de type personnalisé dans ROWLEX
Question
J'ai un certain type personnalisé:
[RdfSerializable]
public class Item
{
[RdfProperty(true)]
public string Name { get; set; }
}
et un autre type qui a tableau de l'élément:
[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; } }
}
Et il se produit que si je supprime l'attribut CardinalityRestriction de MonTableau il sera exporté par OwlGrinder.exe comme un seul article et pas en tant que tableau d'éléments.
Y at-il une autre façon de définir des tableaux sans les contraindre à une certaine gamme d'éléments?
La solution
ROWLEX OntologyExtractor se comporte correctement (OwlGrinder lit ontologies et de produire des assemblages. OntologyExtractor lit assemblées et recrache sur ontologies). Selon le spécifications OWL , s'il n'y a pas de restriction de cardinalité associée au propriété OWL, sa cardinalité est supposé « zéro ou plus ». Si vous voulez une propriété ne soit pas une « propriété de tableau », alors vous devez appliquer la restriction de cardinalité. Un raccourci pour que fait la propriété OWL un propriété fonctionnelle, où la cardinalité est 0 ou 1.
Donc tout ce que vous devez faire est de retirer la décoration [CardinalityRestiction (1100)] et vous avez ce que vous voulez.
[EDIT: répondre au commentaire] Je reproduis votre cas, enlevé le CardinalityRestriction et OntologyExtractor produit l'ontologie suivante:
<?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>
Cette ontologie vous permet de créer des fichiers RDF où votre objet conteneur a zéro ou plusieurs éléments liés via la propriété MonTableau OWL.