From f2bd46b5f96b44e3e007de0f69c93be120d06954 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 28 Oct 2026 02:59:18 +0000 Subject: [PATCH 1/7] feat(cli): sysml -metamodel-table writes the pinned metamodel's table as JSON for generators outside the module Co-Authored-By: Nicolas Rouquette --- changes/unreleased/metamodel-table.added.md | 1 + cmd/sysml/graphs.go | 13 +++ cmd/sysml/main.go | 27 ++++- cmd/sysml/metamodel_table_test.go | 61 ++++++++++ cmd/sysml/usage.go | 3 + docs/reference/cli.md | 1 + docs/reference/rdf-mapping.md | 3 +- internal/translate/rdf/ontology/table_json.go | 106 ++++++++++++++++++ .../translate/rdf/ontology/table_json_test.go | 42 +++++++ packaging/man/man1/sysml.1 | 8 ++ 10 files changed, 262 insertions(+), 3 deletions(-) create mode 100644 changes/unreleased/metamodel-table.added.md create mode 100644 cmd/sysml/metamodel_table_test.go create mode 100644 internal/translate/rdf/ontology/table_json.go create mode 100644 internal/translate/rdf/ontology/table_json_test.go diff --git a/changes/unreleased/metamodel-table.added.md b/changes/unreleased/metamodel-table.added.md new file mode 100644 index 0000000000..855651f575 --- /dev/null +++ b/changes/unreleased/metamodel-table.added.md @@ -0,0 +1 @@ +- `sysml -metamodel-table` writes the pinned pilot metamodel's table as JSON — every metaclass with its parents and abstractness, every property with its defining class, kind, range, bounds, order, derivation, redefinitions, subsettings and opposite, every enumeration, and the pilot tag, commit and metamodel date — so generators outside this module (the QVTS reflection queries in Open-MBEE/qvts) follow the same table the API-JSON and RDF writers do. Like `-metaclass-graph`, it reads no model and is a run of its own. diff --git a/cmd/sysml/graphs.go b/cmd/sysml/graphs.go index 0493472106..e0a41e9f0b 100644 --- a/cmd/sysml/graphs.go +++ b/cmd/sysml/graphs.go @@ -38,3 +38,16 @@ func writeMetaclassGraph() error { } return writeOutputFile(outputPath, out, "metaclass hierarchy") } + +// writeMetamodelTable writes the generated metamodel table as JSON to stdout or to -output. +func writeMetamodelTable() error { + out, err := ontology.MarshalTable() + if err != nil { + return err + } + if outputPath == "" { + _, err := os.Stdout.Write(out) + return err + } + return writeOutputFile(outputPath, out, "metamodel table") +} diff --git a/cmd/sysml/main.go b/cmd/sysml/main.go index c33553255c..010198d706 100644 --- a/cmd/sysml/main.go +++ b/cmd/sysml/main.go @@ -111,6 +111,7 @@ var ( schedule schedulePolicy listEngines bool metaclassGraph bool + metamodelTable bool explainCodes codeNames probeEngines bool engine engineSelection @@ -499,7 +500,7 @@ func runCLI() int { case len(args) > 0: fmt.Fprintln(os.Stderr, "sysml: -html-default-css writes the default stylesheet, which no model shapes; ask for it without model files") return 2 - case modelRunRequested() || metaclassGraph: + case modelRunRequested() || metaclassGraph || metamodelTable: fmt.Fprintln(os.Stderr, "sysml: -html-default-css writes the default stylesheet and nothing else; ask for it in its own run") return 2 case docForm != "" || diagramForm != "" || pdfEngine != "" || pdfTitlePage || pdfTOC || pdfNumbering || docNumberFigures || htmlPageFlagsGiven(): @@ -523,7 +524,7 @@ func runCLI() int { case len(args) > 0: fmt.Fprintln(os.Stderr, "sysml: -metaclass-graph writes the metaclass hierarchy of the pinned metamodel, which no model shapes; ask for it without model files") return 2 - case modelRunRequested() || htmlShowCSS: + case modelRunRequested() || htmlShowCSS || metamodelTable: fmt.Fprintln(os.Stderr, "sysml: -metaclass-graph writes the metaclass hierarchy and nothing else; ask for it in its own run") return 2 case docForm != "" || diagramForm != "" || pdfEngine != "" || pdfTitlePage || pdfTOC || pdfNumbering || docNumberFigures || htmlPageFlagsGiven() || @@ -538,6 +539,28 @@ func runCLI() int { return exitHolds } + // The metamodel table is likewise a property of the pin: one JSON record of + // every metaclass, property and enumeration, for generators outside this module. + if metamodelTable { + switch { + case len(args) > 0: + fmt.Fprintln(os.Stderr, "sysml: -metamodel-table writes the pinned metamodel's table, which no model shapes; ask for it without model files") + return 2 + case modelRunRequested() || htmlShowCSS: + fmt.Fprintln(os.Stderr, "sysml: -metamodel-table writes the metamodel table and nothing else; ask for it in its own run") + return 2 + case docForm != "" || diagramForm != "" || pdfEngine != "" || pdfTitlePage || pdfTOC || pdfNumbering || docNumberFigures || htmlPageFlagsGiven() || + fromFormat != "" || strictMode || syncBase != "" || syncState != "" || + syncConfirmDeletes || syncMintIDs || syncAnnotate != "": + fmt.Fprintln(os.Stderr, "sysml: -metamodel-table writes the metamodel table, which reads no input; the input, repository and document options do not apply") + return 2 + } + if err := writeMetamodelTable(); err != nil { + return fail(err) + } + return exitHolds + } + if renderDoc == "" && renderDocsDir == "" && (docForm != "" || diagramForm != "" || pdfEngine != "" || pdfTitlePage || pdfTOC || pdfNumbering || docNumberFigures || htmlFlagsGiven()) { fmt.Fprintln(os.Stderr, "sysml: -doc-form, -diagram-form, the document options and the stylesheet options apply to -render-document and -render-documents; name the document to render") diff --git a/cmd/sysml/metamodel_table_test.go b/cmd/sysml/metamodel_table_test.go new file mode 100644 index 0000000000..d44d343843 --- /dev/null +++ b/cmd/sysml/metamodel_table_test.go @@ -0,0 +1,61 @@ +package main + +import ( + "encoding/json" + "os" + "os/exec" + "path/filepath" + "testing" + + "github.com/Open-MBEE/OpenSysML/internal/translate/rdf/ontology" +) + +// TestMetamodelTableIsItsOwnRun pins that -metamodel-table writes the committed +// table as JSON, reads no model, stands in for no other mode and never writes +// over an input file. +func TestMetamodelTableIsItsOwnRun(t *testing.T) { + binary := buildCLI(t) + + run := runCommand(t, exec.Command(binary, "-metamodel-table")) + wantReport(t, run, 0, `"pilotTag"`, `"definingClass": "Element"`, `"name": "PartUsage"`) + var table ontology.Table + if err := json.Unmarshal([]byte(run.stdout), &table); err != nil { + t.Fatalf("the output is not the table's JSON: %v", err) + } + if table.Metamodel != ontology.Version || table.PilotTag != ontology.SourceTag || table.PilotCommit != ontology.SourceCommit { + t.Errorf("header = %s %s %s, want the table's", table.Metamodel, table.PilotTag, table.PilotCommit) + } + if len(table.Classes) != len(ontology.Classes()) || len(table.Properties) != len(ontology.Properties()) || + len(table.Enumerations) != len(ontology.Enumerations()) { + t.Errorf("counts = %d classes, %d properties, %d enumerations; want the table's", + len(table.Classes), len(table.Properties), len(table.Enumerations)) + } + + dir := t.TempDir() + model := filepath.Join(dir, "m.sysml") + const source = "package P;\n" + if err := os.WriteFile(model, []byte(source), 0o644); err != nil { + t.Fatal(err) + } + wantReport(t, runCommand(t, exec.Command(binary, model, "-metamodel-table")), + 2, "ask for it without model files") + wantReport(t, runCommand(t, exec.Command(binary, "-metamodel-table", "-convert", "ttl")), + 2, "ask for it in its own run") + wantReport(t, runCommand(t, exec.Command(binary, "-metamodel-table", "-metaclass-graph")), + 2, "ask for it in its own run") + wantReport(t, runCommand(t, exec.Command(binary, "-metamodel-table", "-from", "kerml")), + 2, "the input, repository and document options do not apply") + if got, err := os.ReadFile(model); err != nil || string(got) != source { + t.Fatalf("the model file changed: %q, %v", got, err) + } + + out := filepath.Join(dir, "metamodel.json") + wantReport(t, runCommand(t, exec.Command(binary, "-metamodel-table", "-o", out)), 0) + written, err := os.ReadFile(out) + if err != nil { + t.Fatal(err) + } + if string(written) != run.stdout { + t.Errorf("-o writes the bytes that stdout carries; they differ") + } +} diff --git a/cmd/sysml/usage.go b/cmd/sysml/usage.go index 1a77dd65de..1582517350 100644 --- a/cmd/sysml/usage.go +++ b/cmd/sysml/usage.go @@ -126,6 +126,7 @@ func doc() usage.Doc { usage.Ex("sysml -engines", "List engines, kind and status; nothing runs"), usage.Ex("sysml -engines -probe", "Also start each external engine once"), usage.Ex("sysml -metaclass-graph -o metaclasses.ttl", "Write the metaclass hierarchy as Turtle"), + usage.Ex("sysml -metamodel-table -o metamodel.json", "Write the metamodel table as JSON"), usage.Ex("sysml -engine explore -action Drive m.sysml", "The same as -schedule explore"), usage.Ex("sysml -engine all -requirement R m.sysml", "Every engine that covers the question"), usage.Ex("sysml -engine run -json -constraint C m.sysml", "One engine; the plan in the report"), @@ -697,6 +698,7 @@ func registerFlags(fs *flag.FlagSet) { fs.Var(&modelChecks.samples, "samples", "Draw this many values uniformly from each -sweep range instead of stepping through it; needs -seed") fs.Var(&jobsFlag, "jobs", "Runs of one check that may go concurrently, each on a worker of its own, and files of one load that are parsed and validated at once; the result is the same at any count. Default OPENSYSML_JOBS, else one per CPU, fewer where the memory available leaves less than 512 MiB per worker") + fs.BoolVar(&metamodelTable, "metamodel-table", false, "Write the pinned pilot metamodel's table as JSON — every metaclass with its parents, every property with its defining class, kind, range, bounds and flags, every enumeration, and the pilot tag, commit and metamodel date — to stdout or -o, without a model, and exit") fs.BoolVar(&metaclassGraph, "metaclass-graph", false, "Write the SysML metaclass hierarchy of the pinned pilot metamodel as Turtle (rdfs:Class, rdfs:subClassOf, sysx:abstract) to stdout or -o, without a model, and exit") fs.BoolVar(&listEngines, "engines", false, "List the analysis engines this build knows and their status, spawning nothing, and exit") fs.BoolVar(&probeEngines, "probe", false, "With -engines, also start each external engine once and report the outcome as its status") @@ -848,6 +850,7 @@ func optionGroups() []usage.OptionGroup { usage.Opt("convert", formatArg), usage.Opt("stdlib", ""), usage.Opt("metaclass-graph", ""), + usage.Opt("metamodel-table", ""), usage.Opt("migrate", formatArg), usage.Opt("from", formatArg), usage.Opt("import", fileArg), diff --git a/docs/reference/cli.md b/docs/reference/cli.md index ea0c04d9f7..76dcc6bad0 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -342,6 +342,7 @@ written in, so the verdicts are about that object: | `-check-timeout ` | With `-engine check`, `-engine smt` or `-engine all`: the wall clock the check's plan may run for, as `30s` or `2m`, and the time each of the `smt` engine's solver queries may take, in place of `OPENSYSML_SMT_TIMEOUT`; a search the clock stops is reported `incomplete: time` with the states and depth it reached, not as a verdict, and exits 2. Unbounded by default, the solver's queries at `OPENSYSML_SMT_TIMEOUT` | | `-engines` | Lists the analysis engines this build knows — name, kind, protocol, authority, the question kinds each answers and its status — and exits, without a model and without starting a process: the external engines of `OPENSYSML_ENGINES` and the tools of `OPENSYSML_TOOLS` are listed from their manifests alone, each followed by a line naming its file and command. See [Analysis engines](#analysis-engines) | | `-metaclass-graph` | Writes the SysML metaclass hierarchy of the pinned pilot metamodel as Turtle to stdout, or to `--output`, and exits without reading a model: one `rdfs:Class` per metaclass in the `sysml:` namespace, `rdfs:subClassOf` per declared general metaclass and `sysx:abstract true` on the abstract ones, the file committed as `internal/translate/rdf/ontology/sysml-metaclasses.ttl`. A store holding one `rdf:type` per element finds the specializations of a metaclass through `rdf:type/rdfs:subClassOf*` once it is loaded. See [Metaclass hierarchy graph](rdf-mapping.md#metaclass-hierarchy-graph) | +| `-metamodel-table` | Writes the pinned pilot metamodel's table as JSON to stdout, or to `--output`, and exits without reading a model: `metamodel` (the ecore namespace date), `pilotTag`, `pilotCommit`, then `classes` (name, `abstract`, `parents`), `properties` (name, `definingClass`, `kind` object or datatype, `range` as a metaclass or enumeration name or a datatype IRI, `lower`, `upper` with -1 unbounded, `ordered`, `nonunique`, `derived`, `default`, `redefines`, `subsets`, `opposite`) and `enumerations` (name, `literals`) — the same table (`internal/translate/rdf/ontology/table.go`, generated from the pilot's `SysML.ecore`) the API-JSON and RDF writers follow, for generators that live outside this module. See [Metaclass hierarchy graph](rdf-mapping.md#metaclass-hierarchy-graph) | | `-probe` | With `-engines`, also start each external engine once, check its `describe` against its manifest entry field by field and report the outcome as its status (`ready (…; describe agrees)`, or the first field that disagrees). See [External engines](external-engines.md) | | `-engine \|auto\|all` | The analysis engine every check of the invocation is put to. `auto` (the default) picks the engine of highest authority covering the question and advances past one that refuses or answers *not covered*, reaching an external engine only after every built-in one has; a name (`run`, `explore`, `check`, `smt`, `sweep`, `solve`, or an external engine's) puts the question to that engine alone, and its refusal is the answer; `all` puts it to every engine covering it, one after another in name order, and composes their answers. A name no engine is registered under is refused before anything runs. `-engine explore` explores as `-schedule explore` does; `-engine check` searches every schedule of each `-action` for a violation, a deadlock, a failure or a divergence ([Checking every schedule of an action](#checking-every-schedule-of-an-action-or-a-state-machine)); `-engine smt` decides a `-check-property` over every schedule and every value of the free inputs with an SMT solver ([Deciding a property over the inputs](#deciding-a-property-over-the-inputs)). See [Analysis engines](#analysis-engines) | | `-jobs ` | Runs of one check that may go concurrently — the linearizations of an exploration, the rows of a `-sweep`/`-samples`, the engines `-engine all` consults — each on a worker of its own over the shared model, and how many files of one load are parsed and validated at once (`-validate`, `-satisfy`, `-check` and every mode that loads files). `n` is a positive integer; the default is `OPENSYSML_JOBS`, else one per CPU, fewer where the memory available leaves less than 512 MiB per worker (Linux: `MemAvailable` and the cgroup's `memory.max`; one at least). The result of a check is the same at any count: the outcome table, the witness, the run count and the cut a violation makes are those of the runs taken one at a time in plan order. See [Running in parallel](#running-in-parallel) | diff --git a/docs/reference/rdf-mapping.md b/docs/reference/rdf-mapping.md index 08260025bb..677be6cd57 100644 --- a/docs/reference/rdf-mapping.md +++ b/docs/reference/rdf-mapping.md @@ -2329,6 +2329,7 @@ as an RDF vocabulary graph a store loads beside its models: ```bash sysml -metaclass-graph # Turtle to stdout; no model is read sysml -metaclass-graph -o sysml-metaclasses.ttl +sysml -metamodel-table -o metamodel.json # the whole table as JSON: classes, properties, enumerations ``` The graph is written from the metamodel table of @@ -2381,7 +2382,7 @@ exactly, which a converted model never contains. | `internal/translate/convert` | The `Convert` entry point: format names, notation parsing, the SysML v1 migration | | `tests/corpus/roundtrip_test.go` | The per-file round-trip ratchets over every model under `examples/`, with their baselines in `testdata/corpus_roundtrip_expected.txt` (Turtle) and `testdata/api_json_roundtrip_expected.txt` (the API element form) ([rdf-corpus-roundtrip.md](../project/rdf-corpus-roundtrip.md)) | | `internal/frontend/repl` | `%save` | -| `cmd/sysml` | `-convert`, `-from`, `-o`, `-metaclass-graph` | +| `cmd/sysml` | `-convert`, `-from`, `-o`, `-metaclass-graph`, `-metamodel-table` | The RDF layer is hand-written against the Turtle grammar rather than pulled in as a dependency: the subset needed here is small, and the parser rejects what it diff --git a/internal/translate/rdf/ontology/table_json.go b/internal/translate/rdf/ontology/table_json.go new file mode 100644 index 0000000000..3086f9ee85 --- /dev/null +++ b/internal/translate/rdf/ontology/table_json.go @@ -0,0 +1,106 @@ +package ontology + +import "encoding/json" + +// Table is the generated metamodel table in one record, the form -metamodel-table +// writes so tools outside this module read the same table the writers do. +type Table struct { + // Metamodel is Version, the date in the ecore's namespace URI. + Metamodel string `json:"metamodel"` + // PilotTag and PilotCommit name the pilot release the table was generated from. + PilotTag string `json:"pilotTag"` + PilotCommit string `json:"pilotCommit"` + Classes []TableClass `json:"classes"` + Properties []TableProperty `json:"properties"` + Enumerations []TableEnumeration `json:"enumerations"` +} + +// TableClass is Class with JSON names. +type TableClass struct { + Name string `json:"name"` + Abstract bool `json:"abstract"` + Parents []string `json:"parents"` +} + +// TableEnumeration is Enumeration with JSON names. +type TableEnumeration struct { + Name string `json:"name"` + Literals []string `json:"literals"` +} + +// TableProperty is Property with its kind and range spelled as the table README does: +// kind "object" or "datatype", range the local name of a metaclass or enumeration, +// else the datatype IRI; Upper is 1 or -1 (unbounded, ecore's spelling). +type TableProperty struct { + Name string `json:"name"` + DefiningClass string `json:"definingClass"` + Kind string `json:"kind"` + Range string `json:"range"` + Lower int `json:"lower"` + Upper int `json:"upper"` + Ordered bool `json:"ordered"` + Nonunique bool `json:"nonunique"` + Derived bool `json:"derived"` + Default *string `json:"default,omitempty"` + Redefines []string `json:"redefines,omitempty"` + Subsets []string `json:"subsets,omitempty"` + Opposite string `json:"opposite,omitempty"` +} + +// CurrentTable returns the committed table as one record. +func CurrentTable() Table { + table := Table{ + Metamodel: Version, + PilotTag: SourceTag, + PilotCommit: SourceCommit, + Classes: make([]TableClass, 0, len(classes)), + Enumerations: make([]TableEnumeration, 0, len(enumerations)), + Properties: make([]TableProperty, 0, len(properties)), + } + for _, c := range classes { + table.Classes = append(table.Classes, TableClass{Name: c.Name, Abstract: c.Abstract, Parents: append([]string{}, c.Parents...)}) + } + for _, e := range enumerations { + table.Enumerations = append(table.Enumerations, TableEnumeration{Name: e.Name, Literals: append([]string{}, e.Literals...)}) + } + for _, p := range properties { + table.Properties = append(table.Properties, tableProperty(p)) + } + return table +} + +func tableProperty(p Property) TableProperty { + out := TableProperty{ + Name: p.Name, DefiningClass: p.DefiningClass, Kind: "datatype", Range: p.Range, + Lower: p.Lower, Upper: 1, Ordered: p.Ordered, Nonunique: p.Nonunique, Derived: p.Derived, + Redefines: append([]string(nil), p.Redefines...), Subsets: append([]string(nil), p.Subsets...), + Opposite: p.Opposite, + } + if p.Kind == ObjectProperty { + out.Kind = "object" + } + if local := LocalName(p.Range); local != "" { + if _, ok := LookupClass(local); ok { + out.Range = local + } else if _, ok := LookupEnumeration(local); ok { + out.Range = local + } + } + if p.Many { + out.Upper = -1 + } + if p.HasDefault { + value := p.Default + out.Default = &value + } + return out +} + +// MarshalTable writes CurrentTable as indented JSON ending in a newline. +func MarshalTable() ([]byte, error) { + out, err := json.MarshalIndent(CurrentTable(), "", " ") + if err != nil { + return nil, err + } + return append(out, '\n'), nil +} diff --git a/internal/translate/rdf/ontology/table_json_test.go b/internal/translate/rdf/ontology/table_json_test.go new file mode 100644 index 0000000000..e6631250a7 --- /dev/null +++ b/internal/translate/rdf/ontology/table_json_test.go @@ -0,0 +1,42 @@ +package ontology + +import ( + "encoding/json" + "testing" +) + +// TestTableRecordSpellsTheProperties pins the JSON spelling tools outside this +// module read: object ranges by metaclass name, datatype ranges by IRI, upper -1 for many. +func TestTableRecordSpellsTheProperties(t *testing.T) { + out, err := MarshalTable() + if err != nil { + t.Fatal(err) + } + var table Table + if err := json.Unmarshal(out, &table); err != nil { + t.Fatal(err) + } + byName := map[string]TableProperty{} + for _, p := range table.Properties { + byName[p.DefiningClass+"::"+p.Name] = p + } + owned := byName["Element::ownedRelationship"] + if owned.Kind != "object" || owned.Range != "Relationship" || owned.Upper != -1 || !owned.Ordered { + t.Errorf("Element::ownedRelationship = %+v, want an ordered many object property ranging over Relationship", owned) + } + name := byName["Element::declaredName"] + if name.Kind != "datatype" || name.Range != "http://www.w3.org/2001/XMLSchema#string" || name.Upper != 1 { + t.Errorf("Element::declaredName = %+v, want a single xsd:string datatype property", name) + } + direction := byName["Feature::direction"] + if direction.Range != "FeatureDirectionKind" { + t.Errorf("Feature::direction ranges over %q, want the enumeration by name", direction.Range) + } + abstract := byName["Type::isAbstract"] + if abstract.Default == nil || *abstract.Default != "false" { + t.Errorf("Type::isAbstract default = %v, want \"false\"", abstract.Default) + } + if table.Metamodel != Version || table.PilotTag != SourceTag || table.PilotCommit != SourceCommit { + t.Errorf("header = %+v, want the table's", table) + } +} diff --git a/packaging/man/man1/sysml.1 b/packaging/man/man1/sysml.1 index 7033ef4f6f..8a7cc0caca 100644 --- a/packaging/man/man1/sysml.1 +++ b/packaging/man/man1/sysml.1 @@ -257,6 +257,12 @@ Write the SysML metaclass hierarchy of the pinned pilot metamodel as Turtle (rdfs:Class, rdfs:subClassOf, sysx:abstract) to stdout or \-o, without a model, and exit .TP +.B \-metamodel\-table +Write the pinned pilot metamodel's table as JSON \(em every metaclass with its +parents, every property with its defining class, kind, range, bounds and +flags, every enumeration, and the pilot tag, commit and metamodel date \(em to +stdout or \-o, without a model, and exit +.TP .BR \-migrate " \fIformat\fP" Migrate the SysML v1 model (.xmi, .uml or .mdzip; \-from names the format when the extension does not) to SysML v2, written in this format: sysml, kerml, @@ -684,6 +690,8 @@ sysml \-engines sysml \-engines \-probe # Write the metaclass hierarchy as Turtle sysml \-metaclass\-graph \-o metaclasses.ttl +# Write the metamodel table as JSON +sysml \-metamodel\-table \-o metamodel.json # The same as \-schedule explore sysml \-engine explore \-action Drive m.sysml # Every engine that covers the question From 778a8c4529253f26663195b7214d6b4698a4ff70 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 28 Oct 2026 03:02:01 +0000 Subject: [PATCH 2/7] docs(ontology): two-line TableProperty comment Co-Authored-By: Nicolas Rouquette --- internal/translate/rdf/ontology/table_json.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/internal/translate/rdf/ontology/table_json.go b/internal/translate/rdf/ontology/table_json.go index 3086f9ee85..15e254c0a1 100644 --- a/internal/translate/rdf/ontology/table_json.go +++ b/internal/translate/rdf/ontology/table_json.go @@ -28,9 +28,8 @@ type TableEnumeration struct { Literals []string `json:"literals"` } -// TableProperty is Property with its kind and range spelled as the table README does: -// kind "object" or "datatype", range the local name of a metaclass or enumeration, -// else the datatype IRI; Upper is 1 or -1 (unbounded, ecore's spelling). +// TableProperty gives each property its kind ("object"/"datatype"), its range as a metaclass +// or enumeration name (else the datatype IRI) and its upper bound, 1 or -1 for unbounded. type TableProperty struct { Name string `json:"name"` DefiningClass string `json:"definingClass"` From dd412d5c8d82bb1f3d01362cae4696371e037184 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 28 Oct 2026 03:05:52 +0000 Subject: [PATCH 3/7] feat(ontology): the table keeps a property's ecore upper bound, so -metamodel-table writes a finite bound as is Co-Authored-By: Nicolas Rouquette --- internal/translate/rdf/ontology/ontology.go | 11 + internal/translate/rdf/ontology/table.go | 362 +++++++++--------- internal/translate/rdf/ontology/table_json.go | 7 +- .../translate/rdf/ontology/table_json_test.go | 11 + tests/ontology/ontology_test.go | 1 + tools/gen/ontology/main.go | 24 +- 6 files changed, 229 insertions(+), 187 deletions(-) diff --git a/internal/translate/rdf/ontology/ontology.go b/internal/translate/rdf/ontology/ontology.go index f801250de6..0af0c9eb75 100644 --- a/internal/translate/rdf/ontology/ontology.go +++ b/internal/translate/rdf/ontology/ontology.go @@ -53,6 +53,9 @@ type Property struct { // Many reports an upper multiplicity above 1 or unbounded (ecore upperBound // -1): the API JSON shape is an array. Many bool + // Upper is a Many property's ecore upperBound: -1 unbounded, else the finite + // bound; a single-valued property leaves it zero, which UpperBound reads as 1. + Upper int // Ordered reports a Many property whose values are ordered (ecore // ordered, which defaults to true); a single-valued property is never Ordered. Ordered bool @@ -70,6 +73,14 @@ type Property struct { Opposite string } +// UpperBound is the upper multiplicity as ecore spells it: -1 unbounded, else the bound. +func (p Property) UpperBound() int { + if !p.Many { + return 1 + } + return p.Upper +} + // QualifiedName returns the property as "DefiningClass::name", the form // Redefines, Subsets and Opposite name properties in. func (p Property) QualifiedName() string { return p.DefiningClass + "::" + p.Name } diff --git a/internal/translate/rdf/ontology/table.go b/internal/translate/rdf/ontology/table.go index 66f8703e14..9e0d9e2aab 100644 --- a/internal/translate/rdf/ontology/table.go +++ b/internal/translate/rdf/ontology/table.go @@ -26,17 +26,17 @@ var properties = []Property{ {Name: "payloadArgument", DefiningClass: "AcceptActionUsage", IRI: "https://www.omg.org/spec/SysML#AcceptActionUsage_payloadArgument", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Derived: true}, {Name: "payloadParameter", DefiningClass: "AcceptActionUsage", IRI: "https://www.omg.org/spec/SysML#AcceptActionUsage_payloadParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ReferenceUsage", Lower: 1, Derived: true, Subsets: []string{"Usage::nestedReference", "Step::parameter"}}, {Name: "receiverArgument", DefiningClass: "AcceptActionUsage", IRI: "https://www.omg.org/spec/SysML#AcceptActionUsage_receiverArgument", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Derived: true}, - {Name: "action", DefiningClass: "ActionDefinition", IRI: "https://www.omg.org/spec/SysML#ActionDefinition_action", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Behavior::step", "Definition::usage"}}, - {Name: "actionDefinition", DefiningClass: "ActionUsage", IRI: "https://www.omg.org/spec/SysML#ActionUsage_actionDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Behavior", Many: true, Ordered: true, Derived: true, Redefines: []string{"Step::behavior", "OccurrenceUsage::occurrenceDefinition"}}, + {Name: "action", DefiningClass: "ActionDefinition", IRI: "https://www.omg.org/spec/SysML#ActionDefinition_action", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Behavior::step", "Definition::usage"}}, + {Name: "actionDefinition", DefiningClass: "ActionUsage", IRI: "https://www.omg.org/spec/SysML#ActionUsage_actionDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Behavior", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Step::behavior", "OccurrenceUsage::occurrenceDefinition"}}, {Name: "ownedActorParameter", DefiningClass: "ActorMembership", IRI: "https://www.omg.org/spec/SysML#ActorMembership_ownedActorParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Lower: 1, Derived: true, Redefines: []string{"ParameterMembership::ownedMemberParameter"}}, - {Name: "allocation", DefiningClass: "AllocationDefinition", IRI: "https://www.omg.org/spec/SysML#AllocationDefinition_allocation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AllocationUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::usage"}}, - {Name: "allocationDefinition", DefiningClass: "AllocationUsage", IRI: "https://www.omg.org/spec/SysML#AllocationUsage_allocationDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AllocationDefinition", Many: true, Ordered: true, Derived: true, Redefines: []string{"ConnectionUsage::connectionDefinition"}}, + {Name: "allocation", DefiningClass: "AllocationDefinition", IRI: "https://www.omg.org/spec/SysML#AllocationDefinition_allocation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AllocationUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::usage"}}, + {Name: "allocationDefinition", DefiningClass: "AllocationUsage", IRI: "https://www.omg.org/spec/SysML#AllocationUsage_allocationDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AllocationDefinition", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"ConnectionUsage::connectionDefinition"}}, {Name: "resultExpression", DefiningClass: "AnalysisCaseDefinition", IRI: "https://www.omg.org/spec/SysML#AnalysisCaseDefinition_resultExpression", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Derived: true, Subsets: []string{"Function::expression", "Type::ownedFeature"}}, {Name: "analysisCaseDefinition", DefiningClass: "AnalysisCaseUsage", IRI: "https://www.omg.org/spec/SysML#AnalysisCaseUsage_analysisCaseDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AnalysisCaseDefinition", Derived: true, Redefines: []string{"CaseUsage::caseDefinition"}}, {Name: "resultExpression", DefiningClass: "AnalysisCaseUsage", IRI: "https://www.omg.org/spec/SysML#AnalysisCaseUsage_resultExpression", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Derived: true, Subsets: []string{"Type::ownedFeature"}}, - {Name: "annotatedElement", DefiningClass: "AnnotatingElement", IRI: "https://www.omg.org/spec/SysML#AnnotatingElement_annotatedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Many: true, Ordered: true, Derived: true}, - {Name: "annotation", DefiningClass: "AnnotatingElement", IRI: "https://www.omg.org/spec/SysML#AnnotatingElement_annotation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Annotation", Many: true, Ordered: true, Derived: true, Opposite: "Annotation::annotatingElement"}, - {Name: "ownedAnnotatingRelationship", DefiningClass: "AnnotatingElement", IRI: "https://www.omg.org/spec/SysML#AnnotatingElement_ownedAnnotatingRelationship", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Annotation", Many: true, Ordered: true, Derived: true, Subsets: []string{"AnnotatingElement::annotation", "Element::ownedRelationship"}, Opposite: "Annotation::owningAnnotatingElement"}, + {Name: "annotatedElement", DefiningClass: "AnnotatingElement", IRI: "https://www.omg.org/spec/SysML#AnnotatingElement_annotatedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Many: true, Ordered: true, Derived: true, Upper: -1}, + {Name: "annotation", DefiningClass: "AnnotatingElement", IRI: "https://www.omg.org/spec/SysML#AnnotatingElement_annotation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Annotation", Many: true, Ordered: true, Derived: true, Upper: -1, Opposite: "Annotation::annotatingElement"}, + {Name: "ownedAnnotatingRelationship", DefiningClass: "AnnotatingElement", IRI: "https://www.omg.org/spec/SysML#AnnotatingElement_ownedAnnotatingRelationship", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Annotation", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"AnnotatingElement::annotation", "Element::ownedRelationship"}, Opposite: "Annotation::owningAnnotatingElement"}, {Name: "owningAnnotatingRelationship", DefiningClass: "AnnotatingElement", IRI: "https://www.omg.org/spec/SysML#AnnotatingElement_owningAnnotatingRelationship", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Annotation", Derived: true, Subsets: []string{"Element::owningRelationship", "AnnotatingElement::annotation"}, Opposite: "Annotation::ownedAnnotatingElement"}, {Name: "annotatedElement", DefiningClass: "Annotation", IRI: "https://www.omg.org/spec/SysML#Annotation_annotatedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Redefines: []string{"Relationship::target"}}, {Name: "annotatingElement", DefiningClass: "Annotation", IRI: "https://www.omg.org/spec/SysML#Annotation_annotatingElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AnnotatingElement", Lower: 1, Derived: true, Redefines: []string{"Relationship::source"}, Opposite: "AnnotatingElement::annotation"}, @@ -47,24 +47,24 @@ var properties = []Property{ {Name: "referent", DefiningClass: "AssignmentActionUsage", IRI: "https://www.omg.org/spec/SysML#AssignmentActionUsage_referent", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Derived: true, Subsets: []string{"Namespace::member"}}, {Name: "targetArgument", DefiningClass: "AssignmentActionUsage", IRI: "https://www.omg.org/spec/SysML#AssignmentActionUsage_targetArgument", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Derived: true}, {Name: "valueExpression", DefiningClass: "AssignmentActionUsage", IRI: "https://www.omg.org/spec/SysML#AssignmentActionUsage_valueExpression", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Derived: true}, - {Name: "associationEnd", DefiningClass: "Association", IRI: "https://www.omg.org/spec/SysML#Association_associationEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Derived: true, Redefines: []string{"Type::endFeature"}}, - {Name: "relatedType", DefiningClass: "Association", IRI: "https://www.omg.org/spec/SysML#Association_relatedType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Nonunique: true, Derived: true, Redefines: []string{"Relationship::relatedElement"}}, + {Name: "associationEnd", DefiningClass: "Association", IRI: "https://www.omg.org/spec/SysML#Association_associationEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Derived: true, Upper: -1, Redefines: []string{"Type::endFeature"}}, + {Name: "relatedType", DefiningClass: "Association", IRI: "https://www.omg.org/spec/SysML#Association_relatedType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Nonunique: true, Derived: true, Upper: -1, Redefines: []string{"Relationship::relatedElement"}}, {Name: "sourceType", DefiningClass: "Association", IRI: "https://www.omg.org/spec/SysML#Association_sourceType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Derived: true, Redefines: []string{"Relationship::source"}, Subsets: []string{"Association::relatedType"}}, - {Name: "targetType", DefiningClass: "Association", IRI: "https://www.omg.org/spec/SysML#Association_targetType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Derived: true, Redefines: []string{"Relationship::target"}, Subsets: []string{"Association::relatedType"}}, - {Name: "attributeDefinition", DefiningClass: "AttributeUsage", IRI: "https://www.omg.org/spec/SysML#AttributeUsage_attributeDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#DataType", Many: true, Ordered: true, Derived: true, Redefines: []string{"Usage::definition"}}, - {Name: "parameter", DefiningClass: "Behavior", IRI: "https://www.omg.org/spec/SysML#Behavior_parameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Redefines: []string{"Type::directedFeature"}}, - {Name: "step", DefiningClass: "Behavior", IRI: "https://www.omg.org/spec/SysML#Behavior_step", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Step", Many: true, Derived: true, Subsets: []string{"Type::feature"}}, + {Name: "targetType", DefiningClass: "Association", IRI: "https://www.omg.org/spec/SysML#Association_targetType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Derived: true, Upper: -1, Redefines: []string{"Relationship::target"}, Subsets: []string{"Association::relatedType"}}, + {Name: "attributeDefinition", DefiningClass: "AttributeUsage", IRI: "https://www.omg.org/spec/SysML#AttributeUsage_attributeDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#DataType", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Usage::definition"}}, + {Name: "parameter", DefiningClass: "Behavior", IRI: "https://www.omg.org/spec/SysML#Behavior_parameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Type::directedFeature"}}, + {Name: "step", DefiningClass: "Behavior", IRI: "https://www.omg.org/spec/SysML#Behavior_step", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Step", Many: true, Derived: true, Upper: -1, Subsets: []string{"Type::feature"}}, {Name: "predicate", DefiningClass: "BooleanExpression", IRI: "https://www.omg.org/spec/SysML#BooleanExpression_predicate", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Predicate", Derived: true, Redefines: []string{"Expression::function"}}, - {Name: "calculation", DefiningClass: "CalculationDefinition", IRI: "https://www.omg.org/spec/SysML#CalculationDefinition_calculation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CalculationUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"ActionDefinition::action", "Function::expression"}}, + {Name: "calculation", DefiningClass: "CalculationDefinition", IRI: "https://www.omg.org/spec/SysML#CalculationDefinition_calculation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CalculationUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"ActionDefinition::action", "Function::expression"}}, {Name: "calculationDefinition", DefiningClass: "CalculationUsage", IRI: "https://www.omg.org/spec/SysML#CalculationUsage_calculationDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Function", Derived: true, Redefines: []string{"Expression::function", "ActionUsage::actionDefinition"}}, - {Name: "actorParameter", DefiningClass: "CaseDefinition", IRI: "https://www.omg.org/spec/SysML#CaseDefinition_actorParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Behavior::parameter", "Definition::usage"}}, + {Name: "actorParameter", DefiningClass: "CaseDefinition", IRI: "https://www.omg.org/spec/SysML#CaseDefinition_actorParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Behavior::parameter", "Definition::usage"}}, {Name: "objectiveRequirement", DefiningClass: "CaseDefinition", IRI: "https://www.omg.org/spec/SysML#CaseDefinition_objectiveRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Derived: true, Subsets: []string{"Definition::usage"}}, {Name: "subjectParameter", DefiningClass: "CaseDefinition", IRI: "https://www.omg.org/spec/SysML#CaseDefinition_subjectParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Lower: 1, Derived: true, Subsets: []string{"Behavior::parameter", "Definition::usage"}}, - {Name: "actorParameter", DefiningClass: "CaseUsage", IRI: "https://www.omg.org/spec/SysML#CaseUsage_actorParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Step::parameter", "Usage::usage"}}, + {Name: "actorParameter", DefiningClass: "CaseUsage", IRI: "https://www.omg.org/spec/SysML#CaseUsage_actorParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Step::parameter", "Usage::usage"}}, {Name: "caseDefinition", DefiningClass: "CaseUsage", IRI: "https://www.omg.org/spec/SysML#CaseUsage_caseDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CaseDefinition", Derived: true, Redefines: []string{"CalculationUsage::calculationDefinition"}}, {Name: "objectiveRequirement", DefiningClass: "CaseUsage", IRI: "https://www.omg.org/spec/SysML#CaseUsage_objectiveRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Derived: true, Subsets: []string{"Usage::usage"}}, {Name: "subjectParameter", DefiningClass: "CaseUsage", IRI: "https://www.omg.org/spec/SysML#CaseUsage_subjectParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Lower: 1, Derived: true, Subsets: []string{"Step::parameter", "Usage::usage"}}, - {Name: "ownedSubclassification", DefiningClass: "Classifier", IRI: "https://www.omg.org/spec/SysML#Classifier_ownedSubclassification", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Subclassification", Many: true, Derived: true, Subsets: []string{"Type::ownedSpecialization"}, Opposite: "Subclassification::owningClassifier"}, + {Name: "ownedSubclassification", DefiningClass: "Classifier", IRI: "https://www.omg.org/spec/SysML#Classifier_ownedSubclassification", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Subclassification", Many: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedSpecialization"}, Opposite: "Subclassification::owningClassifier"}, {Name: "body", DefiningClass: "Comment", IRI: "https://www.omg.org/spec/SysML#Comment_body", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Lower: 1}, {Name: "locale", DefiningClass: "Comment", IRI: "https://www.omg.org/spec/SysML#Comment_locale", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string"}, {Name: "concernDefinition", DefiningClass: "ConcernUsage", IRI: "https://www.omg.org/spec/SysML#ConcernUsage_concernDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernDefinition", Derived: true, Redefines: []string{"RequirementUsage::requirementDefinition"}}, @@ -75,51 +75,51 @@ var properties = []Property{ {Name: "conjugatedType", DefiningClass: "Conjugation", IRI: "https://www.omg.org/spec/SysML#Conjugation_conjugatedType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Redefines: []string{"Relationship::source"}}, {Name: "originalType", DefiningClass: "Conjugation", IRI: "https://www.omg.org/spec/SysML#Conjugation_originalType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Redefines: []string{"Relationship::target"}}, {Name: "owningType", DefiningClass: "Conjugation", IRI: "https://www.omg.org/spec/SysML#Conjugation_owningType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Derived: true, Subsets: []string{"Conjugation::conjugatedType", "Relationship::owningRelatedElement"}, Opposite: "Type::ownedConjugator"}, - {Name: "connectionEnd", DefiningClass: "ConnectionDefinition", IRI: "https://www.omg.org/spec/SysML#ConnectionDefinition_connectionEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Redefines: []string{"Association::associationEnd"}}, - {Name: "connectionDefinition", DefiningClass: "ConnectionUsage", IRI: "https://www.omg.org/spec/SysML#ConnectionUsage_connectionDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AssociationStructure", Many: true, Ordered: true, Derived: true, Redefines: []string{"Connector::association"}, Subsets: []string{"ItemUsage::itemDefinition"}}, - {Name: "association", DefiningClass: "Connector", IRI: "https://www.omg.org/spec/SysML#Connector_association", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Association", Many: true, Ordered: true, Derived: true, Redefines: []string{"Feature::type"}}, - {Name: "connectorEnd", DefiningClass: "Connector", IRI: "https://www.omg.org/spec/SysML#Connector_connectorEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Redefines: []string{"Type::endFeature"}}, + {Name: "connectionEnd", DefiningClass: "ConnectionDefinition", IRI: "https://www.omg.org/spec/SysML#ConnectionDefinition_connectionEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Association::associationEnd"}}, + {Name: "connectionDefinition", DefiningClass: "ConnectionUsage", IRI: "https://www.omg.org/spec/SysML#ConnectionUsage_connectionDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AssociationStructure", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Connector::association"}, Subsets: []string{"ItemUsage::itemDefinition"}}, + {Name: "association", DefiningClass: "Connector", IRI: "https://www.omg.org/spec/SysML#Connector_association", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Association", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Feature::type"}}, + {Name: "connectorEnd", DefiningClass: "Connector", IRI: "https://www.omg.org/spec/SysML#Connector_connectorEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Type::endFeature"}}, {Name: "defaultFeaturingType", DefiningClass: "Connector", IRI: "https://www.omg.org/spec/SysML#Connector_defaultFeaturingType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Derived: true}, - {Name: "relatedFeature", DefiningClass: "Connector", IRI: "https://www.omg.org/spec/SysML#Connector_relatedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Nonunique: true, Derived: true, Redefines: []string{"Relationship::relatedElement"}}, + {Name: "relatedFeature", DefiningClass: "Connector", IRI: "https://www.omg.org/spec/SysML#Connector_relatedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Nonunique: true, Derived: true, Upper: -1, Redefines: []string{"Relationship::relatedElement"}}, {Name: "sourceFeature", DefiningClass: "Connector", IRI: "https://www.omg.org/spec/SysML#Connector_sourceFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Derived: true, Redefines: []string{"Relationship::source"}, Subsets: []string{"Connector::relatedFeature"}}, - {Name: "targetFeature", DefiningClass: "Connector", IRI: "https://www.omg.org/spec/SysML#Connector_targetFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Redefines: []string{"Relationship::target"}, Subsets: []string{"Connector::relatedFeature"}}, + {Name: "targetFeature", DefiningClass: "Connector", IRI: "https://www.omg.org/spec/SysML#Connector_targetFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Relationship::target"}, Subsets: []string{"Connector::relatedFeature"}}, {Name: "constraintDefinition", DefiningClass: "ConstraintUsage", IRI: "https://www.omg.org/spec/SysML#ConstraintUsage_constraintDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Predicate", Derived: true, Redefines: []string{"BooleanExpression::predicate"}}, {Name: "crossedFeature", DefiningClass: "CrossSubsetting", IRI: "https://www.omg.org/spec/SysML#CrossSubsetting_crossedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Redefines: []string{"Subsetting::subsettedFeature"}}, {Name: "crossingFeature", DefiningClass: "CrossSubsetting", IRI: "https://www.omg.org/spec/SysML#CrossSubsetting_crossingFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Derived: true, Redefines: []string{"Subsetting::owningFeature", "Subsetting::subsettingFeature"}, Opposite: "Feature::ownedCrossSubsetting"}, - {Name: "directedUsage", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_directedUsage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::directedFeature", "Definition::usage"}}, + {Name: "directedUsage", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_directedUsage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::directedFeature", "Definition::usage"}}, {Name: "isVariation", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_isVariation", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, - {Name: "ownedAction", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedOccurrence"}}, - {Name: "ownedAllocation", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedAllocation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AllocationUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedConnection"}}, - {Name: "ownedAnalysisCase", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedAnalysisCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AnalysisCaseUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedCase"}}, - {Name: "ownedAttribute", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedAttribute", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AttributeUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedUsage"}}, - {Name: "ownedCalculation", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedCalculation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CalculationUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedAction"}}, - {Name: "ownedCase", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CaseUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedCalculation"}}, - {Name: "ownedConcern", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedConcern", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernUsage", Many: true, Derived: true, Subsets: []string{"Definition::ownedRequirement"}}, - {Name: "ownedConnection", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedConnection", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConnectorAsUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedUsage"}}, - {Name: "ownedConstraint", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedOccurrence"}}, - {Name: "ownedEnumeration", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedEnumeration", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#EnumerationUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedAttribute"}}, - {Name: "ownedFlow", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedFlow", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FlowUsage", Many: true, Derived: true, Subsets: []string{"Definition::ownedConnection"}}, - {Name: "ownedInterface", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedInterface", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#InterfaceUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedConnection"}}, - {Name: "ownedItem", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedItem", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ItemUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedOccurrence"}}, - {Name: "ownedMetadata", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedMetadata", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#MetadataUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedItem"}}, - {Name: "ownedOccurrence", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedOccurrence", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#OccurrenceUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedUsage"}}, - {Name: "ownedPart", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedPart", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedItem"}}, - {Name: "ownedPort", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedPort", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PortUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedUsage"}}, - {Name: "ownedReference", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedReference", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ReferenceUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedUsage"}}, - {Name: "ownedRendering", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedRendering", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedPart"}}, - {Name: "ownedRequirement", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedConstraint"}}, - {Name: "ownedState", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedState", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#StateUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedAction"}}, - {Name: "ownedTransition", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedTransition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#TransitionUsage", Many: true, Derived: true, Subsets: []string{"Definition::ownedUsage"}}, - {Name: "ownedUsage", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedUsage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::ownedFeature", "Definition::usage"}, Opposite: "Usage::owningDefinition"}, - {Name: "ownedUseCase", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedUseCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#UseCaseUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedCase"}}, - {Name: "ownedVerificationCase", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedVerificationCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#VerificationCaseUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedCase"}}, - {Name: "ownedView", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedView", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedPart"}}, - {Name: "ownedViewpoint", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedViewpoint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewpointUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedRequirement"}}, - {Name: "usage", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_usage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::feature"}}, - {Name: "variant", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_variant", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Derived: true, Subsets: []string{"Namespace::ownedMember"}}, - {Name: "variantMembership", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_variantMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#VariantMembership", Many: true, Derived: true, Subsets: []string{"Namespace::ownedMembership"}}, - {Name: "client", DefiningClass: "Dependency", IRI: "https://www.omg.org/spec/SysML#Dependency_client", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Many: true, Ordered: true, Redefines: []string{"Relationship::source"}}, - {Name: "supplier", DefiningClass: "Dependency", IRI: "https://www.omg.org/spec/SysML#Dependency_supplier", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Many: true, Ordered: true, Redefines: []string{"Relationship::target"}}, + {Name: "ownedAction", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedOccurrence"}}, + {Name: "ownedAllocation", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedAllocation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AllocationUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedConnection"}}, + {Name: "ownedAnalysisCase", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedAnalysisCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AnalysisCaseUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedCase"}}, + {Name: "ownedAttribute", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedAttribute", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AttributeUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedUsage"}}, + {Name: "ownedCalculation", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedCalculation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CalculationUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedAction"}}, + {Name: "ownedCase", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CaseUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedCalculation"}}, + {Name: "ownedConcern", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedConcern", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernUsage", Many: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedRequirement"}}, + {Name: "ownedConnection", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedConnection", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConnectorAsUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedUsage"}}, + {Name: "ownedConstraint", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedOccurrence"}}, + {Name: "ownedEnumeration", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedEnumeration", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#EnumerationUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedAttribute"}}, + {Name: "ownedFlow", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedFlow", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FlowUsage", Many: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedConnection"}}, + {Name: "ownedInterface", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedInterface", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#InterfaceUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedConnection"}}, + {Name: "ownedItem", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedItem", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ItemUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedOccurrence"}}, + {Name: "ownedMetadata", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedMetadata", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#MetadataUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedItem"}}, + {Name: "ownedOccurrence", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedOccurrence", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#OccurrenceUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedUsage"}}, + {Name: "ownedPart", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedPart", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedItem"}}, + {Name: "ownedPort", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedPort", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PortUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedUsage"}}, + {Name: "ownedReference", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedReference", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ReferenceUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedUsage"}}, + {Name: "ownedRendering", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedRendering", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedPart"}}, + {Name: "ownedRequirement", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedConstraint"}}, + {Name: "ownedState", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedState", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#StateUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedAction"}}, + {Name: "ownedTransition", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedTransition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#TransitionUsage", Many: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedUsage"}}, + {Name: "ownedUsage", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedUsage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedFeature", "Definition::usage"}, Opposite: "Usage::owningDefinition"}, + {Name: "ownedUseCase", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedUseCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#UseCaseUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedCase"}}, + {Name: "ownedVerificationCase", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedVerificationCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#VerificationCaseUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedCase"}}, + {Name: "ownedView", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedView", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedPart"}}, + {Name: "ownedViewpoint", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_ownedViewpoint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewpointUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedRequirement"}}, + {Name: "usage", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_usage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::feature"}}, + {Name: "variant", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_variant", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::ownedMember"}}, + {Name: "variantMembership", DefiningClass: "Definition", IRI: "https://www.omg.org/spec/SysML#Definition_variantMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#VariantMembership", Many: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::ownedMembership"}}, + {Name: "client", DefiningClass: "Dependency", IRI: "https://www.omg.org/spec/SysML#Dependency_client", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Many: true, Ordered: true, Upper: -1, Redefines: []string{"Relationship::source"}}, + {Name: "supplier", DefiningClass: "Dependency", IRI: "https://www.omg.org/spec/SysML#Dependency_supplier", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Many: true, Ordered: true, Upper: -1, Redefines: []string{"Relationship::target"}}, {Name: "differencingType", DefiningClass: "Differencing", IRI: "https://www.omg.org/spec/SysML#Differencing_differencingType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Redefines: []string{"Relationship::target"}}, {Name: "typeDifferenced", DefiningClass: "Differencing", IRI: "https://www.omg.org/spec/SysML#Differencing_typeDifferenced", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Derived: true, Redefines: []string{"Relationship::source"}, Subsets: []string{"Relationship::owningRelatedElement"}, Opposite: "Type::ownedDifferencing"}, {Name: "disjoiningType", DefiningClass: "Disjoining", IRI: "https://www.omg.org/spec/SysML#Disjoining_disjoiningType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Redefines: []string{"Relationship::target"}}, @@ -127,25 +127,25 @@ var properties = []Property{ {Name: "typeDisjoined", DefiningClass: "Disjoining", IRI: "https://www.omg.org/spec/SysML#Disjoining_typeDisjoined", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Redefines: []string{"Relationship::source"}}, {Name: "documentedElement", DefiningClass: "Documentation", IRI: "https://www.omg.org/spec/SysML#Documentation_documentedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Derived: true, Redefines: []string{"AnnotatingElement::annotatedElement"}, Subsets: []string{"Element::owner"}, Opposite: "Element::documentation"}, {Name: "condition", DefiningClass: "ElementFilterMembership", IRI: "https://www.omg.org/spec/SysML#ElementFilterMembership_condition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Lower: 1, Derived: true, Redefines: []string{"OwningMembership::ownedMemberElement"}}, - {Name: "aliasIds", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_aliasIds", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Many: true, Ordered: true}, + {Name: "aliasIds", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_aliasIds", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Many: true, Ordered: true, Upper: -1}, {Name: "declaredName", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_declaredName", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string"}, {Name: "declaredShortName", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_declaredShortName", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string"}, - {Name: "documentation", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_documentation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Documentation", Many: true, Ordered: true, Derived: true, Subsets: []string{"Element::ownedElement"}, Opposite: "Documentation::documentedElement"}, + {Name: "documentation", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_documentation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Documentation", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedElement"}, Opposite: "Documentation::documentedElement"}, {Name: "elementId", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_elementId", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Lower: 1}, {Name: "isImpliedIncluded", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_isImpliedIncluded", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "isLibraryElement", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_isLibraryElement", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true, Derived: true}, {Name: "name", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_name", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Derived: true}, - {Name: "ownedAnnotation", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_ownedAnnotation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Annotation", Many: true, Ordered: true, Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Annotation::owningAnnotatedElement"}, - {Name: "ownedElement", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_ownedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Derived: true, Opposite: "Element::owner"}, - {Name: "ownedRelationship", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_ownedRelationship", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Relationship", Many: true, Ordered: true, Opposite: "Relationship::owningRelatedElement"}, + {Name: "ownedAnnotation", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_ownedAnnotation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Annotation", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Annotation::owningAnnotatedElement"}, + {Name: "ownedElement", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_ownedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Derived: true, Upper: -1, Opposite: "Element::owner"}, + {Name: "ownedRelationship", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_ownedRelationship", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Relationship", Many: true, Ordered: true, Upper: -1, Opposite: "Relationship::owningRelatedElement"}, {Name: "owner", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_owner", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Derived: true, Opposite: "Element::ownedElement"}, {Name: "owningMembership", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_owningMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#OwningMembership", Derived: true, Subsets: []string{"Element::owningRelationship"}, Opposite: "OwningMembership::ownedMemberElement"}, {Name: "owningNamespace", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_owningNamespace", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Namespace", Derived: true, Opposite: "Namespace::ownedMember"}, {Name: "owningRelationship", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_owningRelationship", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Relationship", Opposite: "Relationship::ownedRelatedElement"}, {Name: "qualifiedName", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_qualifiedName", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Derived: true}, {Name: "shortName", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_shortName", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Derived: true}, - {Name: "textualRepresentation", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_textualRepresentation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#TextualRepresentation", Many: true, Ordered: true, Derived: true, Subsets: []string{"Element::ownedElement"}, Opposite: "TextualRepresentation::representedElement"}, - {Name: "enumeratedValue", DefiningClass: "EnumerationDefinition", IRI: "https://www.omg.org/spec/SysML#EnumerationDefinition_enumeratedValue", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#EnumerationUsage", Many: true, Ordered: true, Derived: true, Redefines: []string{"Definition::variant"}}, + {Name: "textualRepresentation", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_textualRepresentation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#TextualRepresentation", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedElement"}, Opposite: "TextualRepresentation::representedElement"}, + {Name: "enumeratedValue", DefiningClass: "EnumerationDefinition", IRI: "https://www.omg.org/spec/SysML#EnumerationDefinition_enumeratedValue", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#EnumerationUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Definition::variant"}}, {Name: "enumerationDefinition", DefiningClass: "EnumerationUsage", IRI: "https://www.omg.org/spec/SysML#EnumerationUsage_enumerationDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#EnumerationDefinition", Lower: 1, Derived: true, Redefines: []string{"AttributeUsage::attributeDefinition"}}, {Name: "eventOccurrence", DefiningClass: "EventOccurrenceUsage", IRI: "https://www.omg.org/spec/SysML#EventOccurrenceUsage_eventOccurrence", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#OccurrenceUsage", Lower: 1, Derived: true}, {Name: "exhibitedState", DefiningClass: "ExhibitStateUsage", IRI: "https://www.omg.org/spec/SysML#ExhibitStateUsage_exhibitedState", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#StateUsage", Lower: 1, Derived: true, Redefines: []string{"PerformActionUsage::performedAction"}}, @@ -168,12 +168,12 @@ var properties = []Property{ {Name: "isDefault", DefiningClass: "FeatureValue", IRI: "https://www.omg.org/spec/SysML#FeatureValue_isDefault", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "isInitial", DefiningClass: "FeatureValue", IRI: "https://www.omg.org/spec/SysML#FeatureValue_isInitial", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "value", DefiningClass: "FeatureValue", IRI: "https://www.omg.org/spec/SysML#FeatureValue_value", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Lower: 1, Derived: true, Redefines: []string{"OwningMembership::ownedMemberElement"}}, - {Name: "chainingFeature", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_chainingFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Nonunique: true, Derived: true}, + {Name: "chainingFeature", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_chainingFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Nonunique: true, Derived: true, Upper: -1}, {Name: "crossFeature", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_crossFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Derived: true}, {Name: "direction", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_direction", Kind: DatatypeProperty, Range: "https://www.omg.org/spec/SysML#FeatureDirectionKind"}, {Name: "endOwningType", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_endOwningType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Derived: true, Subsets: []string{"Feature::owningType"}, Opposite: "Type::ownedEndFeature"}, {Name: "featureTarget", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_featureTarget", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Derived: true}, - {Name: "featuringType", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_featuringType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Derived: true}, + {Name: "featuringType", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_featuringType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Derived: true, Upper: -1}, {Name: "isComposite", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_isComposite", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "isConstant", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_isConstant", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "isDerived", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_isDerived", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, @@ -183,29 +183,29 @@ var properties = []Property{ {Name: "isUnique", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_isUnique", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "true", HasDefault: true}, {Name: "isVariable", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_isVariable", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "ownedCrossSubsetting", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedCrossSubsetting", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CrossSubsetting", Derived: true, Subsets: []string{"Feature::ownedSubsetting"}, Opposite: "CrossSubsetting::crossingFeature"}, - {Name: "ownedFeatureChaining", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedFeatureChaining", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureChaining", Many: true, Ordered: true, Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "FeatureChaining::featureChained"}, - {Name: "ownedFeatureInverting", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedFeatureInverting", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureInverting", Many: true, Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "FeatureInverting::owningFeature"}, - {Name: "ownedRedefinition", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedRedefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Redefinition", Many: true, Derived: true, Subsets: []string{"Feature::ownedSubsetting"}}, + {Name: "ownedFeatureChaining", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedFeatureChaining", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureChaining", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedRelationship"}, Opposite: "FeatureChaining::featureChained"}, + {Name: "ownedFeatureInverting", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedFeatureInverting", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureInverting", Many: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedRelationship"}, Opposite: "FeatureInverting::owningFeature"}, + {Name: "ownedRedefinition", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedRedefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Redefinition", Many: true, Derived: true, Upper: -1, Subsets: []string{"Feature::ownedSubsetting"}}, {Name: "ownedReferenceSubsetting", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedReferenceSubsetting", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ReferenceSubsetting", Derived: true, Subsets: []string{"Feature::ownedSubsetting"}, Opposite: "ReferenceSubsetting::referencingFeature"}, - {Name: "ownedSubsetting", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedSubsetting", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Subsetting", Many: true, Derived: true, Subsets: []string{"Type::ownedSpecialization"}, Opposite: "Subsetting::owningFeature"}, - {Name: "ownedTypeFeaturing", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedTypeFeaturing", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#TypeFeaturing", Many: true, Ordered: true, Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "TypeFeaturing::owningFeatureOfType"}, - {Name: "ownedTyping", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedTyping", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureTyping", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::ownedSpecialization"}, Opposite: "FeatureTyping::owningFeature"}, + {Name: "ownedSubsetting", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedSubsetting", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Subsetting", Many: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedSpecialization"}, Opposite: "Subsetting::owningFeature"}, + {Name: "ownedTypeFeaturing", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedTypeFeaturing", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#TypeFeaturing", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedRelationship"}, Opposite: "TypeFeaturing::owningFeatureOfType"}, + {Name: "ownedTyping", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_ownedTyping", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureTyping", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedSpecialization"}, Opposite: "FeatureTyping::owningFeature"}, {Name: "owningFeatureMembership", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_owningFeatureMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureMembership", Derived: true, Subsets: []string{"Element::owningMembership"}, Opposite: "FeatureMembership::ownedMemberFeature"}, {Name: "owningType", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_owningType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Derived: true, Subsets: []string{"Element::owningNamespace", "Feature::featuringType"}, Opposite: "Type::ownedFeature"}, - {Name: "type", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_type", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Derived: true}, - {Name: "flowEnd", DefiningClass: "FlowDefinition", IRI: "https://www.omg.org/spec/SysML#FlowDefinition_flowEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Derived: true, Redefines: []string{"Association::associationEnd"}}, - {Name: "flowDefinition", DefiningClass: "FlowUsage", IRI: "https://www.omg.org/spec/SysML#FlowUsage_flowDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Interaction", Many: true, Ordered: true, Derived: true, Redefines: []string{"ActionUsage::actionDefinition", "Flow::interaction"}}, - {Name: "flowEnd", DefiningClass: "Flow", IRI: "https://www.omg.org/spec/SysML#Flow_flowEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FlowEnd", Many: true, Ordered: true, Derived: true, Subsets: []string{"Connector::connectorEnd"}}, - {Name: "interaction", DefiningClass: "Flow", IRI: "https://www.omg.org/spec/SysML#Flow_interaction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Interaction", Many: true, Ordered: true, Derived: true, Redefines: []string{"Connector::association", "Step::behavior"}}, + {Name: "type", DefiningClass: "Feature", IRI: "https://www.omg.org/spec/SysML#Feature_type", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Derived: true, Upper: -1}, + {Name: "flowEnd", DefiningClass: "FlowDefinition", IRI: "https://www.omg.org/spec/SysML#FlowDefinition_flowEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Derived: true, Upper: -1, Redefines: []string{"Association::associationEnd"}}, + {Name: "flowDefinition", DefiningClass: "FlowUsage", IRI: "https://www.omg.org/spec/SysML#FlowUsage_flowDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Interaction", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"ActionUsage::actionDefinition", "Flow::interaction"}}, + {Name: "flowEnd", DefiningClass: "Flow", IRI: "https://www.omg.org/spec/SysML#Flow_flowEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FlowEnd", Many: true, Ordered: true, Derived: true, Upper: 2, Subsets: []string{"Connector::connectorEnd"}}, + {Name: "interaction", DefiningClass: "Flow", IRI: "https://www.omg.org/spec/SysML#Flow_interaction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Interaction", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Connector::association", "Step::behavior"}}, {Name: "payloadFeature", DefiningClass: "Flow", IRI: "https://www.omg.org/spec/SysML#Flow_payloadFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PayloadFeature", Derived: true, Subsets: []string{"Type::ownedFeature"}}, - {Name: "payloadType", DefiningClass: "Flow", IRI: "https://www.omg.org/spec/SysML#Flow_payloadType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Classifier", Many: true, Ordered: true, Nonunique: true, Derived: true}, + {Name: "payloadType", DefiningClass: "Flow", IRI: "https://www.omg.org/spec/SysML#Flow_payloadType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Classifier", Many: true, Ordered: true, Nonunique: true, Derived: true, Upper: -1}, {Name: "sourceOutputFeature", DefiningClass: "Flow", IRI: "https://www.omg.org/spec/SysML#Flow_sourceOutputFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Derived: true}, {Name: "targetInputFeature", DefiningClass: "Flow", IRI: "https://www.omg.org/spec/SysML#Flow_targetInputFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Derived: true}, {Name: "loopVariable", DefiningClass: "ForLoopActionUsage", IRI: "https://www.omg.org/spec/SysML#ForLoopActionUsage_loopVariable", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ReferenceUsage", Lower: 1, Derived: true}, {Name: "seqArgument", DefiningClass: "ForLoopActionUsage", IRI: "https://www.omg.org/spec/SysML#ForLoopActionUsage_seqArgument", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Lower: 1, Derived: true}, {Name: "ownedConcern", DefiningClass: "FramedConcernMembership", IRI: "https://www.omg.org/spec/SysML#FramedConcernMembership_ownedConcern", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernUsage", Lower: 1, Derived: true, Redefines: []string{"RequirementConstraintMembership::ownedConstraint"}}, {Name: "referencedConcern", DefiningClass: "FramedConcernMembership", IRI: "https://www.omg.org/spec/SysML#FramedConcernMembership_referencedConcern", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernUsage", Lower: 1, Derived: true, Redefines: []string{"RequirementConstraintMembership::referencedConstraint"}}, - {Name: "expression", DefiningClass: "Function", IRI: "https://www.omg.org/spec/SysML#Function_expression", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Derived: true, Subsets: []string{"Behavior::step"}}, + {Name: "expression", DefiningClass: "Function", IRI: "https://www.omg.org/spec/SysML#Function_expression", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Derived: true, Upper: -1, Subsets: []string{"Behavior::step"}}, {Name: "isModelLevelEvaluable", DefiningClass: "Function", IRI: "https://www.omg.org/spec/SysML#Function_isModelLevelEvaluable", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true, Derived: true}, {Name: "result", DefiningClass: "Function", IRI: "https://www.omg.org/spec/SysML#Function_result", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Derived: true, Subsets: []string{"Type::output", "Behavior::parameter"}}, {Name: "elseAction", DefiningClass: "IfActionUsage", IRI: "https://www.omg.org/spec/SysML#IfActionUsage_elseAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Derived: true}, @@ -217,15 +217,15 @@ var properties = []Property{ {Name: "isRecursive", DefiningClass: "Import", IRI: "https://www.omg.org/spec/SysML#Import_isRecursive", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "visibility", DefiningClass: "Import", IRI: "https://www.omg.org/spec/SysML#Import_visibility", Kind: DatatypeProperty, Range: "https://www.omg.org/spec/SysML#VisibilityKind", Lower: 1, Default: "private", HasDefault: true}, {Name: "useCaseIncluded", DefiningClass: "IncludeUseCaseUsage", IRI: "https://www.omg.org/spec/SysML#IncludeUseCaseUsage_useCaseIncluded", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#UseCaseUsage", Lower: 1, Derived: true, Redefines: []string{"PerformActionUsage::performedAction"}}, - {Name: "argument", DefiningClass: "InstantiationExpression", IRI: "https://www.omg.org/spec/SysML#InstantiationExpression_argument", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Ordered: true, Derived: true}, + {Name: "argument", DefiningClass: "InstantiationExpression", IRI: "https://www.omg.org/spec/SysML#InstantiationExpression_argument", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Ordered: true, Derived: true, Upper: -1}, {Name: "instantiatedType", DefiningClass: "InstantiationExpression", IRI: "https://www.omg.org/spec/SysML#InstantiationExpression_instantiatedType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Derived: true, Subsets: []string{"Namespace::member"}}, - {Name: "interfaceEnd", DefiningClass: "InterfaceDefinition", IRI: "https://www.omg.org/spec/SysML#InterfaceDefinition_interfaceEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PortUsage", Many: true, Ordered: true, Derived: true, Redefines: []string{"ConnectionDefinition::connectionEnd"}}, - {Name: "interfaceDefinition", DefiningClass: "InterfaceUsage", IRI: "https://www.omg.org/spec/SysML#InterfaceUsage_interfaceDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#InterfaceDefinition", Many: true, Derived: true, Redefines: []string{"ConnectionUsage::connectionDefinition"}}, + {Name: "interfaceEnd", DefiningClass: "InterfaceDefinition", IRI: "https://www.omg.org/spec/SysML#InterfaceDefinition_interfaceEnd", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PortUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"ConnectionDefinition::connectionEnd"}}, + {Name: "interfaceDefinition", DefiningClass: "InterfaceUsage", IRI: "https://www.omg.org/spec/SysML#InterfaceUsage_interfaceDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#InterfaceDefinition", Many: true, Derived: true, Upper: -1, Redefines: []string{"ConnectionUsage::connectionDefinition"}}, {Name: "intersectingType", DefiningClass: "Intersecting", IRI: "https://www.omg.org/spec/SysML#Intersecting_intersectingType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Redefines: []string{"Relationship::target"}}, {Name: "typeIntersected", DefiningClass: "Intersecting", IRI: "https://www.omg.org/spec/SysML#Intersecting_typeIntersected", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Derived: true, Redefines: []string{"Relationship::source"}, Subsets: []string{"Relationship::owningRelatedElement"}, Opposite: "Type::ownedIntersecting"}, {Name: "isNegated", DefiningClass: "Invariant", IRI: "https://www.omg.org/spec/SysML#Invariant_isNegated", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, - {Name: "operand", DefiningClass: "InvocationExpression", IRI: "https://www.omg.org/spec/SysML#InvocationExpression_operand", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Ordered: true, Derived: true}, - {Name: "itemDefinition", DefiningClass: "ItemUsage", IRI: "https://www.omg.org/spec/SysML#ItemUsage_itemDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Structure", Many: true, Ordered: true, Derived: true, Subsets: []string{"OccurrenceUsage::occurrenceDefinition"}}, + {Name: "operand", DefiningClass: "InvocationExpression", IRI: "https://www.omg.org/spec/SysML#InvocationExpression_operand", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Ordered: true, Derived: true, Upper: -1}, + {Name: "itemDefinition", DefiningClass: "ItemUsage", IRI: "https://www.omg.org/spec/SysML#ItemUsage_itemDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Structure", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"OccurrenceUsage::occurrenceDefinition"}}, {Name: "isStandard", DefiningClass: "LibraryPackage", IRI: "https://www.omg.org/spec/SysML#LibraryPackage_isStandard", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "value", DefiningClass: "LiteralBoolean", IRI: "https://www.omg.org/spec/SysML#LiteralBoolean_value", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "value", DefiningClass: "LiteralInteger", IRI: "https://www.omg.org/spec/SysML#LiteralInteger_value", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#int", Lower: 1}, @@ -242,67 +242,67 @@ var properties = []Property{ {Name: "referencedElement", DefiningClass: "MetadataAccessExpression", IRI: "https://www.omg.org/spec/SysML#MetadataAccessExpression_referencedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Derived: true, Subsets: []string{"Namespace::member"}}, {Name: "metaclass", DefiningClass: "MetadataFeature", IRI: "https://www.omg.org/spec/SysML#MetadataFeature_metaclass", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Metaclass", Derived: true, Subsets: []string{"Feature::type"}}, {Name: "metadataDefinition", DefiningClass: "MetadataUsage", IRI: "https://www.omg.org/spec/SysML#MetadataUsage_metadataDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Metaclass", Derived: true, Redefines: []string{"ItemUsage::itemDefinition", "MetadataFeature::metaclass"}}, - {Name: "bound", DefiningClass: "MultiplicityRange", IRI: "https://www.omg.org/spec/SysML#MultiplicityRange_bound", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Lower: 1, Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::ownedMember"}}, + {Name: "bound", DefiningClass: "MultiplicityRange", IRI: "https://www.omg.org/spec/SysML#MultiplicityRange_bound", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Lower: 1, Many: true, Ordered: true, Derived: true, Upper: 2, Subsets: []string{"Namespace::ownedMember"}}, {Name: "lowerBound", DefiningClass: "MultiplicityRange", IRI: "https://www.omg.org/spec/SysML#MultiplicityRange_lowerBound", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Derived: true, Subsets: []string{"MultiplicityRange::bound"}}, {Name: "upperBound", DefiningClass: "MultiplicityRange", IRI: "https://www.omg.org/spec/SysML#MultiplicityRange_upperBound", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Lower: 1, Derived: true, Subsets: []string{"MultiplicityRange::bound"}}, {Name: "importedNamespace", DefiningClass: "NamespaceImport", IRI: "https://www.omg.org/spec/SysML#NamespaceImport_importedNamespace", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Namespace", Lower: 1, Redefines: []string{"Relationship::target"}}, - {Name: "importedMembership", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_importedMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Membership", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::membership"}}, - {Name: "member", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_member", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Derived: true}, - {Name: "membership", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_membership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Membership", Many: true, Ordered: true, Derived: true}, - {Name: "ownedImport", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_ownedImport", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Import", Many: true, Ordered: true, Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Import::importOwningNamespace"}, - {Name: "ownedMember", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_ownedMember", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::member"}, Opposite: "Element::owningNamespace"}, - {Name: "ownedMembership", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_ownedMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Membership", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::membership", "Element::ownedRelationship"}, Opposite: "Membership::membershipOwningNamespace"}, + {Name: "importedMembership", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_importedMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Membership", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::membership"}}, + {Name: "member", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_member", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Derived: true, Upper: -1}, + {Name: "membership", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_membership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Membership", Many: true, Ordered: true, Derived: true, Upper: -1}, + {Name: "ownedImport", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_ownedImport", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Import", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Import::importOwningNamespace"}, + {Name: "ownedMember", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_ownedMember", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::member"}, Opposite: "Element::owningNamespace"}, + {Name: "ownedMembership", DefiningClass: "Namespace", IRI: "https://www.omg.org/spec/SysML#Namespace_ownedMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Membership", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::membership", "Element::ownedRelationship"}, Opposite: "Membership::membershipOwningNamespace"}, {Name: "ownedObjectiveRequirement", DefiningClass: "ObjectiveMembership", IRI: "https://www.omg.org/spec/SysML#ObjectiveMembership_ownedObjectiveRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Lower: 1, Derived: true, Redefines: []string{"FeatureMembership::ownedMemberFeature"}}, {Name: "isIndividual", DefiningClass: "OccurrenceDefinition", IRI: "https://www.omg.org/spec/SysML#OccurrenceDefinition_isIndividual", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "individualDefinition", DefiningClass: "OccurrenceUsage", IRI: "https://www.omg.org/spec/SysML#OccurrenceUsage_individualDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#OccurrenceDefinition", Derived: true, Subsets: []string{"OccurrenceUsage::occurrenceDefinition"}}, {Name: "isIndividual", DefiningClass: "OccurrenceUsage", IRI: "https://www.omg.org/spec/SysML#OccurrenceUsage_isIndividual", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, - {Name: "occurrenceDefinition", DefiningClass: "OccurrenceUsage", IRI: "https://www.omg.org/spec/SysML#OccurrenceUsage_occurrenceDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Class", Many: true, Ordered: true, Derived: true, Redefines: []string{"Usage::definition"}}, + {Name: "occurrenceDefinition", DefiningClass: "OccurrenceUsage", IRI: "https://www.omg.org/spec/SysML#OccurrenceUsage_occurrenceDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Class", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Usage::definition"}}, {Name: "portionKind", DefiningClass: "OccurrenceUsage", IRI: "https://www.omg.org/spec/SysML#OccurrenceUsage_portionKind", Kind: DatatypeProperty, Range: "https://www.omg.org/spec/SysML#PortionKind"}, {Name: "operator", DefiningClass: "OperatorExpression", IRI: "https://www.omg.org/spec/SysML#OperatorExpression_operator", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Lower: 1}, {Name: "ownedMemberElement", DefiningClass: "OwningMembership", IRI: "https://www.omg.org/spec/SysML#OwningMembership_ownedMemberElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Derived: true, Redefines: []string{"Membership::memberElement"}, Subsets: []string{"Relationship::ownedRelatedElement"}, Opposite: "Element::owningMembership"}, {Name: "ownedMemberElementId", DefiningClass: "OwningMembership", IRI: "https://www.omg.org/spec/SysML#OwningMembership_ownedMemberElementId", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Lower: 1, Derived: true, Redefines: []string{"Membership::memberElementId"}}, {Name: "ownedMemberName", DefiningClass: "OwningMembership", IRI: "https://www.omg.org/spec/SysML#OwningMembership_ownedMemberName", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Derived: true, Redefines: []string{"Membership::memberName"}}, {Name: "ownedMemberShortName", DefiningClass: "OwningMembership", IRI: "https://www.omg.org/spec/SysML#OwningMembership_ownedMemberShortName", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Derived: true, Redefines: []string{"Membership::memberShortName"}}, - {Name: "filterCondition", DefiningClass: "Package", IRI: "https://www.omg.org/spec/SysML#Package_filterCondition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::ownedMember"}}, + {Name: "filterCondition", DefiningClass: "Package", IRI: "https://www.omg.org/spec/SysML#Package_filterCondition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::ownedMember"}}, {Name: "ownedMemberParameter", DefiningClass: "ParameterMembership", IRI: "https://www.omg.org/spec/SysML#ParameterMembership_ownedMemberParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Derived: true, Redefines: []string{"FeatureMembership::ownedMemberFeature"}}, - {Name: "partDefinition", DefiningClass: "PartUsage", IRI: "https://www.omg.org/spec/SysML#PartUsage_partDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartDefinition", Many: true, Ordered: true, Derived: true, Subsets: []string{"ItemUsage::itemDefinition"}}, + {Name: "partDefinition", DefiningClass: "PartUsage", IRI: "https://www.omg.org/spec/SysML#PartUsage_partDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartDefinition", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"ItemUsage::itemDefinition"}}, {Name: "performedAction", DefiningClass: "PerformActionUsage", IRI: "https://www.omg.org/spec/SysML#PerformActionUsage_performedAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Lower: 1, Derived: true, Redefines: []string{"EventOccurrenceUsage::eventOccurrence"}}, {Name: "conjugatedPortDefinition", DefiningClass: "PortConjugation", IRI: "https://www.omg.org/spec/SysML#PortConjugation_conjugatedPortDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConjugatedPortDefinition", Lower: 1, Derived: true, Redefines: []string{"Conjugation::owningType"}, Opposite: "ConjugatedPortDefinition::ownedPortConjugator"}, {Name: "originalPortDefinition", DefiningClass: "PortConjugation", IRI: "https://www.omg.org/spec/SysML#PortConjugation_originalPortDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PortDefinition", Lower: 1, Redefines: []string{"Conjugation::originalType"}}, {Name: "conjugatedPortDefinition", DefiningClass: "PortDefinition", IRI: "https://www.omg.org/spec/SysML#PortDefinition_conjugatedPortDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConjugatedPortDefinition", Derived: true, Subsets: []string{"Namespace::ownedMember"}, Opposite: "ConjugatedPortDefinition::originalPortDefinition"}, - {Name: "portDefinition", DefiningClass: "PortUsage", IRI: "https://www.omg.org/spec/SysML#PortUsage_portDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PortDefinition", Many: true, Ordered: true, Derived: true, Redefines: []string{"OccurrenceUsage::occurrenceDefinition"}}, + {Name: "portDefinition", DefiningClass: "PortUsage", IRI: "https://www.omg.org/spec/SysML#PortUsage_portDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PortDefinition", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"OccurrenceUsage::occurrenceDefinition"}}, {Name: "redefinedFeature", DefiningClass: "Redefinition", IRI: "https://www.omg.org/spec/SysML#Redefinition_redefinedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Redefines: []string{"Subsetting::subsettedFeature"}}, {Name: "redefiningFeature", DefiningClass: "Redefinition", IRI: "https://www.omg.org/spec/SysML#Redefinition_redefiningFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Redefines: []string{"Subsetting::subsettingFeature"}}, {Name: "referencedFeature", DefiningClass: "ReferenceSubsetting", IRI: "https://www.omg.org/spec/SysML#ReferenceSubsetting_referencedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Redefines: []string{"Subsetting::subsettedFeature"}}, {Name: "referencingFeature", DefiningClass: "ReferenceSubsetting", IRI: "https://www.omg.org/spec/SysML#ReferenceSubsetting_referencingFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Derived: true, Redefines: []string{"Subsetting::owningFeature", "Subsetting::subsettingFeature"}, Opposite: "Feature::ownedReferenceSubsetting"}, {Name: "isImplied", DefiningClass: "Relationship", IRI: "https://www.omg.org/spec/SysML#Relationship_isImplied", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, - {Name: "ownedRelatedElement", DefiningClass: "Relationship", IRI: "https://www.omg.org/spec/SysML#Relationship_ownedRelatedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Subsets: []string{"Relationship::relatedElement"}, Opposite: "Element::owningRelationship"}, + {Name: "ownedRelatedElement", DefiningClass: "Relationship", IRI: "https://www.omg.org/spec/SysML#Relationship_ownedRelatedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Upper: -1, Subsets: []string{"Relationship::relatedElement"}, Opposite: "Element::owningRelationship"}, {Name: "owningRelatedElement", DefiningClass: "Relationship", IRI: "https://www.omg.org/spec/SysML#Relationship_owningRelatedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Subsets: []string{"Relationship::relatedElement"}, Opposite: "Element::ownedRelationship"}, - {Name: "relatedElement", DefiningClass: "Relationship", IRI: "https://www.omg.org/spec/SysML#Relationship_relatedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Nonunique: true, Derived: true}, - {Name: "source", DefiningClass: "Relationship", IRI: "https://www.omg.org/spec/SysML#Relationship_source", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Subsets: []string{"Relationship::relatedElement"}}, - {Name: "target", DefiningClass: "Relationship", IRI: "https://www.omg.org/spec/SysML#Relationship_target", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Subsets: []string{"Relationship::relatedElement"}}, - {Name: "rendering", DefiningClass: "RenderingDefinition", IRI: "https://www.omg.org/spec/SysML#RenderingDefinition_rendering", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::usage"}}, + {Name: "relatedElement", DefiningClass: "Relationship", IRI: "https://www.omg.org/spec/SysML#Relationship_relatedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Nonunique: true, Derived: true, Upper: -1}, + {Name: "source", DefiningClass: "Relationship", IRI: "https://www.omg.org/spec/SysML#Relationship_source", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Upper: -1, Subsets: []string{"Relationship::relatedElement"}}, + {Name: "target", DefiningClass: "Relationship", IRI: "https://www.omg.org/spec/SysML#Relationship_target", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Upper: -1, Subsets: []string{"Relationship::relatedElement"}}, + {Name: "rendering", DefiningClass: "RenderingDefinition", IRI: "https://www.omg.org/spec/SysML#RenderingDefinition_rendering", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::usage"}}, {Name: "renderingDefinition", DefiningClass: "RenderingUsage", IRI: "https://www.omg.org/spec/SysML#RenderingUsage_renderingDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingDefinition", Derived: true, Redefines: []string{"PartUsage::partDefinition"}}, {Name: "kind", DefiningClass: "RequirementConstraintMembership", IRI: "https://www.omg.org/spec/SysML#RequirementConstraintMembership_kind", Kind: DatatypeProperty, Range: "https://www.omg.org/spec/SysML#RequirementConstraintKind", Lower: 1}, {Name: "ownedConstraint", DefiningClass: "RequirementConstraintMembership", IRI: "https://www.omg.org/spec/SysML#RequirementConstraintMembership_ownedConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Lower: 1, Derived: true, Redefines: []string{"FeatureMembership::ownedMemberFeature"}}, {Name: "referencedConstraint", DefiningClass: "RequirementConstraintMembership", IRI: "https://www.omg.org/spec/SysML#RequirementConstraintMembership_referencedConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Lower: 1, Derived: true}, - {Name: "actorParameter", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_actorParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Behavior::parameter", "Definition::usage"}}, - {Name: "assumedConstraint", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_assumedConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::ownedFeature"}}, - {Name: "framedConcern", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_framedConcern", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"RequirementDefinition::requiredConstraint"}}, + {Name: "actorParameter", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_actorParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Behavior::parameter", "Definition::usage"}}, + {Name: "assumedConstraint", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_assumedConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedFeature"}}, + {Name: "framedConcern", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_framedConcern", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"RequirementDefinition::requiredConstraint"}}, {Name: "reqId", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_reqId", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Redefines: []string{"Element::declaredShortName"}}, - {Name: "requiredConstraint", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_requiredConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::ownedFeature"}}, - {Name: "stakeholderParameter", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_stakeholderParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Behavior::parameter", "Definition::usage"}}, + {Name: "requiredConstraint", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_requiredConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedFeature"}}, + {Name: "stakeholderParameter", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_stakeholderParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Behavior::parameter", "Definition::usage"}}, {Name: "subjectParameter", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_subjectParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Lower: 1, Derived: true, Subsets: []string{"Behavior::parameter", "Definition::usage"}}, - {Name: "text", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_text", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Many: true, Derived: true}, - {Name: "actorParameter", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_actorParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Step::parameter", "Usage::usage"}}, - {Name: "assumedConstraint", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_assumedConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::ownedFeature"}}, - {Name: "framedConcern", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_framedConcern", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"RequirementUsage::requiredConstraint"}}, + {Name: "text", DefiningClass: "RequirementDefinition", IRI: "https://www.omg.org/spec/SysML#RequirementDefinition_text", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Many: true, Derived: true, Upper: -1}, + {Name: "actorParameter", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_actorParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Step::parameter", "Usage::usage"}}, + {Name: "assumedConstraint", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_assumedConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedFeature"}}, + {Name: "framedConcern", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_framedConcern", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"RequirementUsage::requiredConstraint"}}, {Name: "reqId", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_reqId", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Redefines: []string{"Element::declaredShortName"}}, - {Name: "requiredConstraint", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_requiredConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::ownedFeature"}}, + {Name: "requiredConstraint", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_requiredConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedFeature"}}, {Name: "requirementDefinition", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_requirementDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementDefinition", Derived: true, Redefines: []string{"ConstraintUsage::constraintDefinition"}}, - {Name: "stakeholderParameter", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_stakeholderParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Step::parameter", "Usage::usage"}}, + {Name: "stakeholderParameter", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_stakeholderParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Step::parameter", "Usage::usage"}}, {Name: "subjectParameter", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_subjectParameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Lower: 1, Derived: true, Subsets: []string{"Step::parameter", "Usage::usage"}}, - {Name: "text", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_text", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Many: true, Derived: true}, + {Name: "text", DefiningClass: "RequirementUsage", IRI: "https://www.omg.org/spec/SysML#RequirementUsage_text", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Many: true, Derived: true, Upper: -1}, {Name: "ownedRequirement", DefiningClass: "RequirementVerificationMembership", IRI: "https://www.omg.org/spec/SysML#RequirementVerificationMembership_ownedRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Lower: 1, Derived: true, Redefines: []string{"RequirementConstraintMembership::ownedConstraint"}}, {Name: "verifiedRequirement", DefiningClass: "RequirementVerificationMembership", IRI: "https://www.omg.org/spec/SysML#RequirementVerificationMembership_verifiedRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Lower: 1, Derived: true, Redefines: []string{"RequirementConstraintMembership::referencedConstraint"}}, {Name: "ownedResultExpression", DefiningClass: "ResultExpressionMembership", IRI: "https://www.omg.org/spec/SysML#ResultExpressionMembership_ownedResultExpression", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Lower: 1, Derived: true, Redefines: []string{"FeatureMembership::ownedMemberFeature"}}, @@ -319,16 +319,16 @@ var properties = []Property{ {Name: "entryAction", DefiningClass: "StateDefinition", IRI: "https://www.omg.org/spec/SysML#StateDefinition_entryAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Derived: true}, {Name: "exitAction", DefiningClass: "StateDefinition", IRI: "https://www.omg.org/spec/SysML#StateDefinition_exitAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Derived: true}, {Name: "isParallel", DefiningClass: "StateDefinition", IRI: "https://www.omg.org/spec/SysML#StateDefinition_isParallel", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, - {Name: "state", DefiningClass: "StateDefinition", IRI: "https://www.omg.org/spec/SysML#StateDefinition_state", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#StateUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"ActionDefinition::action"}}, + {Name: "state", DefiningClass: "StateDefinition", IRI: "https://www.omg.org/spec/SysML#StateDefinition_state", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#StateUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"ActionDefinition::action"}}, {Name: "action", DefiningClass: "StateSubactionMembership", IRI: "https://www.omg.org/spec/SysML#StateSubactionMembership_action", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Lower: 1, Derived: true, Redefines: []string{"FeatureMembership::ownedMemberFeature"}}, {Name: "kind", DefiningClass: "StateSubactionMembership", IRI: "https://www.omg.org/spec/SysML#StateSubactionMembership_kind", Kind: DatatypeProperty, Range: "https://www.omg.org/spec/SysML#StateSubactionKind", Lower: 1}, {Name: "doAction", DefiningClass: "StateUsage", IRI: "https://www.omg.org/spec/SysML#StateUsage_doAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Derived: true}, {Name: "entryAction", DefiningClass: "StateUsage", IRI: "https://www.omg.org/spec/SysML#StateUsage_entryAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Derived: true}, {Name: "exitAction", DefiningClass: "StateUsage", IRI: "https://www.omg.org/spec/SysML#StateUsage_exitAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Derived: true}, {Name: "isParallel", DefiningClass: "StateUsage", IRI: "https://www.omg.org/spec/SysML#StateUsage_isParallel", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, - {Name: "stateDefinition", DefiningClass: "StateUsage", IRI: "https://www.omg.org/spec/SysML#StateUsage_stateDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Behavior", Many: true, Ordered: true, Derived: true, Redefines: []string{"ActionUsage::actionDefinition"}}, - {Name: "behavior", DefiningClass: "Step", IRI: "https://www.omg.org/spec/SysML#Step_behavior", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Behavior", Many: true, Ordered: true, Derived: true, Subsets: []string{"Feature::type"}}, - {Name: "parameter", DefiningClass: "Step", IRI: "https://www.omg.org/spec/SysML#Step_parameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Redefines: []string{"Type::directedFeature"}}, + {Name: "stateDefinition", DefiningClass: "StateUsage", IRI: "https://www.omg.org/spec/SysML#StateUsage_stateDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Behavior", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"ActionUsage::actionDefinition"}}, + {Name: "behavior", DefiningClass: "Step", IRI: "https://www.omg.org/spec/SysML#Step_behavior", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Behavior", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Feature::type"}}, + {Name: "parameter", DefiningClass: "Step", IRI: "https://www.omg.org/spec/SysML#Step_parameter", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Type::directedFeature"}}, {Name: "owningClassifier", DefiningClass: "Subclassification", IRI: "https://www.omg.org/spec/SysML#Subclassification_owningClassifier", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Classifier", Derived: true, Redefines: []string{"Specialization::owningType"}, Opposite: "Classifier::ownedSubclassification"}, {Name: "subclassifier", DefiningClass: "Subclassification", IRI: "https://www.omg.org/spec/SysML#Subclassification_subclassifier", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Classifier", Lower: 1, Redefines: []string{"Specialization::specific"}}, {Name: "superclassifier", DefiningClass: "Subclassification", IRI: "https://www.omg.org/spec/SysML#Subclassification_superclassifier", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Classifier", Lower: 1, Redefines: []string{"Specialization::general"}}, @@ -342,100 +342,100 @@ var properties = []Property{ {Name: "representedElement", DefiningClass: "TextualRepresentation", IRI: "https://www.omg.org/spec/SysML#TextualRepresentation_representedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Derived: true, Redefines: []string{"AnnotatingElement::annotatedElement"}, Subsets: []string{"Element::owner"}, Opposite: "Element::textualRepresentation"}, {Name: "kind", DefiningClass: "TransitionFeatureMembership", IRI: "https://www.omg.org/spec/SysML#TransitionFeatureMembership_kind", Kind: DatatypeProperty, Range: "https://www.omg.org/spec/SysML#TransitionFeatureKind", Lower: 1}, {Name: "transitionFeature", DefiningClass: "TransitionFeatureMembership", IRI: "https://www.omg.org/spec/SysML#TransitionFeatureMembership_transitionFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Step", Lower: 1, Derived: true, Redefines: []string{"FeatureMembership::ownedMemberFeature"}}, - {Name: "effectAction", DefiningClass: "TransitionUsage", IRI: "https://www.omg.org/spec/SysML#TransitionUsage_effectAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Many: true, Derived: true, Subsets: []string{"Type::feature"}}, - {Name: "guardExpression", DefiningClass: "TransitionUsage", IRI: "https://www.omg.org/spec/SysML#TransitionUsage_guardExpression", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Derived: true, Subsets: []string{"Type::ownedFeature"}}, + {Name: "effectAction", DefiningClass: "TransitionUsage", IRI: "https://www.omg.org/spec/SysML#TransitionUsage_effectAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Many: true, Derived: true, Upper: -1, Subsets: []string{"Type::feature"}}, + {Name: "guardExpression", DefiningClass: "TransitionUsage", IRI: "https://www.omg.org/spec/SysML#TransitionUsage_guardExpression", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedFeature"}}, {Name: "source", DefiningClass: "TransitionUsage", IRI: "https://www.omg.org/spec/SysML#TransitionUsage_source", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Lower: 1, Derived: true}, {Name: "succession", DefiningClass: "TransitionUsage", IRI: "https://www.omg.org/spec/SysML#TransitionUsage_succession", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Succession", Lower: 1, Derived: true, Subsets: []string{"Namespace::ownedMember"}}, {Name: "target", DefiningClass: "TransitionUsage", IRI: "https://www.omg.org/spec/SysML#TransitionUsage_target", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Lower: 1, Derived: true}, - {Name: "triggerAction", DefiningClass: "TransitionUsage", IRI: "https://www.omg.org/spec/SysML#TransitionUsage_triggerAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AcceptActionUsage", Many: true, Derived: true, Subsets: []string{"Type::ownedFeature"}}, + {Name: "triggerAction", DefiningClass: "TransitionUsage", IRI: "https://www.omg.org/spec/SysML#TransitionUsage_triggerAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AcceptActionUsage", Many: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedFeature"}}, {Name: "kind", DefiningClass: "TriggerInvocationExpression", IRI: "https://www.omg.org/spec/SysML#TriggerInvocationExpression_kind", Kind: DatatypeProperty, Range: "https://www.omg.org/spec/SysML#TriggerKind", Lower: 1}, {Name: "featureOfType", DefiningClass: "TypeFeaturing", IRI: "https://www.omg.org/spec/SysML#TypeFeaturing_featureOfType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Lower: 1, Redefines: []string{"Relationship::source"}}, {Name: "featuringType", DefiningClass: "TypeFeaturing", IRI: "https://www.omg.org/spec/SysML#TypeFeaturing_featuringType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Redefines: []string{"Relationship::target"}}, {Name: "owningFeatureOfType", DefiningClass: "TypeFeaturing", IRI: "https://www.omg.org/spec/SysML#TypeFeaturing_owningFeatureOfType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Derived: true, Subsets: []string{"Relationship::owningRelatedElement", "TypeFeaturing::featureOfType"}, Opposite: "Feature::ownedTypeFeaturing"}, - {Name: "differencingType", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_differencingType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Derived: true}, - {Name: "directedFeature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_directedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::feature"}}, - {Name: "endFeature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_endFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::feature"}}, - {Name: "feature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_feature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::member"}}, - {Name: "featureMembership", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_featureMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureMembership", Many: true, Ordered: true, Derived: true}, - {Name: "inheritedFeature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_inheritedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::feature"}}, - {Name: "inheritedMembership", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_inheritedMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Membership", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::membership"}}, - {Name: "input", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_input", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::directedFeature"}}, - {Name: "intersectingType", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_intersectingType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Derived: true}, + {Name: "differencingType", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_differencingType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Derived: true, Upper: -1}, + {Name: "directedFeature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_directedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::feature"}}, + {Name: "endFeature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_endFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::feature"}}, + {Name: "feature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_feature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::member"}}, + {Name: "featureMembership", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_featureMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureMembership", Many: true, Ordered: true, Derived: true, Upper: -1}, + {Name: "inheritedFeature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_inheritedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::feature"}}, + {Name: "inheritedMembership", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_inheritedMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Membership", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::membership"}}, + {Name: "input", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_input", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::directedFeature"}}, + {Name: "intersectingType", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_intersectingType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Derived: true, Upper: -1}, {Name: "isAbstract", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_isAbstract", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "isConjugated", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_isConjugated", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true, Derived: true}, {Name: "isSufficient", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_isSufficient", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "multiplicity", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_multiplicity", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Multiplicity", Derived: true, Subsets: []string{"Namespace::ownedMember"}}, - {Name: "output", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_output", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::directedFeature"}}, + {Name: "output", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_output", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::directedFeature"}}, {Name: "ownedConjugator", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedConjugator", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Conjugation", Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Conjugation::owningType"}, - {Name: "ownedDifferencing", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedDifferencing", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Differencing", Many: true, Ordered: true, Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Differencing::typeDifferenced"}, - {Name: "ownedDisjoining", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedDisjoining", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Disjoining", Many: true, Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Disjoining::owningType"}, - {Name: "ownedEndFeature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedEndFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::endFeature", "Type::ownedFeature"}, Opposite: "Feature::endOwningType"}, - {Name: "ownedFeature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::ownedMember"}, Opposite: "Feature::owningType"}, - {Name: "ownedFeatureMembership", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedFeatureMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureMembership", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::ownedMembership", "Type::featureMembership"}, Opposite: "FeatureMembership::owningType"}, - {Name: "ownedIntersecting", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedIntersecting", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Intersecting", Many: true, Ordered: true, Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Intersecting::typeIntersected"}, - {Name: "ownedSpecialization", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedSpecialization", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Specialization", Many: true, Ordered: true, Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Specialization::owningType"}, - {Name: "ownedUnioning", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedUnioning", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Unioning", Many: true, Ordered: true, Derived: true, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Unioning::typeUnioned"}, - {Name: "unioningType", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_unioningType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Derived: true}, + {Name: "ownedDifferencing", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedDifferencing", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Differencing", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Differencing::typeDifferenced"}, + {Name: "ownedDisjoining", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedDisjoining", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Disjoining", Many: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Disjoining::owningType"}, + {Name: "ownedEndFeature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedEndFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::endFeature", "Type::ownedFeature"}, Opposite: "Feature::endOwningType"}, + {Name: "ownedFeature", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedFeature", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Feature", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::ownedMember"}, Opposite: "Feature::owningType"}, + {Name: "ownedFeatureMembership", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedFeatureMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FeatureMembership", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::ownedMembership", "Type::featureMembership"}, Opposite: "FeatureMembership::owningType"}, + {Name: "ownedIntersecting", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedIntersecting", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Intersecting", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Intersecting::typeIntersected"}, + {Name: "ownedSpecialization", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedSpecialization", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Specialization", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Specialization::owningType"}, + {Name: "ownedUnioning", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_ownedUnioning", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Unioning", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Element::ownedRelationship"}, Opposite: "Unioning::typeUnioned"}, + {Name: "unioningType", DefiningClass: "Type", IRI: "https://www.omg.org/spec/SysML#Type_unioningType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Many: true, Ordered: true, Derived: true, Upper: -1}, {Name: "typeUnioned", DefiningClass: "Unioning", IRI: "https://www.omg.org/spec/SysML#Unioning_typeUnioned", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Derived: true, Redefines: []string{"Relationship::source"}, Subsets: []string{"Relationship::owningRelatedElement"}, Opposite: "Type::ownedUnioning"}, {Name: "unioningType", DefiningClass: "Unioning", IRI: "https://www.omg.org/spec/SysML#Unioning_unioningType", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Type", Lower: 1, Redefines: []string{"Relationship::target"}}, - {Name: "definition", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_definition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Classifier", Many: true, Ordered: true, Derived: true, Redefines: []string{"Feature::type"}}, - {Name: "directedUsage", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_directedUsage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::directedFeature", "Usage::usage"}}, + {Name: "definition", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_definition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Classifier", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Feature::type"}}, + {Name: "directedUsage", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_directedUsage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::directedFeature", "Usage::usage"}}, {Name: "isReference", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_isReference", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true, Derived: true}, {Name: "isVariation", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_isVariation", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true}, {Name: "mayTimeVary", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_mayTimeVary", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Lower: 1, Default: "false", HasDefault: true, Derived: true, Redefines: []string{"Feature::isVariable"}}, - {Name: "nestedAction", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedOccurrence"}}, - {Name: "nestedAllocation", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedAllocation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AllocationUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedConnection"}}, - {Name: "nestedAnalysisCase", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedAnalysisCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AnalysisCaseUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedCase"}}, - {Name: "nestedAttribute", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedAttribute", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AttributeUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedUsage"}}, - {Name: "nestedCalculation", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedCalculation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CalculationUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedAction"}}, - {Name: "nestedCase", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CaseUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedCalculation"}}, - {Name: "nestedConcern", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedConcern", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernUsage", Many: true, Derived: true, Subsets: []string{"Usage::nestedRequirement"}}, - {Name: "nestedConnection", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedConnection", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConnectorAsUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedUsage"}}, - {Name: "nestedConstraint", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedOccurrence"}}, - {Name: "nestedEnumeration", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedEnumeration", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#EnumerationUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedAttribute"}}, - {Name: "nestedFlow", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedFlow", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FlowUsage", Many: true, Derived: true, Subsets: []string{"Usage::nestedConnection"}}, - {Name: "nestedInterface", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedInterface", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#InterfaceUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedConnection"}}, - {Name: "nestedItem", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedItem", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ItemUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedOccurrence"}}, - {Name: "nestedMetadata", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedMetadata", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#MetadataUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedItem"}}, - {Name: "nestedOccurrence", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedOccurrence", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#OccurrenceUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedUsage"}}, - {Name: "nestedPart", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedPart", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedItem"}}, - {Name: "nestedPort", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedPort", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PortUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedUsage"}}, - {Name: "nestedReference", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedReference", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ReferenceUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedUsage"}}, - {Name: "nestedRendering", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedRendering", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedPart"}}, - {Name: "nestedRequirement", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedConstraint"}}, - {Name: "nestedState", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedState", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#StateUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedAction"}}, - {Name: "nestedTransition", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedTransition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#TransitionUsage", Many: true, Derived: true, Subsets: []string{"Usage::nestedUsage"}}, - {Name: "nestedUsage", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedUsage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::ownedFeature", "Usage::usage"}, Opposite: "Usage::owningUsage"}, - {Name: "nestedUseCase", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedUseCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#UseCaseUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedCase"}}, - {Name: "nestedVerificationCase", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedVerificationCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#VerificationCaseUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedCase"}}, - {Name: "nestedView", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedView", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedPart"}}, - {Name: "nestedViewpoint", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedViewpoint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewpointUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedRequirement"}}, + {Name: "nestedAction", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedAction", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ActionUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedOccurrence"}}, + {Name: "nestedAllocation", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedAllocation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AllocationUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedConnection"}}, + {Name: "nestedAnalysisCase", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedAnalysisCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AnalysisCaseUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedCase"}}, + {Name: "nestedAttribute", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedAttribute", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#AttributeUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedUsage"}}, + {Name: "nestedCalculation", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedCalculation", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CalculationUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedAction"}}, + {Name: "nestedCase", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#CaseUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedCalculation"}}, + {Name: "nestedConcern", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedConcern", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConcernUsage", Many: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedRequirement"}}, + {Name: "nestedConnection", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedConnection", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConnectorAsUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedUsage"}}, + {Name: "nestedConstraint", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedConstraint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ConstraintUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedOccurrence"}}, + {Name: "nestedEnumeration", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedEnumeration", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#EnumerationUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedAttribute"}}, + {Name: "nestedFlow", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedFlow", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#FlowUsage", Many: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedConnection"}}, + {Name: "nestedInterface", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedInterface", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#InterfaceUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedConnection"}}, + {Name: "nestedItem", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedItem", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ItemUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedOccurrence"}}, + {Name: "nestedMetadata", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedMetadata", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#MetadataUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedItem"}}, + {Name: "nestedOccurrence", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedOccurrence", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#OccurrenceUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedUsage"}}, + {Name: "nestedPart", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedPart", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedItem"}}, + {Name: "nestedPort", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedPort", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PortUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedUsage"}}, + {Name: "nestedReference", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedReference", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ReferenceUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedUsage"}}, + {Name: "nestedRendering", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedRendering", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedPart"}}, + {Name: "nestedRequirement", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedConstraint"}}, + {Name: "nestedState", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedState", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#StateUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedAction"}}, + {Name: "nestedTransition", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedTransition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#TransitionUsage", Many: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedUsage"}}, + {Name: "nestedUsage", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedUsage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::ownedFeature", "Usage::usage"}, Opposite: "Usage::owningUsage"}, + {Name: "nestedUseCase", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedUseCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#UseCaseUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedCase"}}, + {Name: "nestedVerificationCase", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedVerificationCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#VerificationCaseUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedCase"}}, + {Name: "nestedView", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedView", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedPart"}}, + {Name: "nestedViewpoint", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_nestedViewpoint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewpointUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedRequirement"}}, {Name: "owningDefinition", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_owningDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Definition", Derived: true, Subsets: []string{"Feature::owningType"}, Opposite: "Definition::ownedUsage"}, {Name: "owningUsage", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_owningUsage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Derived: true, Subsets: []string{"Feature::owningType"}, Opposite: "Usage::nestedUsage"}, - {Name: "usage", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_usage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Type::feature"}}, - {Name: "variant", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_variant", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Derived: true, Subsets: []string{"Namespace::ownedMember"}}, - {Name: "variantMembership", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_variantMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#VariantMembership", Many: true, Derived: true, Subsets: []string{"Namespace::ownedMembership"}}, - {Name: "includedUseCase", DefiningClass: "UseCaseDefinition", IRI: "https://www.omg.org/spec/SysML#UseCaseDefinition_includedUseCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#UseCaseUsage", Many: true, Ordered: true, Derived: true}, - {Name: "includedUseCase", DefiningClass: "UseCaseUsage", IRI: "https://www.omg.org/spec/SysML#UseCaseUsage_includedUseCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#UseCaseUsage", Many: true, Ordered: true, Derived: true}, + {Name: "usage", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_usage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Type::feature"}}, + {Name: "variant", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_variant", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Many: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::ownedMember"}}, + {Name: "variantMembership", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_variantMembership", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#VariantMembership", Many: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::ownedMembership"}}, + {Name: "includedUseCase", DefiningClass: "UseCaseDefinition", IRI: "https://www.omg.org/spec/SysML#UseCaseDefinition_includedUseCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#UseCaseUsage", Many: true, Ordered: true, Derived: true, Upper: -1}, + {Name: "includedUseCase", DefiningClass: "UseCaseUsage", IRI: "https://www.omg.org/spec/SysML#UseCaseUsage_includedUseCase", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#UseCaseUsage", Many: true, Ordered: true, Derived: true, Upper: -1}, {Name: "useCaseDefinition", DefiningClass: "UseCaseUsage", IRI: "https://www.omg.org/spec/SysML#UseCaseUsage_useCaseDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#UseCaseDefinition", Derived: true, Redefines: []string{"CaseUsage::caseDefinition"}}, {Name: "ownedVariantUsage", DefiningClass: "VariantMembership", IRI: "https://www.omg.org/spec/SysML#VariantMembership_ownedVariantUsage", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Usage", Lower: 1, Derived: true, Redefines: []string{"OwningMembership::ownedMemberElement"}}, - {Name: "verifiedRequirement", DefiningClass: "VerificationCaseDefinition", IRI: "https://www.omg.org/spec/SysML#VerificationCaseDefinition_verifiedRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Many: true, Ordered: true, Derived: true}, + {Name: "verifiedRequirement", DefiningClass: "VerificationCaseDefinition", IRI: "https://www.omg.org/spec/SysML#VerificationCaseDefinition_verifiedRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Many: true, Ordered: true, Derived: true, Upper: -1}, {Name: "verificationCaseDefinition", DefiningClass: "VerificationCaseUsage", IRI: "https://www.omg.org/spec/SysML#VerificationCaseUsage_verificationCaseDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#VerificationCaseDefinition", Derived: true, Subsets: []string{"CaseUsage::caseDefinition"}}, - {Name: "verifiedRequirement", DefiningClass: "VerificationCaseUsage", IRI: "https://www.omg.org/spec/SysML#VerificationCaseUsage_verifiedRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Many: true, Ordered: true, Derived: true}, - {Name: "satisfiedViewpoint", DefiningClass: "ViewDefinition", IRI: "https://www.omg.org/spec/SysML#ViewDefinition_satisfiedViewpoint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewpointUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::ownedRequirement"}}, - {Name: "view", DefiningClass: "ViewDefinition", IRI: "https://www.omg.org/spec/SysML#ViewDefinition_view", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Definition::usage"}}, - {Name: "viewCondition", DefiningClass: "ViewDefinition", IRI: "https://www.omg.org/spec/SysML#ViewDefinition_viewCondition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::ownedMember"}}, + {Name: "verifiedRequirement", DefiningClass: "VerificationCaseUsage", IRI: "https://www.omg.org/spec/SysML#VerificationCaseUsage_verifiedRequirement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RequirementUsage", Many: true, Ordered: true, Derived: true, Upper: -1}, + {Name: "satisfiedViewpoint", DefiningClass: "ViewDefinition", IRI: "https://www.omg.org/spec/SysML#ViewDefinition_satisfiedViewpoint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewpointUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::ownedRequirement"}}, + {Name: "view", DefiningClass: "ViewDefinition", IRI: "https://www.omg.org/spec/SysML#ViewDefinition_view", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Definition::usage"}}, + {Name: "viewCondition", DefiningClass: "ViewDefinition", IRI: "https://www.omg.org/spec/SysML#ViewDefinition_viewCondition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::ownedMember"}}, {Name: "viewRendering", DefiningClass: "ViewDefinition", IRI: "https://www.omg.org/spec/SysML#ViewDefinition_viewRendering", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingUsage", Derived: true}, {Name: "ownedRendering", DefiningClass: "ViewRenderingMembership", IRI: "https://www.omg.org/spec/SysML#ViewRenderingMembership_ownedRendering", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingUsage", Lower: 1, Derived: true, Redefines: []string{"FeatureMembership::ownedMemberFeature"}}, {Name: "referencedRendering", DefiningClass: "ViewRenderingMembership", IRI: "https://www.omg.org/spec/SysML#ViewRenderingMembership_referencedRendering", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingUsage", Lower: 1, Derived: true}, - {Name: "exposedElement", DefiningClass: "ViewUsage", IRI: "https://www.omg.org/spec/SysML#ViewUsage_exposedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::member"}}, - {Name: "satisfiedViewpoint", DefiningClass: "ViewUsage", IRI: "https://www.omg.org/spec/SysML#ViewUsage_satisfiedViewpoint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewpointUsage", Many: true, Ordered: true, Derived: true, Subsets: []string{"Usage::nestedRequirement"}}, - {Name: "viewCondition", DefiningClass: "ViewUsage", IRI: "https://www.omg.org/spec/SysML#ViewUsage_viewCondition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Ordered: true, Derived: true, Subsets: []string{"Namespace::ownedMember"}}, + {Name: "exposedElement", DefiningClass: "ViewUsage", IRI: "https://www.omg.org/spec/SysML#ViewUsage_exposedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::member"}}, + {Name: "satisfiedViewpoint", DefiningClass: "ViewUsage", IRI: "https://www.omg.org/spec/SysML#ViewUsage_satisfiedViewpoint", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewpointUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Usage::nestedRequirement"}}, + {Name: "viewCondition", DefiningClass: "ViewUsage", IRI: "https://www.omg.org/spec/SysML#ViewUsage_viewCondition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Many: true, Ordered: true, Derived: true, Upper: -1, Subsets: []string{"Namespace::ownedMember"}}, {Name: "viewDefinition", DefiningClass: "ViewUsage", IRI: "https://www.omg.org/spec/SysML#ViewUsage_viewDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewDefinition", Derived: true, Redefines: []string{"PartUsage::partDefinition"}}, {Name: "viewRendering", DefiningClass: "ViewUsage", IRI: "https://www.omg.org/spec/SysML#ViewUsage_viewRendering", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#RenderingUsage", Derived: true}, - {Name: "viewpointStakeholder", DefiningClass: "ViewpointDefinition", IRI: "https://www.omg.org/spec/SysML#ViewpointDefinition_viewpointStakeholder", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true}, + {Name: "viewpointStakeholder", DefiningClass: "ViewpointDefinition", IRI: "https://www.omg.org/spec/SysML#ViewpointDefinition_viewpointStakeholder", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1}, {Name: "viewpointDefinition", DefiningClass: "ViewpointUsage", IRI: "https://www.omg.org/spec/SysML#ViewpointUsage_viewpointDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#ViewpointDefinition", Derived: true, Redefines: []string{"RequirementUsage::requirementDefinition"}}, - {Name: "viewpointStakeholder", DefiningClass: "ViewpointUsage", IRI: "https://www.omg.org/spec/SysML#ViewpointUsage_viewpointStakeholder", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true}, + {Name: "viewpointStakeholder", DefiningClass: "ViewpointUsage", IRI: "https://www.omg.org/spec/SysML#ViewpointUsage_viewpointStakeholder", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1}, {Name: "untilArgument", DefiningClass: "WhileLoopActionUsage", IRI: "https://www.omg.org/spec/SysML#WhileLoopActionUsage_untilArgument", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Derived: true}, {Name: "whileArgument", DefiningClass: "WhileLoopActionUsage", IRI: "https://www.omg.org/spec/SysML#WhileLoopActionUsage_whileArgument", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Expression", Lower: 1, Derived: true}, } diff --git a/internal/translate/rdf/ontology/table_json.go b/internal/translate/rdf/ontology/table_json.go index 15e254c0a1..c538c32849 100644 --- a/internal/translate/rdf/ontology/table_json.go +++ b/internal/translate/rdf/ontology/table_json.go @@ -29,7 +29,7 @@ type TableEnumeration struct { } // TableProperty gives each property its kind ("object"/"datatype"), its range as a metaclass -// or enumeration name (else the datatype IRI) and its upper bound, 1 or -1 for unbounded. +// or enumeration name (else the datatype IRI) and its ecore upper bound (-1 unbounded). type TableProperty struct { Name string `json:"name"` DefiningClass string `json:"definingClass"` @@ -71,7 +71,7 @@ func CurrentTable() Table { func tableProperty(p Property) TableProperty { out := TableProperty{ Name: p.Name, DefiningClass: p.DefiningClass, Kind: "datatype", Range: p.Range, - Lower: p.Lower, Upper: 1, Ordered: p.Ordered, Nonunique: p.Nonunique, Derived: p.Derived, + Lower: p.Lower, Upper: p.UpperBound(), Ordered: p.Ordered, Nonunique: p.Nonunique, Derived: p.Derived, Redefines: append([]string(nil), p.Redefines...), Subsets: append([]string(nil), p.Subsets...), Opposite: p.Opposite, } @@ -85,9 +85,6 @@ func tableProperty(p Property) TableProperty { out.Range = local } } - if p.Many { - out.Upper = -1 - } if p.HasDefault { value := p.Default out.Default = &value diff --git a/internal/translate/rdf/ontology/table_json_test.go b/internal/translate/rdf/ontology/table_json_test.go index e6631250a7..30d2401059 100644 --- a/internal/translate/rdf/ontology/table_json_test.go +++ b/internal/translate/rdf/ontology/table_json_test.go @@ -40,3 +40,14 @@ func TestTableRecordSpellsTheProperties(t *testing.T) { t.Errorf("header = %+v, want the table's", table) } } + +// TestTableRecordKeepsAFiniteUpperBound pins that a finite bound above one is written as is. +func TestTableRecordKeepsAFiniteUpperBound(t *testing.T) { + finite := tableProperty(Property{Name: "x", DefiningClass: "Element", Many: true, Upper: 3}) + if finite.Upper != 3 { + t.Errorf("upper = %d, want 3", finite.Upper) + } + if single := tableProperty(Property{Name: "y", DefiningClass: "Element"}); single.Upper != 1 { + t.Errorf("single-valued upper = %d, want 1", single.Upper) + } +} diff --git a/tests/ontology/ontology_test.go b/tests/ontology/ontology_test.go index 67a5e02232..2c39b3dba4 100644 --- a/tests/ontology/ontology_test.go +++ b/tests/ontology/ontology_test.go @@ -142,6 +142,7 @@ func TestLookups(t *testing.T) { Kind: ontology.ObjectProperty, Range: rdf.SysML + "Feature", Many: true, + Upper: -1, Ordered: true, Derived: true, Subsets: []string{"Namespace::ownedMember"}, diff --git a/tools/gen/ontology/main.go b/tools/gen/ontology/main.go index 4e9738d9b0..d9b0be16c0 100644 --- a/tools/gen/ontology/main.go +++ b/tools/gen/ontology/main.go @@ -263,7 +263,7 @@ func parseEcore(path string) (ePackage, error) { // the package they live in does not compile until this has run. type property struct { name, definingClass, iri, kind, rangeIRI, opposite string - lower int + lower, upper int defaultValue string hasDefault, many, ordered, nonunique, derived bool redefines, subsets []string @@ -361,6 +361,10 @@ func newProperty(defining string, f eFeature, kinds map[string]string, features if err != nil { return property{}, err } + upper, err := upperBound(f.UpperBound) + if err != nil { + return property{}, err + } lower, err := lowerBound(f.LowerBound) if err != nil { return property{}, err @@ -371,6 +375,7 @@ func newProperty(defining string, f eFeature, kinds map[string]string, features iri: sysmlNS + defining + "_" + f.Name, lower: lower, many: many, + upper: upper, derived: f.Derived, } // Like ordered, unique only means something on a multi-valued feature. @@ -431,6 +436,20 @@ func isMany(upperBound string) (bool, error) { return n > 1 || n == -1, nil } +// upperBound is the ecore upperBound as the table carries it: -1 unbounded, else the bound; +// an absent or unspecified (-2) bound is 1. +func upperBound(bound string) (int, error) { + many, err := isMany(bound) + if err != nil { + return 0, err + } + n, _ := strconv.Atoi(bound) + if !many { + return 1, nil + } + return n, nil +} + // lowerBound is the ecore lowerBound, whose absence means 0; EcoreValidator rejects a negative one. func lowerBound(bound string) (int, error) { if bound == "" { @@ -488,6 +507,9 @@ func propertyLiterals(properties []property) string { fmt.Fprintf(&b, ", %s: true", flag.name) } } + if p.many { + fmt.Fprintf(&b, ", Upper: %d", p.upper) + } if len(p.redefines) > 0 { fmt.Fprintf(&b, ", Redefines: %s", stringSlice(p.redefines)) } From e36ff354896c98c9eeff3378af2ae210d0d681b4 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 28 Oct 2026 03:07:06 +0000 Subject: [PATCH 4/7] test(ontology): the generator's expectations carry Upper Co-Authored-By: Nicolas Rouquette --- tools/gen/ontology/run_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/gen/ontology/run_test.go b/tools/gen/ontology/run_test.go index 5869167a27..a7a0041795 100644 --- a/tools/gen/ontology/run_test.go +++ b/tools/gen/ontology/run_test.go @@ -82,12 +82,12 @@ const SourceCommit = "0123456789abcdef0123456789abcdef01234567" var properties = []Property{ {Name: "isLibraryElement", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_isLibraryElement", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#boolean", Default: "false", HasDefault: true}, {Name: "name", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_name", Kind: DatatypeProperty, Range: "http://www.w3.org/2001/XMLSchema#string", Default: "", HasDefault: true}, - {Name: "ownedRelationship", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_ownedRelationship", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Many: true, Ordered: true, Opposite: "Element::owningRelatedElement"}, + {Name: "ownedRelationship", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_ownedRelationship", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Lower: 1, Many: true, Ordered: true, Upper: -1, Opposite: "Element::owningRelatedElement"}, {Name: "owningRelatedElement", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_owningRelatedElement", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#Element", Opposite: "Element::ownedRelationship"}, {Name: "visibility", DefiningClass: "Element", IRI: "https://www.omg.org/spec/SysML#Element_visibility", Kind: DatatypeProperty, Range: "https://www.omg.org/spec/SysML#VisibilityKind", Lower: 1, Default: "public", HasDefault: true}, - {Name: "itemDefinition", DefiningClass: "ItemUsage", IRI: "https://www.omg.org/spec/SysML#ItemUsage_itemDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartDefinition", Many: true, Derived: true}, - {Name: "ownedPart", DefiningClass: "PartDefinition", IRI: "https://www.omg.org/spec/SysML#PartDefinition_ownedPart", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Redefines: []string{"Element::ownedRelationship", "ItemUsage::itemDefinition"}}, - {Name: "partDefinition", DefiningClass: "PartUsage", IRI: "https://www.omg.org/spec/SysML#PartUsage_partDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartDefinition", Many: true, Nonunique: true, Derived: true, Subsets: []string{"ItemUsage::itemDefinition"}}, + {Name: "itemDefinition", DefiningClass: "ItemUsage", IRI: "https://www.omg.org/spec/SysML#ItemUsage_itemDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartDefinition", Many: true, Derived: true, Upper: -1}, + {Name: "ownedPart", DefiningClass: "PartDefinition", IRI: "https://www.omg.org/spec/SysML#PartDefinition_ownedPart", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartUsage", Many: true, Ordered: true, Derived: true, Upper: -1, Redefines: []string{"Element::ownedRelationship", "ItemUsage::itemDefinition"}}, + {Name: "partDefinition", DefiningClass: "PartUsage", IRI: "https://www.omg.org/spec/SysML#PartUsage_partDefinition", Kind: ObjectProperty, Range: "https://www.omg.org/spec/SysML#PartDefinition", Many: true, Nonunique: true, Derived: true, Upper: -1, Subsets: []string{"ItemUsage::itemDefinition"}}, {Name: "weight", DefiningClass: "Usage", IRI: "https://www.omg.org/spec/SysML#Usage_weight", Kind: DatatypeProperty, Range: "http://www.w3.org/2002/07/owl#real"}, } @@ -196,7 +196,7 @@ func TestRunWritesABoundedManyProperty(t *testing.T) { if err != nil { t.Fatal(err) } - want := `IRI: "https://www.omg.org/spec/SysML#Usage_weight", Kind: DatatypeProperty, Range: "http://www.w3.org/2002/07/owl#real", Many: true, Ordered: true}` + want := `IRI: "https://www.omg.org/spec/SysML#Usage_weight", Kind: DatatypeProperty, Range: "http://www.w3.org/2002/07/owl#real", Many: true, Ordered: true, Upper: 2}` if !strings.Contains(string(generated), want) { t.Fatalf("upperBound 2 was not generated as Many:\n%s", generated) } From 5cc686330301658d5dd66e9906290eeb38abcdf7 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 28 Oct 2026 03:07:27 +0000 Subject: [PATCH 5/7] test(ontology): the drift probe removes Derived ahead of Upper Co-Authored-By: Nicolas Rouquette --- tools/gen/ontology/run_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/gen/ontology/run_test.go b/tools/gen/ontology/run_test.go index a7a0041795..02d8d48614 100644 --- a/tools/gen/ontology/run_test.go +++ b/tools/gen/ontology/run_test.go @@ -212,11 +212,11 @@ func TestCheckFailsOnlyOnDrift(t *testing.T) { if err := run(dir, out, true, testPin); err != nil { t.Fatalf("check of the current table: %v", err) } - writeFile(t, out, strings.Replace(wantTable, `, Derived: true, Subsets`, `, Subsets`, 1)) + writeFile(t, out, strings.Replace(wantTable, `, Derived: true, Upper: -1, Subsets`, `, Upper: -1, Subsets`, 1)) if err := run(dir, out, true, testPin); err == nil || !strings.Contains(err.Error(), "is stale") { t.Fatalf("check of a drifted table: error %v, want it stale", err) } - if got, _ := os.ReadFile(out); strings.Contains(string(got), `Derived: true, Subsets`) { + if got, _ := os.ReadFile(out); strings.Contains(string(got), `Derived: true, Upper: -1, Subsets`) { t.Fatal("check rewrote the table") } } From da2c21faf6f29ad2e10b22418f421c2b07ee8874 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 28 Oct 2026 03:14:26 +0000 Subject: [PATCH 6/7] fix(ontology): the table keeps an unspecified (-2) upper bound as ecore states it Co-Authored-By: Nicolas Rouquette --- docs/reference/cli.md | 2 +- internal/translate/rdf/ontology/ontology.go | 8 ++++---- internal/translate/rdf/ontology/table_json.go | 2 +- .../translate/rdf/ontology/table_json_test.go | 3 +++ tools/gen/ontology/main.go | 14 ++++++-------- tools/gen/ontology/run_test.go | 17 +++++++++++++++++ 6 files changed, 32 insertions(+), 14 deletions(-) diff --git a/docs/reference/cli.md b/docs/reference/cli.md index 76dcc6bad0..b6a8ac6a61 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -342,7 +342,7 @@ written in, so the verdicts are about that object: | `-check-timeout ` | With `-engine check`, `-engine smt` or `-engine all`: the wall clock the check's plan may run for, as `30s` or `2m`, and the time each of the `smt` engine's solver queries may take, in place of `OPENSYSML_SMT_TIMEOUT`; a search the clock stops is reported `incomplete: time` with the states and depth it reached, not as a verdict, and exits 2. Unbounded by default, the solver's queries at `OPENSYSML_SMT_TIMEOUT` | | `-engines` | Lists the analysis engines this build knows — name, kind, protocol, authority, the question kinds each answers and its status — and exits, without a model and without starting a process: the external engines of `OPENSYSML_ENGINES` and the tools of `OPENSYSML_TOOLS` are listed from their manifests alone, each followed by a line naming its file and command. See [Analysis engines](#analysis-engines) | | `-metaclass-graph` | Writes the SysML metaclass hierarchy of the pinned pilot metamodel as Turtle to stdout, or to `--output`, and exits without reading a model: one `rdfs:Class` per metaclass in the `sysml:` namespace, `rdfs:subClassOf` per declared general metaclass and `sysx:abstract true` on the abstract ones, the file committed as `internal/translate/rdf/ontology/sysml-metaclasses.ttl`. A store holding one `rdf:type` per element finds the specializations of a metaclass through `rdf:type/rdfs:subClassOf*` once it is loaded. See [Metaclass hierarchy graph](rdf-mapping.md#metaclass-hierarchy-graph) | -| `-metamodel-table` | Writes the pinned pilot metamodel's table as JSON to stdout, or to `--output`, and exits without reading a model: `metamodel` (the ecore namespace date), `pilotTag`, `pilotCommit`, then `classes` (name, `abstract`, `parents`), `properties` (name, `definingClass`, `kind` object or datatype, `range` as a metaclass or enumeration name or a datatype IRI, `lower`, `upper` with -1 unbounded, `ordered`, `nonunique`, `derived`, `default`, `redefines`, `subsets`, `opposite`) and `enumerations` (name, `literals`) — the same table (`internal/translate/rdf/ontology/table.go`, generated from the pilot's `SysML.ecore`) the API-JSON and RDF writers follow, for generators that live outside this module. See [Metaclass hierarchy graph](rdf-mapping.md#metaclass-hierarchy-graph) | +| `-metamodel-table` | Writes the pinned pilot metamodel's table as JSON to stdout, or to `--output`, and exits without reading a model: `metamodel` (the ecore namespace date), `pilotTag`, `pilotCommit`, then `classes` (name, `abstract`, `parents`), `properties` (name, `definingClass`, `kind` object or datatype, `range` as a metaclass or enumeration name or a datatype IRI, `lower`, `upper` as ecore states it, -1 unbounded and -2 unspecified, `ordered`, `nonunique`, `derived`, `default`, `redefines`, `subsets`, `opposite`) and `enumerations` (name, `literals`) — the same table (`internal/translate/rdf/ontology/table.go`, generated from the pilot's `SysML.ecore`) the API-JSON and RDF writers follow, for generators that live outside this module. See [Metaclass hierarchy graph](rdf-mapping.md#metaclass-hierarchy-graph) | | `-probe` | With `-engines`, also start each external engine once, check its `describe` against its manifest entry field by field and report the outcome as its status (`ready (…; describe agrees)`, or the first field that disagrees). See [External engines](external-engines.md) | | `-engine \|auto\|all` | The analysis engine every check of the invocation is put to. `auto` (the default) picks the engine of highest authority covering the question and advances past one that refuses or answers *not covered*, reaching an external engine only after every built-in one has; a name (`run`, `explore`, `check`, `smt`, `sweep`, `solve`, or an external engine's) puts the question to that engine alone, and its refusal is the answer; `all` puts it to every engine covering it, one after another in name order, and composes their answers. A name no engine is registered under is refused before anything runs. `-engine explore` explores as `-schedule explore` does; `-engine check` searches every schedule of each `-action` for a violation, a deadlock, a failure or a divergence ([Checking every schedule of an action](#checking-every-schedule-of-an-action-or-a-state-machine)); `-engine smt` decides a `-check-property` over every schedule and every value of the free inputs with an SMT solver ([Deciding a property over the inputs](#deciding-a-property-over-the-inputs)). See [Analysis engines](#analysis-engines) | | `-jobs ` | Runs of one check that may go concurrently — the linearizations of an exploration, the rows of a `-sweep`/`-samples`, the engines `-engine all` consults — each on a worker of its own over the shared model, and how many files of one load are parsed and validated at once (`-validate`, `-satisfy`, `-check` and every mode that loads files). `n` is a positive integer; the default is `OPENSYSML_JOBS`, else one per CPU, fewer where the memory available leaves less than 512 MiB per worker (Linux: `MemAvailable` and the cgroup's `memory.max`; one at least). The result of a check is the same at any count: the outcome table, the witness, the run count and the cut a violation makes are those of the runs taken one at a time in plan order. See [Running in parallel](#running-in-parallel) | diff --git a/internal/translate/rdf/ontology/ontology.go b/internal/translate/rdf/ontology/ontology.go index 0af0c9eb75..bf70d39560 100644 --- a/internal/translate/rdf/ontology/ontology.go +++ b/internal/translate/rdf/ontology/ontology.go @@ -53,8 +53,8 @@ type Property struct { // Many reports an upper multiplicity above 1 or unbounded (ecore upperBound // -1): the API JSON shape is an array. Many bool - // Upper is a Many property's ecore upperBound: -1 unbounded, else the finite - // bound; a single-valued property leaves it zero, which UpperBound reads as 1. + // Upper is the ecore upperBound as stated: -1 unbounded, -2 unspecified, else the + // bound; the default 1 is left zero in the table, which UpperBound reads as 1. Upper int // Ordered reports a Many property whose values are ordered (ecore // ordered, which defaults to true); a single-valued property is never Ordered. @@ -73,9 +73,9 @@ type Property struct { Opposite string } -// UpperBound is the upper multiplicity as ecore spells it: -1 unbounded, else the bound. +// UpperBound is the upper multiplicity as ecore spells it: -1 unbounded, -2 unspecified, else the bound. func (p Property) UpperBound() int { - if !p.Many { + if p.Upper == 0 { return 1 } return p.Upper diff --git a/internal/translate/rdf/ontology/table_json.go b/internal/translate/rdf/ontology/table_json.go index c538c32849..f2323f1bbd 100644 --- a/internal/translate/rdf/ontology/table_json.go +++ b/internal/translate/rdf/ontology/table_json.go @@ -29,7 +29,7 @@ type TableEnumeration struct { } // TableProperty gives each property its kind ("object"/"datatype"), its range as a metaclass -// or enumeration name (else the datatype IRI) and its ecore upper bound (-1 unbounded). +// or enumeration name (else the datatype IRI) and its ecore upper bound as stated (-1 unbounded, -2 unspecified). type TableProperty struct { Name string `json:"name"` DefiningClass string `json:"definingClass"` diff --git a/internal/translate/rdf/ontology/table_json_test.go b/internal/translate/rdf/ontology/table_json_test.go index 30d2401059..3965627223 100644 --- a/internal/translate/rdf/ontology/table_json_test.go +++ b/internal/translate/rdf/ontology/table_json_test.go @@ -50,4 +50,7 @@ func TestTableRecordKeepsAFiniteUpperBound(t *testing.T) { if single := tableProperty(Property{Name: "y", DefiningClass: "Element"}); single.Upper != 1 { t.Errorf("single-valued upper = %d, want 1", single.Upper) } + if unspecified := tableProperty(Property{Name: "z", DefiningClass: "Element", Upper: -2}); unspecified.Upper != -2 { + t.Errorf("unspecified upper = %d, want -2 as ecore states it", unspecified.Upper) + } } diff --git a/tools/gen/ontology/main.go b/tools/gen/ontology/main.go index d9b0be16c0..84a3586017 100644 --- a/tools/gen/ontology/main.go +++ b/tools/gen/ontology/main.go @@ -436,18 +436,16 @@ func isMany(upperBound string) (bool, error) { return n > 1 || n == -1, nil } -// upperBound is the ecore upperBound as the table carries it: -1 unbounded, else the bound; -// an absent or unspecified (-2) bound is 1. +// upperBound is the ecore upperBound as stated: -1 unbounded, -2 unspecified, else the +// bound; an absent one is ecore's default 1. func upperBound(bound string) (int, error) { - many, err := isMany(bound) - if err != nil { + if _, err := isMany(bound); err != nil { return 0, err } - n, _ := strconv.Atoi(bound) - if !many { + if bound == "" { return 1, nil } - return n, nil + return strconv.Atoi(bound) } // lowerBound is the ecore lowerBound, whose absence means 0; EcoreValidator rejects a negative one. @@ -507,7 +505,7 @@ func propertyLiterals(properties []property) string { fmt.Fprintf(&b, ", %s: true", flag.name) } } - if p.many { + if p.upper != 1 { fmt.Fprintf(&b, ", Upper: %d", p.upper) } if len(p.redefines) > 0 { diff --git a/tools/gen/ontology/run_test.go b/tools/gen/ontology/run_test.go index 02d8d48614..7fe345939a 100644 --- a/tools/gen/ontology/run_test.go +++ b/tools/gen/ontology/run_test.go @@ -202,6 +202,23 @@ func TestRunWritesABoundedManyProperty(t *testing.T) { } } +// TestRunKeepsAnUnspecifiedUpperBound pins that ecore's -2 (unspecified) is written as stated, single-valued. +func TestRunKeepsAnUnspecifiedUpperBound(t *testing.T) { + ecore := strings.Replace(sampleEcore, `name="weight" eType=`, `name="weight" upperBound="-2" eType=`, 1) + out := filepath.Join(t.TempDir(), "table.go") + if err := run(newMetamodel(t, ecore), out, false, testPin); err != nil { + t.Fatalf("run: %v", err) + } + generated, err := os.ReadFile(out) + if err != nil { + t.Fatal(err) + } + want := `IRI: "https://www.omg.org/spec/SysML#Usage_weight", Kind: DatatypeProperty, Range: "http://www.w3.org/2002/07/owl#real", Upper: -2}` + if !strings.Contains(string(generated), want) { + t.Fatalf("upperBound -2 was not kept as stated:\n%s", generated) + } +} + func TestCheckFailsOnlyOnDrift(t *testing.T) { dir := newMetamodel(t, sampleEcore) out := filepath.Join(t.TempDir(), "table.go") From 6de773408155819f64aaaef151891463ad6d03ae Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 28 Oct 2026 04:30:58 +0000 Subject: [PATCH 7/7] fix(mcp): classify sysml -metamodel-table in the catalog (unserved: no RPC answers the table) Co-Authored-By: Nicolas Rouquette --- internal/frontend/mcp/catalog/catalog.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/frontend/mcp/catalog/catalog.go b/internal/frontend/mcp/catalog/catalog.go index 62a4501cef..1a1f5d77fd 100644 --- a/internal/frontend/mcp/catalog/catalog.go +++ b/internal/frontend/mcp/catalog/catalog.go @@ -206,6 +206,7 @@ const ( // adding the field or RPC and the tool moves the flag into an entry. var Unserved = map[string]string{ "metaclass-graph": "no RPC answers the metaclass hierarchy vocabulary graph", + "metamodel-table": "no RPC answers the pinned metamodel's table as JSON", "portable": "MigrateRequest has no portable field", "render-all": "no RPC renders every declared view", "render-form": notDrawn,