A feature's type leaves out the types it gets through subsetting and redefinition, and reference subsetting (`::>`) is not reported at all
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 48/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
调研方向
Start by reading type_info and specialization construction in the Go service, then compare those results with _with_inherited_facts in client/python/opensysml/generate.py. Reproduce with the supplied SysML example and check A20-037..039 and A40-007, A40-022, A40-034, A40-037, A40-040, and A40-043. Done means the API reports derived types and the reference-subsetting relationship for these cases.
由索引模型根据 Issue 内容生成。
描述
This issue was written with AI help. The model and the reproduction were run against the version below.
What happened
A Symbol's type_info gives only the feature's own : T typing. A feature that gets its type by subsetting, reference subsetting or redefinition reports no type. A feature that has its own typing and also subsets another feature reports only its own type. Reference subsetting (::>) is not in specializations either, so nothing in the Symbol says where pRef gets its type.
package P {
part def T;
part def V;
part def Owner {
part q : T;
part pSub :> q; // subsetting
ref part pRef ::> q; // reference subsetting
part pBoth : V :> q; // typing and subsetting
attribute a : ScalarValues::Real;
}
part def SubOwner :> Owner {
part :>> q; // redefinition
}
part tuned : Owner {
attribute :>> a = 3.5; // redefinition with a value
}
}
import opensysml
m = opensysml.loads(SRC) # m.ok is True, no diagnostics
for qn in ["P::Owner::q", "P::Owner::pSub", "P::Owner::pRef",
"P::Owner::pBoth", "P::SubOwner::q", "P::tuned::a"]:
s = m.get(qn)
print(qn, repr(s.type_facts.resolved_id), repr(s.type_facts.primitive),
[(sp.kind, sp.target_id) for sp in s.specializations])
P::Owner::q 'P::T' '' [('typing', 'P::T')]
P::Owner::pSub '' '' [('subsets', 'P::Owner::q')]
P::Owner::pRef '' '' []
P::Owner::pBoth 'P::V' '' [('typing', 'P::V'), ('subsets', 'P::Owner::q')]
P::SubOwner::q '' '' [('redefines', 'P::Owner::q')]
P::tuned::a '' 'Real' [('redefines', 'P::Owner::a')]
The last line is the most common case in practice: attribute :>> mass = 1500; in a usage. The service does follow the redefinition for primitive ('Real') but leaves resolved_id empty, so the type is known but not reported.
The Python client's own code generator already works around this. _with_inherited_facts in client/python/opensysml/generate.py walks subsets/redefines to fill in a feature's type. A user reading Symbols has no such fallback, and the workaround cannot help pRef, whose reference subsetting is not reported at all.
Expected
-
type_info(or a new field) reports the feature's types as KerML derives them.Feature::typecovers the feature's own typings and the types of every feature it subsets. Redefinition and reference subsetting are kinds of subsetting, so their targets count too:feature expected types pSub :> qTpRef ::> qTpBoth : V :> qV,TSubOwner::q :>> qTtuned::a :>> a = 3.5ScalarValues::RealpBothhas two types, andTypeInfo.resolved_idholds one. A list is probably needed. Alternatively, a separate field could hold the derived types and leavetype_infoas the declared typing. -
pRef ::> qlists a specialization forq, with its own kind (the spec metaclass isReferenceSubsetting). The comment onSpecialization.kindinapi/proto/sysml.protolists onlyspecializes,subsets,redefinesandtyping. Reporting::>assubsetswould also do, since a reference subsetting is a subsetting. Losing the relationship entirely is the bug.
For comparison, the SysML v2 Pilot Implementation (0.64.0-SNAPSHOT, commit 378a8700c) and sysml-toolkit (v0.11.3) give the types and specializations above for every case.
Version
OpenSysML develop at 1a8e4927dc (2026-11-05), built locally: sysml-grpc nightly-153-g1a8e4927dc, Python client from client/python. The Go API (client/opensysml) gives the same results.
Related
#1961 is about features not being listed through a typing usage or a specialization. This issue is about features read directly in their owner, which are found but report the wrong type.
Found by
The test suite at https://github.com/hideo67/sysmlv2-tests, matrices A20 (attribute usages) and A40 (feature typing, subsetting and redefinition). Models: test-suite/data/models/A20.sysml and A40.sysml. Failing cases:
- A20-037..039: the type of
:>> plain = 3.5,:>> boundand:>> dflt = 5.5in a usage. - A40-007, A40-022: the specializations and subsetted features of
pRef ::> q. - A40-034, A40-037, A40-040, A40-043: the types of
pSub,pRef,pBothandSubOwner::q.
The other A40 failures (read through owner, subOwner, subSub) are #1961.
- 主要语言
- Go
- 星标
- 56
- 派生
- 17
- 平均合并
- 12 小时 31 分钟
- 30 天内合并 PR
- 909
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Open-MBEE/OpenSysML 的其他 Issue
-
dependencies
难度 2/5 1-3 小时 新手友好度 65/100
Open-MBEE/OpenSysML#1951 · 3 条评论 · 1 个 reaction ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 25/100
维护者通常 1 天内回复
-
bug enhancement spec compliance
难度 4/5 3-5 天 新手友好度 48/100
Open-MBEE/OpenSysML#2009 · 3 条评论 ·
维护者通常 1 天内回复
-
bug spec compliance
难度 4/5 3-5 天 新手友好度 52/100
Open-MBEE/OpenSysML#2008 · 1 条评论 ·
维护者通常 1 天内回复
-
bug
难度 3/5 1-2 天 新手友好度 65/100
Open-MBEE/OpenSysML#2006 · 1 条评论 ·
维护者通常 1 天内回复
查看 Open-MBEE/OpenSysML 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
multica-ai/multica#10081 ·
维护者通常 1 天内回复
-
csp-probe needs efqdn to probe CSP domains可能已有人在做 @unknownhackerworld 于 1 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
projectdiscovery/httpx#2725 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
stefanpejcic/OpenPanel#1321 ·
维护者通常 1 天内回复
-
bug triage/pending
难度 2/5 1-3 小时 新手友好度 65/100
维护者通常 1 天内回复